2008-11-06 74 views
17

Nuestra empresa está buscando integrar facturas en un nuevo sistema que estamos desarrollando.Creación de facturas en PDF: ¿hay soluciones de plantillas?

Requerimos alguna solución para crear un diseño de la factura y luego convertirla a pdf.

Hemos considerado simplemente preparar la factura en html/css y luego convertirla a pdf. También hemos considerado el uso de la conversión SVG-> PDf.

Ambas soluciones se integran bien en nuestro lenguaje de plantillas utilizado para nuestra aplicación web.

Históricamente hemos sido un negocio basado en Microsoft y usamos Crystal Reports para tal tarea, pero estamos buscando una solución de código abierto para Linux para este proyecto.

¿Alguien tiene alguna sugerencia de un enfoque o tecnología que podríamos utilizar para tal tarea?

Respuesta

0

Este sitio html-2-PDF puede ser un punto de partida útil: http://maarten.lippmann.us/?p=101

Un sitio de un amigo mío incorporado utiliza un script para batir páginas HTML en archivos PDF para imprimir, también - http://philambdaupsilon.org. No estoy seguro de los detalles exactos, pero él es un usuario SO, y le enviaré esta pregunta también a él.

9

Pruebe esto ... cree una factura en blanco con Word (o lo que desee) y guárdela como un PDF.

Luego use una biblioteca de PDF para modificar el PDF (inserte el texto en coordenadas particulares). Hacemos esto en el mundo de Microsoft y es extremadamente fácil.

El mayor beneficio es que podemos usar nuestras propias herramientas para crear y modificar la plantilla. Si queremos agregar texto estático, solo abrimos Word, realizamos el cambio y lo guardamos en un archivo PDF (que se está utilizando como plantilla).

Para Microsoft, utilizamos iTextSharp que en realidad es un puerto de C# del original Java version of iText


Además ...

Puede utilizar Adobe Acrobat para insertar campos en el archivo PDF (dirección, teléfono , número de factura, línea de pedido 1, línea de pedido 2, etc. ...) y luego utilice iText/iTextSharp para rellenar estos campos en tiempo de ejecución.

Esto es, en más detalle, lo que hacemos ... y es extremadamente fácil.

+1

La modificación de aplicaciones PDF como esta va a ser un gran problema debido a la forma en que se estructuran los archivos PDF. Cada elemento tiene una posición fija y no hay ninguna cosa de 'reflujo' que le permita ajustar el contenido mientras preserva el diseño. –

+0

@Jasper: si hablamos de facturas, no es tan difícil. Usted sabe en qué coordenadas puede ingresar texto, y generalmente solo quiere una línea a la vez. Por cierto ... Actualicé con otra idea. – Jason

+0

Ah sí, no consideró el caso de uso demasiado probablemente. La razón por la que evito la generación de archivos PDF es porque no habría funcionado en un sistema de administración de contratos que habría tenido que realizar todo tipo de acrobacias para obtener un buen texto. –

5

He producido facturas anteriormente mediante la plantilla de un archivo PostScript, y luego usando el ps2pdf de Ghostscript para convertirlas en archivos PDF.

+0

+1 - Postscript no es tan difícil de generar. En una pizca, puede ver el resultado de un DTP o programa de dibujo. – ConcernedOfTunbridgeWells

+0

Bueno, sí, pero hice todo lo mío a mano ;-) – Alnitak

0

Desafortunadamente, el mejor sistema del mercado (en la actualidad) es pasar el HTML & CSS a un servidor ColdFusion y hacer que devuelva el PDF procesado. Entonces, si el dinero no es una gran preocupación, esta es la solución más rápida de implementar que rendirá los mejores resultados.

He intentado mucho para obtener FPDF, TCPDF, la clase pdf del sistema operativo R &, e incluso CodeIgniter's recommendation para trabajar, pero nada con salida estable para nada más allá de los archivos HTML más básicos/insulsos.

