2009-11-28 22 views
7

Tengo una aplicación PHP que necesita generar algunas facturas en PDF y hojas de tiempo en PDF con buenos encabezados/pies de página. Algunos usuarios de Stackoverflow recomiendan usar TCPDF para crear documentos PDF. En mi investigación, he descubierto dos enfoques para archivos PDF que generan:HTML a PDF vs. Creación de PDF mediante programación mediante PHP

1) mediante programación de formato pdf, así:

$tcpdf->SetFillColor(255, 0, 0); 
    $tcpdf->SetTextColor(255); 
    $tcpdf->SetDrawColor(128, 0, 0); 
    $tcpdf->SetLineWidth(0.3); 
    $tcpdf->SetFont('', 'B'); 

2) convertir HTML a PDF

¿Cómo decido lo que me acerco me ¿debería usar?

+0

Aquí hay un buen tutorial que creo que definitivamente te ayudaría [Tutorial sobre la creación dinámica de archivos PDF en sitios web] (http://blog.geotitles.com/2011/09/tutorial-on-dynamically-creating-pdf- file-in-websites /) –

+0

El enlace de arriba parece estar obsoleto ahora. – srm

Respuesta

2

puedo recomendar Zend_Pdf, que es un método de programación de acuerdo a su clasificación.

abstracción Un HTML es agradable, pero no creo que usted tiene el poder y el control de una API de dibujo basado en la geometría completa completa. Tenga cuidado con las bibliotecas como fpdf, que no son compatibles con UTF-8, y utilice un analizador de pobre para 'convertir' HTML a PDF.

Con respecto a su aplicación, he producido un sistema que genera facturas con plantilla. Mis usuarios pueden cargar una plantilla en PDF, que es extraída por Zend_Pdf. Esta plantilla se utiliza para cada página de la factura generada, lo que permite una fácil personalización.

Tenga en cuenta que mi público es principalmente diseñadores gráficos que son capaces de producir estas plantillas, por lo que fue la solución adecuada aquí. Si su público solo está familiarizado con HTML, 'convertir' HTML a PDF podría ser la mejor manera.

+0

El enlace está roto –

+0

Zend_Pdf está abandonado - https://github.com/zendframework/ZendPdf - y recomiendan [TCPDF] (https://tcpdf.org/) como reemplazo. –

3

Siempre recomiendo crear archivos PDF de forma dinámica, pero basados ​​en plantillas que pueden ser editadas usando herramientas de usuario final o - al menos - sin tener que ser un programador. En tu caso, ese sería probablemente el HTML. Para mí, la solución ideal es tomar una plantilla de Office, llenarla con valores programáticamente y enviarla a PDF, siempre que sea técnicamente posible. Hago la plantilla de oficina rellenando parte en PHP usando tbsOOO y funciona bastante bien.

La razón principal para el uso de un enfoque basado en la plantilla sobre la generación del documento desde cero: el usuario puede diseñar la plantilla como mejor les parezca, y no será necesario cuando el diseño necesita cambiar. (Y es necesita cambiar un día.) Sólo cuando los datos insertados se deben cambiar o ampliar de alguna manera, el programador entra en juego. Esa es una enorme carga de trabajo.

0

También recomiendo la conversión de HTML a PDF:

  • Es fácil darse cuenta de
  • Es más fácil cambiar el diseño/diseño posterior
  • que probablemente se podría reutilizar algo de HTML de la página

Cuando una vez creé una generación de PDF para un sitio web, utilicé html2ps y luego convertí el postscript a pdf más tarde.

1

Hola, tienes dos opciones. Puede usar dompdf, que le permite diseñar su documento como un documento html normal y darle estilo con css. Puede convertir este documento en pdf. Mis experiencias fueron buenas Presto una página html regular usando Zend_View y convierto esto en pdf. De esta forma, tiene una plantilla extremadamente flexible, ya que puede tomar todo tipo de decisiones de visualización en su vista de generación de html.

→ ver list of css-compatability.

Como alternativa se puede utilizar livedocx. Esto también permite un enfoque basado en plantillas, pero más rígido y sin html. A integration for Zend Framework está en camino.

0

Sugiero el formateo programático.

En el mundo .net he tenido experiencias claramente negativas con los convertidores html a pdf. Parecen pertenecer a dos categorías:

Los que 'analizan' su html e intentan convertirlo en un pdf. Estos a menudo carecen de algunas características realmente fundamentales como hojas de estilo y soporte para cualquier cosa que no sea el diseño basado en tablas.

Los que 'imprimen' su html a una imagen y lo pegan en un pdf. Estos pueden en realidad producir un documento de aspecto decente. Parecen funcionar al vincular un navegador a la biblioteca, lo que provoca problemas de subprocesamiento y un rendimiento deficiente.

He tenido experiencias mediocres con apis de pdf directo pero php parece tener algunas bibliotecas significativamente mejores en este frente.

+0

Esto es completamente diferente para el mundo de php de hecho. Las bibliotecas programáticas como Zend_Pdf son las que apestan. Como recomendé, dompdf es muy bueno en html a pdf. No vincula un navegador en la biblioteca o cosas así (nadie se atrevería siquiera a pensar en esto) –

1

he tenido amplia experiencia con los tres enfoques:

  1. Creación del documento mediante programación utilizando TCPDF (que, aunque se deriva de FPDF, ¿son compatibles con UTF-8 de la caja). Aunque soy un gran admirador de Zend Framework, es necesario señalar que Zend_Pdf NO es lo suficientemente rico en su conjunto de características para ser utilizado de esta manera.

  2. Tener un diseñador gráfico para crear una plantilla, cargarla usando Zend_Pdf y luego agregarle contenido adicional. Zend_Pdf (1.10.2 - 1.10.7) funcionó bastante bien en este caso, EXCEPTO al intentar crear una nueva página y agregarla al documento, esto arrojó muchos errores.

  3. Conversión de HTML a PDF utilizando htmldoc. Este enfoque maló, pero principalmente debido a las limitaciones en htmldoc.

No he utilizado TCPDF para HTML a la conversión de PDF, pero a juzgar por la calidad general del código supongo que haría un buen trabajo. (Realmente he llevado el TCPDF al límite, incluido el renderizado de documentos gráficamente ricos en conjuntos de caracteres RTL, chino, etc., y ha funcionado perfectamente). Entonces, si decides hacerlo programáticamente, te recomendaría usar TCPDF, pero si tienes una plantilla bonita de un diseñador gráfico y quieres añadir cosas encima, cargarla con Zend_Pdf y modificar desde ahí hay una opción razonable (aunque todavía terminarás implementando el ajuste de palabras y algunas otras cosas básicas).

Cuestiones relacionadas