Pregunta

Actualmente tengo un " PrintingWebService " que llamo desde una página AJAX con toda la información que se necesita para construir una impresión en PDF altamente personalizada utilizando PDF Sharp y el modo GDI + de PDFSharp, que toma DrawString y otros comandos que funcionan básicamente como GDI +, solo que están dibujados en el PDF.

Luego guardo el archivo PDF en una ubicación en el servidor web y devuelvo el nombre del archivo desde el servicio web, y la página AJAX abre una nueva ventana con el archivo pdf.

Hasta ahora, funciona bien, sin embargo, hay una parte de mi página AJAX que quiero imprimir y aún no he encontrado una solución. Tengo una cadena del contenido HTML de un editor TinyMCE que quiero mostrar en la parte inferior de la página PDF.

Estoy buscando algún tipo de herramienta que pueda usar para este propósito. Incluso algo de código abierto que se imprime en GDI + podría usar el código fuente y traducirlo para usar el GDI + de PdfSharp (los nombres de clase son como XGraphics, y cada clase tiene X antes del nombre de GDI +).

Si tengo que hacerlo, limitaré qué HTML puede generar TinyMCE y escribiré mi propio renderizador, pero eso será un gran desafío, por lo que primero busco otras soluciones.

Me he alejado de un enfoque de página amigable para la impresora porque quería construir una página que fuera casi idéntica a la de una impresión de WinForms existente, usando mi código existente. Con PdfSharp pude convertir todo el código excepto las cosas del área de texto (que utilizaban RichTextBox y RTF en la versión de WinForms).

¿Fue útil?

Solución

Tony,

Personalmente, he usado la biblioteca ABCPdf de WebSupergoo con mucho éxito. En realidad, puede representar HTML directamente en el PDF y lo hace bastante bien en cuanto a precisión.

Otro software gratuito que le permitirá la flexibilidad de escribir HTML a PDF que he usado en el pasado con mucho éxito es iTextSharp.

De lo contrario, creo que tendrás que escribir algo para representar HTML a GDI.

De cualquier manera, es posible que desee considerar el uso de un HttpHandler que asigna al uso de su web.config para generar el archivo PDF. Esto le permitirá renderizar el PDF a un bytestream y luego volcarlo directamente al usuario (en lugar de tener que guardar cada recibo de PDF en el servidor web). También le permitirá usar la extensión .pdf en la página que devuelve el recibo (PurchaseReceipt.pdf podría asignarse a un HttpHandler) ... lo que lo hace más compatible con todos los navegadores. Las versiones anteriores de Adobe / Browsers no se mostrarán correctamente si comienza a lanzar un flujo de bytes PDF desde una página ASPX.

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top