2012-10-12 273 views
6

estoy usando PHP, MySQL, jQuery. Tengo una página web que se va a convertir en alta resolución de tamaño A4 PDF: http://optisolbusiness.com/funeral_site/sample/index/id/255.HTML escala proporcionalmente para ajustarla exactamente a PDF tamaño A4

que han convertido el HTML a PDF utilizando wkhtmltopdf, que funciona muy bien.

Aquí es el PDF generado http://optisolbusiness.com/Guru/Gurupdf/optisol.pdf. Pero el HTML no se ajusta exactamente al tamaño del PDF; Hay espacios alrededor del HTML en PDF. ¿Cómo escalar HTML para adaptarse al tamaño de PDF A4 al 100%? Es importante destacar que el contenido en el interior del tamaño del texto html (es decir), las imágenes de la anchura y la altura, imágenes de fondo también puede escalar proporcionalmente.

+0

Esta pregunta debería haber declarado que era un seguimiento de [esta pregunta] (http://stackoverflow.com/q/12834641/472495), que solicité. Esto habría proporcionado información de fondo útil para los encuestados. – halfer

+0

páginas no Foune :( – shareef

Respuesta

7

su imagen de fondo no es precisamente alta resolución, esto no se ven muy bien en la impresión.

No sé wkhtmltopdf sí mismo, pero su cuerpo ya tiene dimensiones absolutas establecidas (en pulgadas). Este es probablemente el problema. Su cuerpo tiene un tamaño máximo, el contenido también tiene un tamaño absoluto (debido a las dimensiones de píxeles de la imagen de fondo).

Esto no es un buen punto de partida para transformaions-html-to-print y PDF es esencialmente de impresión.

qué hacer (intermedia)

  • retire las restricciones de tamaño del cuerpo
  • wkhtml ... ha llamado un interruptor zoom, 1.5 debe ser un valor adecuado para llenar la página
  • utilizar el tamaño de la página a4

qué hacer (la forma "correcta")

  • restricciones de tamaño Retirar del cuerpo
  • acumulación de las fronteras de fondo (los negros) con elementos de HTML y CSS estilo
    • abstenerse de definir reglas "ancho" para aquellos. Solo tendrá que definir un "ancho" una vez, todos los demás anchos deben establecerse en "auto".
    • alturas será problemático, porque los divs son tan altos como su contenido lo requiera. Pero la altura de ajuste: 100% no respeta los tamaños de bordes y márgenes.
  • cruz amarilla que podría ser diseñado de CSS también, o una resolución mucho más alta png/jpeg
  • Use únicas dimensiones "reales".Eso significa que no usa píxeles, puntos de uso, pulgadas o mm. Puedes usar% values, pero asegúrate de que esos sean% de dimensiones reales (eso significa que en algún punto un elemento padre tiene una dimensión real)
+0

echa un vistazo a PDF/X-3 http://www.prepressure.com/pdf/basics/pdfx-3 –

+0

No veo una conexión, ¿podría elaborar? – dualed

+2

Muchas gracias la opción de zoom wkhtmltopdf está funcionando muy bien.se guardó Me gusta mucho. Trabaja genial, genial, perfecto, dualed eres genial. Muchas gracias – PHPDev

0

puede establecer el tamaño del cuerpo con el tamaño de la página .. en caso de que A4 es 210x297mm.

Por cierto: sólo se debe utilizar el ancho en porcentaje, de lo contrario wkhtmltopdf tendrá que tratar de convertirlo.

Así que asegúrese de usar width: 100%; si desea que se llene toda la habitación. ;)

BTW: Si quiere PDF de alta calidad real, tendrá que crearlos conforme al menos al PDF/X-3 standard. No creo wkhtmltopdf hace eso aunque.

+0

Dónde establecer el ancho de 100% ?? – PHPDev

+0

ya he explicado eso. –

+0

usted se refiere a establecer el ancho del 100% en el cuerpo de la etiqueta html, ¿verdad? – PHPDev

2

Yo diría que siempre vas a tener dificultades para consigue esto para ser perfecto. En mi opinión, es mejor escribir el PDF directamente en lugar de confiar en una herramienta de terceros.

Considere buscar en FPDF, una biblioteca de escritura de PDF de código abierto. Tenga cuidado, el sitio web no está actualizado, pero la funcionalidad funciona muy bien.

+0

Cualquier cosa en la que pregunte "exactamente" y genere archivos PDF, definitivamente debe mirar una biblioteca como FPDF. Lo he usado en el pasado. Toma un poco de tiempo acostumbrarse y el código resultante es tan feo como el infierno, pero esencialmente puedes producir lo que quieras, píxel por píxel. –