2015-12-28 6 views
9


wkhtmltopdf erzeugt aus PDF-Format auf Ubuntu ohne X Server

Ist es möglich, Format PDF zu setzen in wkhtmltopdf zu generieren?
Von meinem PC wkhtmltopdf erzeugt Format "PDF-1.4"

enter image description here

Aber fernen Ubuntu 14.04 Server, pdf mit einem 'virtuellen' X-Server mit xvfb Format geben PDF-0 generiert:

enter image description here


Das einzige Problem ist das Öffnen der generierten PDF-Datei in Chrome :)
Chrome kann nicht geöffnet werden PDF-0.

Dank

+0

wkhtmltopdf setzt das Erstellerfeld nur korrekt seit Version 0.12.1 (speziell seit [this] (https://github.com/wkhtmltopdf/wkhtmltopdf/commit/a762a849a64c2bd4e697d7ac37e7be5be59300bc6)). Ich vermute also, dass Sie eine ältere Version auf Ihrem Remote-Server ausführen müssen. Irgendeine Chance, die du aktualisieren kannst? - Trotzdem glaube ich, dass die Ursache in [QPrinter] (http://doc.qt.io/qt-5/qprinter.html) liegt, daher könnte Ihr Problem auch von den verschiedenen QT-Versionen herrühren, die Sie ausführen. Können Sie die erste Zeile der PDF-Datei so posten, wie sie in einem Texteditor angezeigt wird?Es codiert die PDF-Version. – morido

+0

Die Versionen, die auf meinem lokalen Computer und auf dem Server ausgeführt werden, sind identisch. 0.12.2.4 genau – DAKZH

+0

Das führt uns zu der Schlussfolgerung, dass Ihr Problem wahrscheinlich innerhalb von QT (oder sogar irgendwo in der Kette) verwurzelt ist. Können Sie Ihre QT-Bibliotheken auf dem Server aktualisieren und es erneut versuchen? – morido

Antwort

2

Es ist wie die resultierende PDF aus xvfb sein 100% möglicherweise nicht korrekt aussieht. Es gibt einige Probleme mit den Metadaten. Es fehlt zum Beispiel der Schöpfer. Auch PDF-0 scheint keine gültige PDF-Version zu sein. Möglicherweise gibt es andere Probleme mit dem Dokument. Dies ist ein möglicher Grund, warum die generierte Datei nicht in Chrome angezeigt wird.

Eine gute Möglichkeit, das Dokument zu untersuchen, wäre das Preflight-Tool von Acrobat. Es wird das Dokument auf mögliche Probleme untersuchen, und das könnte einen Hinweis darauf geben, was vor sich geht. Das Tool befindet sich unter "Druckproduktion" in Acrobat. Das auszuführende Profil heißt "PDF-Syntaxfehler melden". Ich bin mir sicher, dass es andere Tools gibt, die auch erklären können, was mit dem Dokument nicht stimmt.

Dieser Abschnitt sollte eine Lösung für das Problem bieten. Wie in den folgenden Kommentaren erwähnt, sollte das Aktualisieren der QT-Version von 4.8.6 auf etwas Neueres das Problem beheben. Das funktionierende Setup scheint 5.3.2 zu laufen, während das nicht funktionierende Setup unter QT 4.8.6 läuft.

+0

Danke. Ja, es ist definitiv ein Problem mit xvfb PDF zu erzeugen. Ich habe tatsächlich mit Acrobat PDF untersucht und das Ergebnis Bilder sind Frage. Könnten Sie helfen, den Grund zu finden, warum xvfb falsche PDF erzeugt, während in meinem lokalen Computer PDF-Generierung gut ist. – DAKZH

+0

Ich kann es versuchen. Kannst du mir bitte etwas mehr über dein Setup erzählen oder dein OP damit aktualisieren? Auf Ihrem lokalen Computer führen Sie wkhtmltopdf aus, um PDF-Dateien zu generieren. Was läuft in deiner Nähe? Dann verwenden Sie auf einem Remote-Rechner, auf dem Ubuntu läuft, wkhtmltopdf, um PDF-Dateien zu erzeugen. Sie verwenden xvfb, um sich remote mit ihm zu verbinden. Ist diese Annahme richtig? Haben Sie die Möglichkeit, sich lokal beim Server anzumelden, nur um xvfb aus dem Bild zu entfernen? Bitte korrigieren Sie mich, wenn meine Annahmen zu Ihrer Einrichtung falsch sind. –

+0

Ich habe [diese Konfiguration] (https://github.com/JazzCore/python-pdfkit/wiki/Using-wkhtmltopdf-without-X-server) verwendet, um wkhtmltopdf ohne X Server auf dem Server-PC auszuführen. – DAKZH

0

Bounty Antwort:

Offenbar QT 4 und QT 5 verhalten sich anders, wenn in eine PDF-Druck. Somit kann Ihr Problem gelöst werden, indem Sie die QT-Bibliotheken auf Ihrem Server aktualisieren.

Sie können prüfen, einen Fehler gegen wkhtmltopdf da Ihr beschriebene Verhalten Einreichung offensichtlich macht es für unvereinbar mit QT 4.

Siehe auch Original-Kommentar here.