2010-12-03 12 views
13

Tengo una pregunta que veo de google ha sido discutida en detalle ... pero quiero saber lo que recomendaría en función de nuestras necesidades particulares. Quiero estar en el camino correcto antes de encontrar una semana de trabajo más tarde que elegí la herramienta incorrecta (una herramienta que funciona, pero cuya peculiaridad, al final, la descartaría para nuestro proyecto).¿Recomendación? para nuestro HTML específico -> proyecto PDF

He leído algunos buenos hilos en Stack Overflow ya sobre este tema ... pero tienen personas que hacen recomendaciones en todo el mapa ... como era de esperar, en general, nuestras necesidades y experiencias están por todo el mapa. Y nuevamente, aquí quiero saber qué recomendaría dada nuestra situación específica.

Tenemos una página HTML dinámica que muestra 30 "etiquetas de dirección" dentro de las dimensiones de un solo documento de tamaño carta de EE. UU. Queremos que el usuario pueda imprimir la página de tamaño carta y que el contenido se alinee perfectamente (como lo hace en el navegador) con el papel autoadhesivo de la etiqueta de dirección Avery (impresa) que usará para pelar las 30 pegatinas. y afijo al producto físico. La página HTML tiene ~ 200k de HTML (divs y tablas), texto, gifs, jpgs, un gráfico PNG de código de barras y un uso intensivo de CSS-CSS2 exigente, así como un toque de CSS3 (transformación de propiedad CSS3), es decir:

/* --- for firefox, safari, chrome, etc. --- */ 
-webkit-transform: rotate(90deg); 
-moz-transform: rotate(90deg); 
/* --- for ie --- */ 
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); 

... que utilizo para girar (90 grados) un código de barras, que me agarra fuera de este sitio/servicio: http://www.barcodesinc.com/generator/index.php

que pudimos dejar que el código de barras PNG/servicio si me podría sustitúyalo por otro ... y el código de barras debe girarse 90 grados para que encaje en su pequeña ranura asignada (orientada verticalmente) en cada una de las 30 "celdas de etiqueta de dirección".

  • Ojalá tuviéramos presupuesto para la versión de servidor de PrinceXML ;-) ... pero no tuvimos suerte.
  • Nunca he usado ninguna biblioteca PHP como FPDF o TCPDF, pero me preocupa la velocidad; los usuarios corporativos (en varios navegadores) necesitarán el pdf en tiempo real. Pueden ser pacientes y esperar el PDF final si mantienen la solución libre ... pero si lleva minutos generar, ese es un punto negativo.
    Además, no estoy seguro de lo buenos que son para HTML -> PDF (en lugar de PDF directo desde cero) ... además no estoy seguro de qué tan bueno es el soporte de CSS. Nuestra página es un poco un HTML/CSS kludge.
  • He utilizado las herramientas de línea de comandos HTMLDOC y wkpdf, pero la primera carecía del CSS que necesito ahora, y la última introduce un margen que lo elimina para el formato exacto de la etiqueta de dirección (más este proyecto está en Linux).

Mis habilidades de PHP aún no son muy fuertes ... pero estoy dispuesto a hacer lo que sea necesario para unir todas las soluciones. En caso de que tenga alguna familiaridad con las herramientas de generación de PDF que considere que se ajustan a la necesidad aquí, entonces por favor avise!

Respuesta

5

Si lo que buscas es algo así como el príncipe XML pero sin el costo, me gustaría tratar DocRaptor.com. Es un generador de pdf en línea que convierte desde HTML. Usé el plan gratuito y fue bastante fácil.

¡Buena suerte!

Nate

+0

Brillante Nate! Debido a las restricciones presupuestarias, el cliente no me ha obligado a bajar por ninguno de los caminos mencionados en este hilo, pero parece que este que nos muestra aquí nos dará la oportunidad de jugar con el poder de Prince incluso antes de tome una decisión final, más tarde, sobre qué usar finalmente. ¡Gracias por tomarse el tiempo de publicar! :-) -Govinda – govinda

+0

¡Me alegro de que sea útil para usted! :) – Nate365

+1

Finalmente llegué a perseguir una de las ideas ofrecidas en este hilo ... y como todos parecen encontrar ... ¡Prince es muy dulce! ... y docRaptor es una ventana bastante útil para Prince cuando el presupuesto es ajustado. El único problema que tuve fue una TABLA sicológicamente anidada ... asegúrese de seguir con los DIV para mantener un control preciso con el CSS. Gracias otra vez Nate por la propina. Problema/hilo resuelto/cerrado! :-) – govinda

1

Mi sugerencia habitual para tales cosas es wkhtmltopdf. Tu cosa de transformación de webkit aún debería funcionar, al igual que cualquier otra cosa que funcione en los navegadores de juegos web.