Honestamente, si la solución de ColdFusion no es viable, usaría html2ps, y luego ps2pdf para convertir sus archivos a PDF.

(Todo esto supone que no desea tomarse el tiempo y diseñar cada PDF con el código de creador de PDF nativo en PHP. Esto es lo que utilizan los sistemas como SugarCRM. Aunque es muy funcional con resultados estables, la creación real de cada archivo generador de PDF es un proceso muy doloroso)

6

Usamos Reportlab con Python. Si miras a tu alrededor, hay una gran cantidad de formularios/facturas/etc preparados.

+0

No es gratis, pero es completo y funciona bien. – btk

+0

hay una versión de código abierto gratuita: http://www.reportlab.com/software/opensource/ – hoju

+0

Utilicé reportlab y creé este proyecto de generador de facturas para facturas de fedex. https://github.com/radzhome/fedex-commercial-invoice Si hay otras facturas genéricas que a alguien le gustaría agregar, estoy abierto a ellas. – radtek

1

No estoy seguro de cuál es su objetivo aquí, pero hay una biblioteca php de código abierto llamada fpdf, que también tiene una extensión para tomar un pdf prefabricado como diseño y luego llenarlo con más contenido, generando un nuevo PDF con esa información

Sin embargo, buscaría una solución que pueda integrar muy bien en la plataforma que está compilando, pero no entraría en una solución HTML-> PDF ya que no sabría qué encajaría en una hoja de papel con respecto a los tamaños en ese tipo de entorno, lo que significa que no sabrá cuándo debe dividir el contenido en dos plantillas separadas.

2

Probablemente la solución más flexible es crear XMLs con datos de la factura y luego mediante el uso de XSLT transforman el, en archivos PDF, HTMLs, lo que sea ...

+1

No es fácil obtener un formato de precisión con xslt (y xsl-fo). –

2

