Come stampare per salvare come PDF da una riga di comando con Chrome o Chromium


43

Posso stampare sulla destinazione "Salva come PDF" da una riga di comando con Chrome o Chromium? Mi piacerebbe essere in grado di convertire automaticamente i file HTML in PDF con la funzionalità integrata di Chrome.


@golimar Non è una stampante virtuale. Chrome ha un'opzione integrata per esportare in pdf.
ipavlic

1
Non vedo alcun interruttore Chrome incorporato per il salvataggio in formato PDF.
Karan,

@Karan Quando vai a Printci dovrebbe essere una Save to PDFdestinazione disponibile per te da scegliere. È anche chiaramente indicato sulla pagina di supporto di Google: support.google.com/chrome/bin/…
ipavlic,

2
Forse il mio commento precedente non era chiaro. Volevi sapere come farlo dalla riga di comando, e quello che volevo dire era che Chrome / Chromium sembra non avere opzioni / parametri della riga di comando per farlo, anche se so che puoi farlo dall'interfaccia utente. Dovrai trovare un modo per attivare l'opzione Salva con nome, magari inviando clic del mouse o tratti di tasti.
Karan,

Risposte:


11

Invece di richiamare un intero browser Web, perché non utilizzare il motore di rendering HTML solo per fare il lavoro? Usa wkhtmltopdf per eseguire la conversione.

wktohtml

Puoi anche convertire un sito Web esistente in PDF

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

Nota: tecnicamente il motore di rendering di Google Chrome è Blink, che è un fork di Webkit. Esiste> 90% del codice comune tra Blink e Webkit, quindi dovresti ottenere un risultato simile.


Nota per aver provato questo e ottenere cose sottili mancanti o rotte: il sorgente di wkhtmltopdf contiene patch QtWebkit che abilitano importanti funzionalità come i collegamenti cliccabili. È probabile che il pacchetto della distribuzione manchi di tali funzionalità se elenca il normale pacchetto qtwebkit della distribuzione come dipendenza. L'installazione di wkhtmltopdf dall'origine richiede 3,7GiB di disco e alcune ore.
Anko,

34
-1 Questa risposta non corrisponde alla domanda, wkhtmltox è un ottimo strumento ma non funziona come Chrome o Firefox durante l'esportazione in PDF.
Carlos C Soto,

@Anko Non sono sicuro di aver capito. Cosa devo aspettarmi costruendo wkhtmltopdf dalla fonte?
VH-NZZ,

2
non posso nemmeno consigliarlo, se hai un sofisticato CSS wkhtmltopdf è inutile.
MushyPeas,

2
Gli SVG non vengono visualizzati.
Marco Sulla

38

Chrome ha avviato il programma senza testa .

Con ciò, possiamo creare un pdf. ad es. per Windows, navigare verso la riga di comando verso

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

Quindi premi il comando:

chrome --headless --print-to-pdf="d:\\{{path and file name}}.pdf" https://google.com

Solo un avvertimento, se hai un'istanza esistente di Chrome in esecuzione su Windows il comando non funzionerà. Uccidi prima tutti i processi di Chrome, quindi funzionerà. Potrebbe esserci una bandiera per aggirare questo inconveniente.
John Leidegren,

1
@JohnLeidegren (almeno) a partire da Chrome per Windows versione 66.0.3359.139 (build ufficiale) (64 bit), funziona senza interrompere alcun processo di Chrome.
naitsirhc,

2
Si noti che è possibile utilizzare --user-data-dir="C:\Users\...\AppData\Local\Google\Chrome\User Dataper l'esecuzione con il profilo Chrome dell'utente. Ciò è utile, ad esempio, per esportare contenuti da un sito Web che richiede l'accesso degli utenti, poiché sono disponibili cookie di sessione.
naitsirhc,

@naitsirhc FYI, ho trovato il burattinaio una valida alternativa alle cose da riga di comando, se stai cercando di fare qualcosa di più elaborato. Ha una bella API per il cromo remoto per svolgere varie attività, gestisce anche le versioni per te. Molto bella.
John Leidegren,

Gli SVG vengono visualizzati in modo errato
Marco Sulla

17

Devi utilizzare Google Chrome / Chromium 59 o versione successiva ed è disponibile solo per utenti MAC OS e Linux.

* Gli utenti Windows devono ancora attendere un po 'di tempo fino alla versione 60 *

Comando:

$ 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/

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

EDIT: Google Chrome / Chromium 60 è stato implementato per gli utenti di Windows.

Utilizzo dei comandi in CMD:

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

Il nome del file pdf file1.pdf verrà salvato in

"C: \ Programmi o (x86) \ Google \ Chrome \ Application \ 60.0.3112.113 (versione-cromo) \ file1.pdf"


--disable-gpunon dovrebbe più essere necessario nelle versioni più recenti.
Anello Ø

questo crea un risultato MOLTO migliore / coerente di wkhtmltopdf o weasyprint
ierdna,

4

https://github.com/fraserxu/electron-pdf è stato progettato esattamente per questo scopo.

L'interfaccia della riga di comando è simile al seguente: $ electron-pdf http://fraserxu.me ~/Desktop/fraserxu.pdf


L'ho installato, si blocca indefinitamente senza alcun output. Ho provato electron-pdf http://fraserxu.me test.pdfcome suggerito nella guida, ma ho provato anche gooogle.com
Marco Sulla


0

Ha eseguito con successo una conversione batch di file html locali in PDF, condividendo l'approccio.

Passare a una cartella contenente un batch di file html che si desidera convertire ...

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"
)

Nota: è necessario utilizzare la barra per evitare di annullare% f nel percorso del file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.