Einfügen einer externen PDF in ein von Prawn generiertes Dokument

8

Wie kann ich eine bestehende PDF-Datei in ein von Prawn generiertes Dokument einfügen? Ich erzeuge ein PDF für eine Rechnung (als Ansicht), und diese Rechnung kann viele Anhänge haben (PNG, JPG oder PDF). Wie kann ich externe PDF-Anhänge in mein generiertes Dokument einfügen / einbetten / einbinden? Ich habe das Handbuch gelesen, über den Quellcode geschaut und online gesucht, aber bis jetzt kein Glück.

Der nächste Hinweis, den ich gefunden habe, ist die Verwendung von ImageMagick oder etwas Ähnlichem, um das PDF in ein anderes Format zu konvertieren, aber da ich das Dokument nicht in der Größe anpassen / manipulieren muss, scheint das verschwenderisch. Der alte Weg, es zu tun, scheint durch Vorlagen zu sein, aber ich verstehe, dass der Code für Templating instabil ist.

Weiß jemand, wie man PDF-Seiten in eine Prawn-PDF-Datei einfügt? Wenn Prawn das nicht tun würde, wüssten Sie von irgendwelchen zusätzlichen Edelsteinen, die das tun werden? Wenn mich jemand auf etwas wie Garnelen-Templates hinweisen kann, aber zuverlässiger, wäre das großartig.

Bearbeiten: Ich verwende prawnto und prawn zum Rendern von PDF-Ansichten in Rails 4.2.0 mit Ruby 2.2.0.

Strategien, die ich gefunden habe, aber die nicht anwendbar / zu unordentlich scheinen:

  • Erstellen Sie eine JPG-Vorschau eines PDFs beim Hochladen, fügen Sie diese in das generierte Dokument ein (Nachteile: keine Textauswahl / Suche, teuer). Dies ist derzeit meine Lieblingsoption, aber ich mag sie nicht.

  • Prawn-Templates (Nachteil: instabile, nicht gepflegte Codebase; dies ist eine geschäftskritische Anwendung)

  • Fügen Sie PDFs über ein Schmuckstück wie "combine-pdf" zusammen - ich kann nicht herausfinden, wie dies zum Rendern einer Ansicht mit externen PDFs an bestimmten Stellen funktioniert (das generierte PDF ist eine Sammlung von Rechnungen) und ich brauche sie, um der Rechnung zu folgen, an die sie angehängt sind.

Lee 22.03.2015, 19:43
quelle

1 Antwort

10

Sie haben recht mit dem Mangel an vorhandener Dokumentation dafür - ich habe nur dieses Problem von 2010 gefunden verwendet die veralteten Methoden, die Sie beschreiben. Ich fand auch diese SO-Antwort , die jetzt nicht mehr funktioniert, seit Prawn die Unterstützung für Vorlagen eingestellt hat.

Die gute Nachricht ist jedoch, dass es mit Ruby eine Möglichkeit gibt, das zu tun, was Sie wollen! Was Sie tun werden, ist Zusammenführen die PDFs zusammen, nicht "Einfügen" PDFs in die ursprüngliche PDF.

Ich würde diese Bibliothek combinate_pdf empfehlen, um dies zu tun. Die Dokumentation ist gut, so zu tun, was Sie wollen, wäre so einfach wie:

%Vor%

Bearbeiten

Als Antwort auf Ihre Fragen:

  

Ich benutze Prawn, um eine PDF-Ansicht in Rails zu rendern, was bedeutet, dass ich diese Art der Nachbearbeitung nicht glaube

Sie tun! Wenn Sie sich die Dokumentation für combine_pdf ansehen, werden Sie feststellen, dass das Laden aus dem Speicher der schnellste Weg ist benutze den Edelstein - die Dokumentation sagt sogar explizit, dass Prawn als Eingabe verwendet werden kann.

  

Ich hefte die PDFs nicht einfach an das Ende: Ein Rechnungszusatz muss direkt den generierten Seiten für eine Rechnung folgen

Die combine_pdf gem dient nicht nur zum Hinzufügen von Seiten am Ende . Wie die Dokumentation zeigt, können Sie durch ein PDF-Dokument blättern, wenn Sie beispielsweise folgende Seiten hinzufügen möchten:

%Vor%     
element119 24.03.2015, 23:04
quelle