Cómo imprimir para guardar como PDF desde una línea de comandos con Chrome o Chromium

43

¿Puedo imprimir en el destino "Guardar como PDF" desde una línea de comandos con Chrome o Chromium? Me gustaría poder convertir automáticamente archivos html a PDF con la funcionalidad incorporada de Chrome.

ipavlic
fuente
@golimar No es una impresora virtual. Chrome tiene una opción incorporada para exportar a pdf.
ipavlic
1
No veo ningún interruptor Chrome incorporado para guardar como PDF.
Karan
@Karan Cuando vaya, Printdebe haber un Save to PDFdestino disponible para que elija. También se indica claramente en la página de soporte de Google: support.google.com/chrome/bin/…
ipavlic
2
Quizás mi comentario anterior no fue claro. Quería saber cómo hacer esto desde la línea de comandos, y lo que quería decir era que Chrome / Chromium parece no tener interruptores / parámetros de línea de comandos para hacer esto, aunque sé que puede hacerlo desde la interfaz de usuario. Deberá encontrar alguna forma de activar la opción Guardar como, quizás enviando clics del mouse o pulsaciones de teclas.
Karan

Respuestas:

11

En lugar de llamar a un navegador web completo, ¿por qué no usar el motor de representación HTML solo para hacer el trabajo? Use wkhtmltopdf para realizar la conversión.

wktohtml

También puede convertir un sitio web existente a PDF

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

Nota: técnicamente el motor de renderizado de Google Chrome es Blink, que es una bifurcación de Webkit. Hay> 90% de código común entre Blink y Webkit, por lo que debería obtener un resultado similar.

hanxue
fuente
Tenga en cuenta que después de haber intentado esto y de que faltan o se rompen cosas sutiles: la fuente de wkhtmltopdf contiene parches QtWebkit que permiten características importantes como enlaces en los que se puede hacer clic. Es probable que falten tales características en el paquete de su distribución si enumera el paquete qtwebkit habitual de su distribución como una dependencia. La instalación de wkhtmltopdf desde la fuente requiere 3.7GiB de disco y algunas horas.
Anko
34
-1 Esta respuesta no corresponde a la pregunta, wkhtmltox es una gran herramienta pero no funciona tan bien como Chrome o Firefox al exportar a PDF.
Carlos C Soto
@Anko No estoy seguro de haber entendido. ¿Qué puedo esperar construyendo wkhtmltopdf desde la fuente?
VH-NZZ
2
tampoco puedo recomendarlo, si tienes CSS sofisticado, wkhtmltopdf es inútil.
MushyPeas
2
Los SVG no se representan.
Marco Sulla
38

Chrome ha comenzado un programa sin cabeza .

Con eso, podemos crear un pdf. Por ejemplo, para Windows, navegue por la línea de comandos hasta

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

Luego presiona el comando:

chrome --headless --print-to-pdf="d:\\{{path and file name}}.pdf" https://google.com
Vikas
fuente
Solo un aviso, si tiene alguna instancia existente de Chrome ejecutándose en Windows, el comando no funcionará. Mata todos los procesos de Chrome primero, luego funcionará. Puede haber una bandera para solucionar este inconveniente.
John Leidegren
1
@JohnLeidegren (al menos) a partir de Chrome para Windows Versión 66.0.3359.139 (Versión oficial) (64 bits), esto funciona sin matar ningún proceso de Chrome.
naitsirhc
2
Tenga en cuenta que puede usar --user-data-dir="C:\Users\...\AppData\Local\Google\Chrome\User Datapara ejecutar bajo el perfil de Chrome de su usuario. Esto es útil, por ejemplo, para exportar contenido desde un sitio web que requiere que los usuarios inicien sesión, ya que las cookies de sesión están disponibles.
naitsirhc
@naitsirhc FYI, he encontrado que el titiritero es una muy buena alternativa a las cosas de la línea de comandos, si intentas hacer algo más elaborado. Tiene una buena API para el cromo remoto para realizar diversas tareas, también gestiona versiones para usted. Muy agradable.
John Leidegren
Los SVG se representan incorrectamente
Marco Sulla
17

Debes usar Google Chrome / Chromium 59 o una versión posterior y solo está disponible para usuarios de MAC OS y Linux.

* * Los usuarios de Windows todavía tienen que esperar un tiempo hasta la Versión 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/

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

EDITAR: Google Chrome / Chromium 60 se ha implementado para usuarios de Windows.

Uso de comandos en CMD:

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

Su nombre de archivo pdf file1.pdf se guardará en

"C: \ Archivos de programa o (x86) \ Google \ Chrome \ Application \ 60.0.3112.113 (versión de Chrome) \ file1.pdf"

Rahul_Dange
fuente
--disable-gpuya no debería ser necesario en las versiones más recientes.
Anillo Ø
esto crea una salida MUCHO mejor / consistente que wkhtmltopdf o weasyprint
ierdna
0

Se realizó con éxito una conversión por lotes de archivos html locales a PDF, compartiendo el enfoque.

Navegue a una carpeta que contenga un lote de archivos html que desea convertir ...

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: debe utilizar la barra diagonal para evitar negar el% f en la ruta del archivo.

Zac
fuente