Drucken zum Speichern als PDF über eine Befehlszeile mit Chrome oder Chromium

43

Kann ich mit Chrome oder Chromium über eine Befehlszeile an das Ziel "Als PDF speichern" drucken? Ich möchte in der Lage sein, HTML-Dateien mit der in Chrome integrierten Funktionalität automatisch in PDF umzuwandeln.

ipavlic
quelle
@golimar Es ist kein virtueller Drucker. Chrome verfügt über eine integrierte Option zum Exportieren in PDF-Dateien.
Ipavlic
1
Ich sehe keine eingebauten Chrome-Schalter zum Speichern als PDF.
Karan
@ Karan Wenn Sie dorthin gehen, Printsollte ein Save to PDFZiel für Sie verfügbar sein.
Dies wird
2
Vielleicht war mein vorheriger Kommentar nicht klar. Sie wollten wissen, wie dies über die Befehlszeile geschehen soll, und ich wollte sagen, dass Chrome / Chromium keine Befehlszeilenschalter / -parameter zu diesem Zweck zu haben scheint, obwohl ich weiß, dass Sie dies über die Benutzeroberfläche tun können. Sie müssen eine Möglichkeit finden, die Option Speichern unter auszulösen, indem Sie möglicherweise Mausklicks oder Tastatureingaben senden.
Karan

Antworten:

11

Verwenden Sie die HTML-Rendering-Engine nicht, um einen kompletten Webbrowser aufzurufen, sondern nur, um die Arbeit zu erledigen. Verwenden Sie wkhtmltopdf , um die Konvertierung durchzuführen.

wktohtml

Sie können auch eine vorhandene Website in PDF konvertieren

$ wkhtmltopdf http://google.com google.pdf

Hinweis: Technisch gesehen ist das Rendering-Modul von Google Chrome Blink, eine Abzweigung von Webkit. Zwischen Blink und Webkit gibt es> 90% des gemeinsamen Codes, daher sollten Sie ein ähnliches Ergebnis erzielen.

Hanxue
quelle
Beachten Sie, dass Sie dies versucht haben und dass subtile Dinge fehlen oder kaputt gehen: Die Quelle von wkhtmltopdf enthält QtWebkit-Patches, die wichtige Funktionen wie anklickbare Links ermöglichen. In Ihrem Distributionspaket fehlen solche Funktionen wahrscheinlich, wenn es das übliche qtwebkit-Paket Ihrer Distribution als Abhängigkeit auflistet. Das Installieren von wkhtmltopdf von der Quelle dauert 3,7 GB und einige Stunden.
Anko
34
-1 Diese Antwort entspricht nicht der Frage, wkhtmltox ist ein großartiges Tool, funktioniert aber beim Exportieren in PDF nicht so gut wie Chrome oder Firefox.
Carlos C Soto
@Anko Bin mir nicht sicher, ob ich es verstanden habe. Was kann ich erwarten, wenn ich wkhtmltopdf aus dem Quellcode erzeuge?
VH-NZZ
2
kann es auch nicht empfehlen, wenn Sie ausgefeiltes CSS haben wkhtmltopdf ist nutzlos.
MushyPeas
2
SVGs werden nicht gerendert.
Marco Sulla
38

Chrome hat das Headless- Programm gestartet .

Damit können wir ein PDF erstellen. zB für Windows navigieren Sie in Ihrer Kommandozeile zu

C:\Users\{{your_username}}\AppData\Local\Google\Chrome SxS\Application>

Dann drücke den Befehl:

chrome --headless --print-to-pdf="d:\\{{path and file name}}.pdf" https://google.com
Vikas
quelle
Nur ein Hinweis: Wenn auf Windows bereits eine Instanz von Chrome ausgeführt wird, funktioniert der Befehl nicht. Beenden Sie zuerst alle Chrome-Prozesse, dann funktioniert es. Möglicherweise gibt es eine Flagge, um diese Unannehmlichkeiten zu umgehen.
John Leidegren
1
@JohnLeidegren (mindestens) ab Chrome für Windows, Version 66.0.3359.139 (offizielles Build) (64-Bit), funktioniert dies, ohne dass Chrome-Prozesse beendet werden.
Naitsirhc
2
Beachten Sie, dass Sie damit --user-data-dir="C:\Users\...\AppData\Local\Google\Chrome\User Datadas Chrome-Profil Ihres Nutzers ausführen können. Dies ist beispielsweise nützlich, um Inhalte von einer Website zu exportieren, für die Benutzer angemeldet sein müssen, da Sitzungscookies verfügbar sind.
Naitsirhc
@naitsirhc FYI, ich habe Puppenspieler als eine wirklich gute Alternative zu den Kommandozeilen-Dingen gefunden, wenn Sie versuchen, etwas Aufwändigeres zu tun. Es hat eine schöne API für Remote-Chrom, um verschiedene Aufgaben zu erledigen, und verwaltet auch Versionen für Sie. Sehr schön.
John Leidegren
SVGs werden falsch gerendert
Marco Sulla
17

Sie müssen Google Chrome / Chromium 59 oder eine neuere Version verwenden & Es ist nur für Benutzer von MAC OS und Linux verfügbar.

* Windows-Benutzer müssen noch einige Zeit bis zur Version 60 warten *

Befehl :

$ google-chrome --headless --disable-gpu --print-to-pdf=file1.pdf http://www.example.com/

$ chromium-browser --headless --disable-gpu --print-to-pdf=file1.pdf http://www.example.com/

Referenz: https://developers.google.com/web/updates/2017/04/headless-chrome

BEARBEITEN: Google Chrome / Chromium 60 wurde für Windows-Benutzer eingeführt.

Befehlsverwendung in CMD:

C:\Program Files\Google\Chrome\Application> chrome.exe --headless --disable-gpu --print-to-pdf=file1.pdf http://www.example.com/

Ihre PDF-Datei mit dem Namen file1.pdf wird in gespeichert

"C: \ Programme oder (x86) \ Google \ Chrome \ Application \ 60.0.3112.113 (Chrome-Version) \ file1.pdf"

Rahul_Dange
quelle
--disable-gpusollte in den neuesten Versionen nicht mehr notwendig sein.
Ring Ø
dies erzeugt eine VIEL bessere / konsistentere Ausgabe als wkhtmltopdf oder weasyprint
ierdna
4

https://github.com/fraserxu/electron-pdf wurde genau für diesen Zweck entwickelt.

Die CLI sieht folgendermaßen aus: $ electron-pdf http://fraserxu.me ~/Desktop/fraserxu.pdf

Nate Good
quelle
Ich habe es installiert, es hängt auf unbestimmte Zeit ohne Ausgabe. Ich habe es versucht, electron-pdf http://fraserxu.me test.pdfwie in der Hilfe vorgeschlagen, aber ich habe es auch auf gooogle.com versucht
Marco Sulla,
0

Batch-Konvertierung lokaler HTML-Dateien in PDF erfolgreich durchgeführt.

Navigieren Sie zu einem Ordner mit einer Reihe von HTML-Dateien, die Sie konvertieren möchten ...

for %f in (*.html) do (
start /wait chrome --headless --disable-gpu --print-to-pdf="C:/[DESTINATION FOLDER PATH]%f.pdf" "C:/[SOURCE HTML FILE FOLDER PATH -- ALSO CURRENT FOLDER]%f"
)

Hinweis - Es muss ein Schrägstrich verwendet werden, um das Negieren von% f im Dateipfad zu vermeiden.

Zac
quelle