que depende de su medio ambiente. Si tiene acceso a Java, puede consultar iText (http://www.lowagie.com/iText/), una biblioteca que le permite generar archivos PDF sobre la marcha.

9

La manera normal es instalar (La) TeX (probablemente ya en el cuadro de Linux) y ejecutar pdflatex para obtener los pdfs. También puede utilizar Apache FOP, si prefiere xslt y xsl-fo.

Si el número de facturas para crear es bajo, es posible que desee utilizar open-office (directamente o como un juego de herramientas).

Si desea un posicionamiento de alta precisión y acceso de bajo nivel, una biblioteca de PDF de bajo nivel (no sé si iTextSharp funciona con mono) podría ser lo que desea.

Primero probaría LaTeX, porque le permite obtener resultados con el mínimo esfuerzo.

+1

FOP, XSLT y XSL-FO son excesivos para esto, son una pesadilla. (IMHO) – Jason

0

Hemos utilizado Jasper Reports anteriormente. No es lo que llamarías fácil de usar, pero hablará directamente con tu base de datos.

3

Hay varios motores de informes OSS (Jasper Reports, Pentaho y BIRT para nombrar tres) que se puede utilizar de la misma manera que usted ha utilizado históricamente Crystal Reports. Uno de los otros carteles menciona ReportLab, que es una opción si está usando Python o puede incrustar un tiempo de ejecución de Python en su aplicación.

0

html2pdf funciona muy bien. Puede usar esto para generar informes HTML y PDF de la misma fuente.

+0

¿Cómo funciona la paginación con HTML? Por ejemplo, la mayoría de los procesadores de texto saben cómo dividir o envolver líneas en la siguiente página. ¿Necesita hacer esto manualmente con html2pdf? –

0

Estoy jugando con Black Sheep Invoices en este momento, lo cual es genial al principio, pero ahora estoy teniendo problemas para hacerlo renderizar los PDF. Muchas dificultades de instalación, probablemente mucho más fácil en su propio servidor, pero tengo un host compartido con él. Las partes de gestión de datos y salida de HTML están bien hechas, lo cual es algo que no obtendrás simplemente creando una plantilla de postscript. Esperaba encontrar una referencia a una biblioteca que tiene un equipo de desarrollo activo (Black Sheep no se actualiza en este momento).

0

Si desea navegador HTML perfecta convertido a PDF a continuación, tratar commandlineprint

que necesitará para instalar Firefox en una distribución Linux, desactivar todas las alertas Firefox y luego ejecutarlo a través de una pantalla virtual. Check this thread para más detalles.

Es exasperante correr bien pero te da los mejores resultados para la conversión de HTML a PDF que he visto.

0

OK, una búsqueda en los proyectos de Google Code apareció Simple Invoices, lo cual es increíble y está bien mantenido.

+0

Ahora, no estoy tan impresionado como lo estaba al principio. Aunque tienen una excelente documentación de instalación, no aclaran cómo eliminar los datos de muestra o cambiar la información de la cuenta de administrador o_0 –

1

También puede probar con XSL: FO. XSL: FO es un estándar documentado para describir el diseño de página: http://www.w3.org/TR/xsl/#fo-section.

He tenido éxito en dos proyectos creando documentos mediante la creación de un esquema XML que define el contenido del "PDF". Luego uso la herramienta XSD (de Microsoft) para generar una clase que represente este documento. Luego, asocie mis datos en esa estructura, serialice la clase poblada a XML, junto con una hoja de estilos XSL que defina cómo se deben mapear esos datos en FO, y páselos a un formateador FO. Para los formateadores, he usado Alt-Soft's Xml2Pdf con éxito. Hay algunos otros por ahí. Hay algunas herramientas disponibles para ayudar a crear la hoja de estilos de XSL a FO (es decir, stylusstudio y XmlSpy), pero recomiendo aprender las construcciones de FO ya que las herramientas parecen producir hojas de estilo hinchadas. FO es comparable a HTML (donde una etiqueta P es una etiqueta BLOQUE en FO), pero puede ser complicado. Esta bueno de FO, es que algunos de conversión de soporte formateador a otros formatos, como Word, HTML, etc.

Otras opciones:

  1. iTextSharp (C# puerto de iText). Acabo de empezar a leer sobre esto. Código abierto y gratis. No creo que haya ninguna "plantilla" apoyada con esto, pero podría estar equivocado al respecto.

  2. SQL Server Reporting Services. Suponiendo que los datos de su factura están en, o pueden incluirse, en un formato que puede leer los servicios de informes (SQL Server, Web Service, etc.), defina el diseño en SSRS y luego publíquelo en el servidor de informes. Use los servicios web de SSRS o la ejecución de parámetros de consulta para ejecutar el informe y hacer que se emita como PDF.

2

hay dos pasos, si he entendido bien:
1) Creación de la plantilla PDF con marcadores de posición para rellenar los datos mediante programación
2) Rellenar la plantilla PDF mediante programación en tiempo de ejecución

Para # 1 , OpenOffice permite la creación de plantillas PDF, que luego se pueden poblar programáticamente. Es lo suficientemente bueno para crear facturas simples que probablemente no involucran datos de tabla/tabla de datos.

Para el n. ° 2, usted ya tiene las respuestas aquí - iText, iTextSharp.

Espero que esto ayude!

+0

Actualmente estoy usando Open Office para crear las plantillas de PDF originales y luego uso iTextSharp para insertar datos mediante programación en los campos de formulario. Establecí el borde de los campos para que no sean visibles, por lo que los usuarios no pueden decir que es un campo de texto. –

0

Utilizo TROFF para mis facturas debido a su codificación textual extremadamente simple. La lógica es unas pocas líneas de Perl. Manteniéndolo simple.

0

utilizo oficina abierta en el servidor y luego generar el XML para el documento (basta con descomprimir el documento y cortar lejos)

0

Algunos pueden usar el editor de plantillas Dhek para definir área/marcador de posición para PDF existente, sin alterar el documento existente, y luego llenarlo para generar el documento final (por ejemplo, con valores de usuario de un formulario): https://github.com/applicius/dhek.

Cuestiones relacionadas