2010-01-04 112 views
6

¿Alguien sabe si lo siguiente es posible y, de ser así, cuál es la mejor manera de hacerlo de forma gratuita?Use un System.Drawing.Printing.PrintDocument para generar un PDF en la memoria

Estoy generando un PrintDocument en un proyecto en el que estoy trabajando y mostrando un cuadro de diálogo de impresión para que el usuario pueda elegir qué impresora quiere usar, etc. Actualmente es una aplicación de Windows y si un usuario desea imprimir a un PDF que pueden seleccionar para imprimir en CutePDF o algo similar.

Sin embargo, ahora estoy poniendo una interfaz web ASP.Net en la aplicación y quiero usar el mismo código para generar el documento impreso, pero quiero imprimirlo en un PDF sobre la marcha y servirlo a través del flujo de respuesta en el formato de una descarga PDF

Así que mi pregunta es ... ¿Cómo puedo usar el PrintDocument actual y generar un PDF en memoria de él?

Gracias

Respuesta

2

El sistema.El código de dibujo para PrintDocument puede reutilizarse para generar un documento PDF con ABCpdf .NET. Ver el System.Drawing example...

+0

Gracias, esto se ve muy bien. Le daré un giro. – MarkB29

0

Usted tendría que utilizar un componente tercera parte a fin de generar el PDF. El siguiente artículo tiene algunos enlaces a algunos de estos componentes: Generating PDF Files from .Net

0

Estás en un mundo de dolor si usted cree que va a ejecutar el "mismo código" que se ocupa de impresoras tanto en una aplicación de formas y una aplicación ASP.NET.

Puede tener suerte, sin embargo, ya que parece que PDFsharp + MigraDoc podría hacer esto por usted.

0

Creo que encontrará que no hay ninguna herramienta que tome un PrintDocument como entrada y muestre un PDF como salida. La única forma de hacer lo que desea es "imprimir" PrintDocument en un "controlador de impresora PDF" que generará PDF. Básicamente una impresora virtual que generará PDF en lugar de imprimir el resultado real. Hay una plétora de productos en el mercado para eso. Una pareja que son baratos y ampliamente utilizados son los siguientes:

0

Usted realmente debe mirar iTextSharp (se menciona en la página iText.NET recomendada anteriormente)

http://itextsharp.sourceforge.net/

PrintDocument está destinado a las aplicaciones de Windows Forms, pero está disponible en SilverLight, consulte este video ... http://silverlight.net/learn/videos/all/printing-api-basics/

Si desea continuar con PrintDocument y una aplicación web, creo que SilverLight 4 (que es beta ahora) es la única manera de hacerlo, o tendrá que tener una aplicación de formulario de Windows de peso ligero instalada localmente para el usuario final que tal vez use servicios web.

iTextSharp es una gran herramienta para generar archivos PDF con .NET en Internet. Lo recomiendo altamente; He usado iText con Java ... y he estado usando iTextSharp durante los últimos años.

Cuestiones relacionadas