Advertencia: No lo he usado yo mismo.

+0

Gracias Marcos, Voy a mantener abierta por un tiempo .. esperanza para tantas respuestas como sea posible .. y luego ir por una vía u otra .. muy bien puede ser esta. – govinda

+1

Lo probé y el resultado parece convincente (si la página contiene un CSS de impresión decente). – icanhasserver

+0

Bueno saberlo. Gracias por la actualización. –

1

¿Está configurado en una solución HTML-> PDF? No seguiría ese camino: HTML nunca fue pensado para imprimir ... no tiene ningún concepto de páginas, y las diferencias en el sistema operativo, el navegador, las fuentes instaladas, etc. pueden hacer que algo tan preciso como imprimir etiquetas sea una pesadilla. ¿Por qué no generar el PDF directamente y omitir el HTML por completo?

Desafortunadamente, nunca he hecho el tipo de generación de PDF automatizado que está hablando. Si tuviera que cortar algo juntos rápidamente, las dos primeras cosas que surgen en mi cabeza son:

  • generar la salida de PS, y se alimentan a una utilidad como ps2pdf
  • Generar salida TeX, y se alimentan a pdflatex

me preocuparía por la robustez y la velocidad de ambas cosas: que dependerá en gran medida de la cantidad de solicitudes que estés procesamiento por segundo.

En cuanto a la salida ldd para gs (ps2pdf), parece que podría utilizar Cairo para la generación de PDF. Hay enlaces PHP, C, Python, etc. disponibles para El Cairo.

+0

Gracias por responder Thanatos, Todavía no entiendo todo lo que dices ..pero supongo que hacer lo que sugieres requiere uno de los idiomas que mencionas (como PHP) para resaltar los datos de la base de datos que pueblan la página. PERO estamos usando un lenguaje de fuente cerrada del lado del servidor menos conocido llamado WebDNA. Estaba planeando usar PHP solo para conducir la generación de PDF desde la última página HTML (ahora estática) que se genera dinámicamente en primer lugar con WebDNA y su formato de base de datos patentado. También nunca he generado pdfs * directamente *, por lo que aún no entiendo qué implica. – govinda

1

No recomiendo que intente convertir su HTML a PDF. Tan exacto como lo haya podido obtener en HTML, la conversión nunca conservará esa precisión.

he utilizado FPDF y encontrar que es fácilmente lo suficientemente rápido como para la generación de PDF en tiempo real de los documentos más complejos. FPDF permite la colocación precisa (medida en pulgadas, o sus unidades preferidas) de los elementos en una página PDF, por lo que la alineación no debería ser un problema. Sospecho que le resultará mucho más fácil generar el PDF que generar el HTML.

Hay guiones aportados por el usuario para la generación de códigos de barras para que pueda hacer eso dentro de FPDF si lo desea. O puede insertar una imagen que haya generado en otro lugar.

EDIT: Sólo para el seguimiento, he comprobado el sitio FPDF y no hay un guión aportado por los usuarios para generar etiquetas Avery en formatos comunes. Son menos de 200 líneas de código, por lo que incluso si quieres escribir las tuyas, sospecho que puedes hacerlo con bastante facilidad.

+0

gracias bmb, Estaba queriendo pasar por HTML para evitar tener que volver a escribir la presentación de los datos ... estamos usando otro lenguaje (no muy conocido) y tendremos que pasar datos sobre la marcha a PHP si usamos PHP para escribir archivos PDF directamente (si entiendo correctamente). ¿Sabes si las secuencias de comandos de la etiqueta avery de FPDF me permitirán rotar un código de barras PNG 90 grados? – govinda

+0

@govinda, no creo que la secuencia de comandos existente sea compatible con el código de barras, por lo que tendrías que codificarlo. Sin embargo, el diseño de los datos es probablemente más fácil de lo que piensas. En FPDF, puede decir '$ page-> setXY (132, 33); $ page-> Cell (10, 10, "Hello world"); 'y su texto aparece en las coordenadas que especifique. – bmb

1

Al final, nos hicieron dar PrinceXML un ir (a través del pago por you-go servicio "docRaptor". Gracias a Nate para que la punta). Por el momento, Prince no reconoce la transformación CSS3 que necesitaba para rotar el código de barras en nuestro pdf ... pero encontré otro generador de códigos de barras que lo rota en el momento del dibujo, antes de servirlo ... así que funcionó. Puede haber mejores formas de generar pdfs ... pero para aquellos de nosotros que pasamos todo el tiempo pirateando páginas web, hay algo muy satisfactorio en tener pdfs generados formateados exactamente como fuente HTML/CSS. Todo el alboroto sobre Prince está bien ganado, descubrí. Gracias a todos los que respondieron.