Kompilieren Sie pdftk für Heroku. Sie müssen PDF in einzelne Seitendateien aufteilen

8

Also verwenden wir heroku, um unsere Rails-Anwendung zu hosten. Wir sind auf den Zedernholzstapel umgezogen. Auf diesem Stapel ist die pdftk-Bibliothek nicht installiert. Ich kontaktierte Support und wurde aufgefordert, es für amd64 ubuntu zu kompilieren und es in meine Anwendung aufzunehmen.

Das hat sich als schwieriger erwiesen, als ich dachte. Anfangs habe ich das Paket für ubuntu heruntergeladen ( Ссылка ), es extrahiert und die Binärdatei sowie die gemeinsam genutzten Bibliotheken hinzugefügt. Ich bekomme merkwürdige Fehler wie:

%Vor%

Ich gehe davon aus, dass einige der Abhängigkeiten nicht installiert sind?

Hier sind meine Fragen:

  1. Gibt es eine einfachere Möglichkeit, eine Bibliothek statisch zu kompilieren? Oder muss ich über seine Binärdatei sowie alle seine Bibliotheken und Abhängigkeiten bewegen?
  2. Ich versuche nur, eine mehrseitige PDF-Datei in Ruby in einzelne Dateien aufzuteilen. Gibt es eine Möglichkeit, dies ohne PDFTK zu tun? Oder stehe ich fest mit dem Versuch, PDFTK statisch zu kompilieren?

Danke für die Hilfe, ich weiß, das ist kein einfaches Problem, aber würde mich sehr freuen. Ich habe fast 6 Stunden damit verschwendet, dieses verdammte Ding zum Laufen zu bringen.

    
Binary Logic 20.08.2011, 01:02
quelle

5 Antworten

4

Leider entfernt Heroku Magie, um Flexibilität zu schaffen. Als Folge davon fühlt es sich immer mehr an wie die Tage, an denen ich meine eigenen Server verwaltet und gewartet habe. Es gibt keine einfache Lösung. Mein "Affe-Patch" soll die Datei an einen Server senden, mit dem ich PDFTK installieren, die Datei verarbeiten und zurücksenden kann. Nicht großartig, aber es funktioniert. Wenn man damit fertig wird, vereitelt es den Zweck, Heroku zu benutzen.

    
Binary Logic 21.08.2011, 19:39
quelle
3

Die einfache Lösung besteht darin, die eine Abhängigkeit für pdftk hinzuzufügen, die nicht auf heroku gefunden wird.

%Vor%

Ich habe pdftk und libgcj.so.10 in das Verzeichnis / bin meiner App gestellt. Sie müssen dann heroku nur sagen, dass Sie beim Laden von Bibliotheken auf das Verzeichnis / bin schauen sollen.

Sie können

eingeben %Vor%

Um zu sehen, wofür Ihr aktueller LD_LIBRARY_PATH festgelegt ist, und fügen Sie / app / bin (oder was auch immer Sie zum Speichern von libgcj.so.10 gewählt haben) hinzu.

%Vor%

Der Nachteil ist, dass meine Slug-Größe von 15,9 MB auf 27,5 MB

gestiegen ist     
Dan G 14.09.2012 23:59
quelle
2

Wir haben das gleiche Problem, die Lösung, die wir gefunden haben, war, stattdessen Stapler zu verwenden Ссылка , es ist ein Python-Dienstprogramm und erfordert nur ein zusätzliches Modul (pyPdf) auf Heroku installiert werden.

Ich war an diesem Blogeintrag interessiert: Ссылка

Hier sind die Schritte, die ich zur Installation von pyPdf befolgt habe:

Zugriff auf die heroku bash-Konsole

%Vor%

Installation der neuesten Version von pyPdf

%Vor%

Damit werden alle notwendigen Dateien unter eine .local-Datei im Stammverzeichnis der App gestellt. Ich habe es gerade heruntergeladen und es unserem Git Repo sowie dem Hefter-Dienstprogramm hinzugefügt. Schließlich habe ich meinen Code aktualisiert, um Hefter anstelle von pdftk, et voilà zu verwenden! PDFs von Heroku erneut teilen.

Ein anderer Weg, wahrscheinlich sauberer, wäre es, ihn in ein Juwel ( Ссылка ) zu kapseln.

    
Bastien 22.12.2011 15:24
quelle
1

Ich lese eine ähnliche Frage zu SO und Ich fand diesen Ansatz von Ryan Daigle, der für mich als funktionierte Nun, anstatt lokale Binärdateien zu erstellen, die schwer mit Herokus Servern zu vergleichen sind, verwenden Sie die entfernte Umgebung, um die erforderlichen Abhängigkeiten zu kompilieren und zu erstellen. Dies wird mithilfe des Vulcan-Edelsteins erreicht, das von Heroku bereitgestellt wird.

Ryan's Artikel "Building Dependency Binaries für Heroku-Anwendungen "

Ein anderer Ansatz von Jon Magic (von mir nicht getestet) besteht darin, die Abhängigkeit direkt über Herokus bash , z. direkt auf dem Server: "Kompilieren ausführbarer Dateien auf Heroku" .

Nebenbei bemerkt, beide Ansätze werden zu Binaries führen, die brechen werden, wenn sich die zugrunde liegende Umgebung von Heroku genug ändert.

    
Arman H 26.05.2013 08:25
quelle
0

Probieren Sie Garnelen .

    
mcandre 20.08.2011 01:15
quelle

Tags und Links