pagina online herramientas guardar gratis convertir como chrome cambios barra css google-chrome pdf printing google-chrome-headless

css - online - ¿Cómo puedo cambiar el tamaño del papel en Chrome sin cabeza? Imprimir en PDF



guardar pagina web como pdf chrome (4)

Aparentemente, el tamaño de la página ahora puede ser "casi" controlado sin usar la interfaz de depuración.

El siguiente es un método para crear un PDF con casi las dimensiones exactas de su contenido usando un cromo sin cabeza.

<head> <style> html, body { width: fit-content; height: fit-content; margin: 0px; padding: 0px; } </style> <style id=page_style> @page { size: 100px 100px ; margin : 0px } </style> </head>

Esto se prepara para hacer que el pdf se ajuste a la página, pero no estará bien, ya que el tamaño de la página se ha establecido en un valor arbitrario de 100x100.

Una vez que se haya procesado el documento, se utiliza lo siguiente para establecer el tamaño de página correctamente en la parte inferior de la página:

<script> window.onload(fixpage); function fixpage() { renderBlock = document.getElementsByTagName("html")[0]; renderBlockInfo = window.getComputedStyle(renderBlock) // fix chrome page bug fixHeight = parseInt(renderBlockInfo.height) + 1 + "px" pageCss = `@page { size: /${renderBlockInfo.width} /${fixHeight} ; margin:0;}` document.getElementById("page_style").innerHTML = pageCss } </script>

Este enfoque elimina el encabezado / pie de página y trata un problema numérico con la conversión de píxeles a pdf.

Una cosa más

Chrome actualmente tiene un error con el cálculo de la altura absoluta de un div cuando usas el CSS

line-height: normal;

Esto hará que el cálculo de la página sea demasiado corto y que se genere una página pdf adicional. Puedes arreglar esto usando:

line-height: unset;

A lo largo de su CSS. ¡No conseguirás una altura precisa sin él!

Estoy usando Chrome sin cabeza para exportar documentos html a pdf

google-chrome --headless --disable-gpu --print-to-pdf=''output_path'' ''url''

¿Cómo puedo cambiar el tamaño del papel en el pdf generado?

Tengo control tanto de los parámetros de Chrome como de html.

Siempre recibo carta de los Estados Unidos.

No hay opciones de línea de comandos documentadas para esto.

He intentado configurar CSS: @page {size: A4;} . No tiene efecto en el modo sin cabeza, pero funciona cuando presiono Ctrl + P en el modo normal (la opción para elegir el tamaño del papel para Save as pdf desaparece, el pdf exportado tiene un tamaño de página A4).

He intentado esto en las versiones 59, 60 y 61 de Chrome en Ubuntu 16.04.


Hace algún tiempo se creó un parche que habilita la configuración de tamaño de página https://codereview.chromium.org/2829973002/

Ahora está cerrado y disponible en la versión inestable de Chrome, por lo que puede usarlo como sugirió @page { size: A4 } .

Probé, funciona en la compilación inestable que he instalado ( Google Chrome 61.0.3141.7 dev ). Sin embargo, no estoy seguro de cómo verificar cuándo estará disponible en la compilación estable ...



Nota: después de revisar los comentarios en la respuesta de atomrc, pensé en agregar esto como una respuesta para ser más claro.

No puedes cambiar el tamaño de la página en este momento a menos que uses el protocolo devtools.

Este es un error en Chrome sin cabeza . La regla CSS de @page size no se entiende correctamente en modo sin cabeza, ya que este usuario la describe bien en el rastreador de errores de cromo :

Desktop Chrome admite @page at-rules para el tamaño y los márgenes, y establecerá las dimensiones de la hoja de acuerdo con la propiedad de tamaño.

Parece que Headless Chrome también analiza @ page en cierta medida, pero se comporta de manera diferente a la versión de escritorio: si especifica @page {tamaño}, parece que headless cambia las dimensiones del cuadro de página (esencialmente, el área de impresión), y no la hoja, que siempre tiene el tamaño de carta de Estados Unidos. Sin embargo, sí gira la hoja si especifica {tamaño: paisaje}.