Wie konvertiere ich HTML in endlose einseitige PDFs über wkhtmltopdf?

7224
kenorb

Derzeit beim Konvertieren der PDF-Datei von einer angegebenen URL wie:

wkhtmltopdf http://superuser.com/ superuser.pdf 

Dort befinden sich mehrere A4-Seiten (manchmal werden Bilder in der Mitte der Seite geschnitten).

Meine Frage ist:

Wie konvertiere ich eine HTML-Seite in das PDF-Format, wo die Höhe endlos ist?

Meine Präferenz ist, dass Sie immer noch ein bearbeitbares / durchsuchbares Dokument haben sollten, nicht nur ein statisches Bild.


Was ich schon probiert habe:

7

3 Antworten auf die Frage

2
harrymc

Das Handbuch wkhtmltopdf 0.9.6 dokumentiert diesen Parameter:

 --page-height <unitreal> Page height (default unit millimeter) 

Das Definieren einer enorm langen Seite kann daher erfolgen über:

--page-height 10000cm --page-height 100m 

beide definieren eine Seite mit einer Höhe von 100 Metern (ich erwähne beide, falls Ihr wkhtmltopdf dies nicht unterstützt m).

wkhtmltopdfWenn ich es nicht benutze, weiß ich nicht, ob es eine Obergrenze für die Seitenhöhe gibt, aber Sie können das empirisch feststellen.

Darüber hinaus können Sie versuchen, hinzuzufügen --disable-smart-width(Breite ist kein Fehler) und versuchen Sie im Moment das weniger ehrgeizige --page-height 100cm.

In dieser Manpage gibt es einen Kommentar, disable-smart-widthdass es nur mit gepatchtem QT verfügbar ist.

Es gibt noch einen weiteren Kommentar:

Auf der Website wkhtmltopdf können Sie eine statische Version von wkhtmltopdf unter http://code.google.com/p/wkhtmltopdf/downloads/list herunterladen . Diese statische Binärdatei funktioniert auf den meisten Systemen und enthält ein gepatchtes QT.

Das Projekt wurde an einen anderen Ort verschoben, so dass Sie dort nach einer solchen Version suchen oder in den Foren nachfragen können.

Getestet: `wkhtmltopdf http://superuser.com/ superuser.pdf --page-height 100m`, scheint aber nicht wie erwartet zu funktionieren, da ich immer noch 3 separate Seiten sehe. Getestet mit v0.12.2.1. kenorb vor 9 Jahren 0
Versuchen Sie, "--disable-smart-width" hinzuzufügen (width ist kein Fehler), und versuchen Sie im Moment die weniger ehrgeizige "--page-height 100cm". harrymc vor 9 Jahren 0
Ich habe es schon versucht, aber es heißt: "Unbekanntes langes Argument - disable-smart-width". kenorb vor 9 Jahren 0
Dies bezieht sich dann auf eine andere Version von wkhtmltopdf. Mein letzter Vorschlag ist, die [Beta-Version] (http://wkhtmltopdf.org/downloads.html) zu testen und zu prüfen, ob ein relevanter Aufrufparameter hinzugefügt wurde (und insbesondere das Deaktivieren von "smart"). Wenn nicht, fragen Sie in [wkhtmltopdf Spport] (http://wkhtmltopdf.org/support.html). harrymc vor 9 Jahren 0
Die Option wurde mit der neuesten dev-Version aus den Quellen getestet (`0.12.3-dev-8f03630`). Die Option funktioniert jedoch immer noch nicht unter OSX (sie ist unbekannt). Die einzige Referenz für diese Option ist in [`imagearguments.cc`] (https://github.com/wkhtmltopdf/wkhtmltopdf/blob/7f74d893635d275f9450bf5f12c454a9c27672bd/src/image/imagearguments.cc). Vielleicht funktioniert es nur für die Bilder (nicht PDF)? kenorb vor 9 Jahren 0
1
Wayne Walker

Sie sollten es wie folgt tun:

$ wkhtmltoimage http://superuser.com/ superuser.png loaded the Generic plugin  Loading page (1/2) Rendering (2/2)  Warning: Received createRequest signal on a disposed ResourceObject's NetworkAccessManager. This might be an indication of an iframe taking too long to load. Done  $ geo=$(file superuser.png | awk '' | sed -e 's/,//') $ convert superuser.png -page $geo superuser.pdf 

Die Konvertierung wird vom ImageMagick-Paket aus durchgeführt. Der Nachteil der obigen Methode besteht darin, dass die PDF-Ausgabe ein statisches Bild hätte.

1
Hastur

Wenn Sie den Code erneut betrachten, scheint es, als könnten Sie immer noch keine unendliche Rolle auswählen.

Sie können also einfach den Befehl imagemagickmogrify mit der Option -appendfür die heruntergeladene Datei verwenden (oder sogar + anhängen, wenn Sie sie horizontal anhängen möchten).

wkhtmltopdf http://superuser.com/ superuser.pdf mogrify -append superuser.pdf 

von man mogrify

-append
eine Bildsequenz von oben nach unten anhängen (mit + von links nach rechts anhängen)

Wenn Sie eine neue Datei erstellen möchten, können Sie dieselbe Suite verwenden convert.

convert -density 200 superuser.pdf -append superuser.vertical.pdf 
Ich habe es versucht, aber das Ausgabe-PDF enthält ein statisches Bild mit niedriger Qualität. Ich habe auch versucht, Folgendes hinzuzufügen: `-units PixelsPerInch -density 300` oder` -units PixelsPerInch -resample 300`, aber das Ausgabe-PDF ist immer noch ein Bild mit niedriger Qualität. kenorb vor 9 Jahren 0
Der Befehl 'convert' ist wirklich sinnvoll für die Position der Parameter. Sie können `convert -density 300 supersuser.pdf -append su.vertical.pdf` ... oder noch mehr Dichte-Werte und -Parameter ausprobieren. (Gib mir Bescheid) Hastur vor 9 Jahren 0