2010-09-23 8 views
5

i m usando MVC2 asp.net para mi aplicación. Tengo una vista que acepta un modelo y muestra sus datos en algún formato. Quiero que esta página se convierta en un archivo pdf para que pueda enviarse a través de un archivo adjunto o crearse y descargarse sobre la marcha. Tengo cierto éxito en la creación de pdf con la biblioteca itextsharp pero dicen que tiene soporte muy básico para html y css. si alguien ha hecho que las páginas HTML a PDF utilizando complejos iTextSharp o cualquier otra biblioteca PLZ me ayude en la solución de este problema. los comentarios son muy apreciadosCreación de PDF de la vista MVC .net

gracias

+0

"Por favor ayúdenme a resolver este problema" - ¿para resolver qué problema exactamente? –

+0

@Tom creando pdf desde html complejo ya sea sobre la marcha o desde archivos html guardados que deben preservar todo el formato definido a través de css –

+1

Probablemente sea una buena idea enumerar lo que ha intentado para que otros no publiquen respuestas con cosas que ya has rechazado. – Buildstarted

Respuesta

3

Creo que esto related question ayudará a un grado. Ten en cuenta que las pantallas HTML y documentos PDF sirven para diferentes propósitos como se describe here. El pensamiento básico es que este último "está diseñado para salida de impresión" y el otro "está diseñado para visualización de video".

Mi sugerencia es que, en la mayoría de los casos, cuando se imprime desde la web, existe la opción de crear una hoja de estilo para imprimir utilizando esta declaración. La idea es simplificar el diseño y hacerlo más compatible con la impresión (= menos complejo).

El siguiente article de A List Apart proporciona más información sobre esta opción.

<link rel="stylesheet" type="text/css" media="print" href="print.css" /> 

La otra biblioteca libre PDF a tener en cuenta es PDFSharp. Sin embargo, No conversión de apoyo de HTML a PDF.

Otros relacionados SO preguntas

0

Aunque no es libre, es posible que desee ver en los servicios de conversión de PDF. La última versión beta admite la conversión de HTML con gran precisión.

Eche un vistazo a this post, funciona bien con entornos basados ​​en .net y java.

He trabajado en este producto por lo que se aplican los descargos de responsabilidad habituales. Feliz de responder cualquier pregunta.

+0

solicito su respuesta pero estoy más inclinado hacia una solución de código abierto –

0

También podría utilizar el http://itextpdf.com/ que ofrece conversión de html a pdf.

"iText puede convertir un archivo XML o HTML a PDF, pero solo en un nivel muy básico. Convertir documentos de un formato a otro está fuera del alcance de iText. Y no: iText no convierte documentos de Word a PDF! "

+0

gracias por su ayuda, he intentado con itextsharp pero no cumple con mis requisitos y sí, de hecho es muy básico –

0

capturar la vista renderizada (html) como una cadena y pasarlo a Winnovative creador de PDF que es una realidad buena herramienta que conserva el formato complejo. Este es el código para crear el PDF desde el html capturado

string test="\r\n\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" >\r\n<head>\r\n <link rel=\"Stylesheet\" href=\"../../Content/style.css\" type=\"text/css\" />\r\n <title>Cover Page</title>\r\n <style type=\"text/css\">\r\n html, body\r\n {\r\n\t font-family: Arial, Helvetica, sans-serif;\r\n\t font-size: 13pt;\r\n\t padding: 0px;\r\n\t margin: 0px;\r\n\t background-color: #FFFFFF;\r\n\t color: black;\r\n\t width: 680px;\r\n }\r\n </style>\r\n</head>\r\n<body>\r\n <div>\r\n Ssotest Ssotest, \r\n </div> \r\n</body>\r\n</html>\r\n" 

       FileStreamResponseContext response = new FileStreamResponseContext(); 
Response .clear(); 
    Document doc = new Document(); 
       doc.DocumentInformation.CreationDate = DateTime.Now; 
       doc.DocumentInformation.Title = "Test Plan"; 
       doc.DocumentInformation.Subject = "Test Plan"; 
       doc.CompressionLevel = CompressionLevel.NormalCompression; 
       doc.Margins = new Margins(0, 0, 0, 0); 
       doc.Security.CanPrint = true; 
       doc.ViewerPreferences.HideToolbar = false; 
       doc.ViewerPreferences.FitWindow = false; 

    string baseUrl = String.Format("http://localhost{0}/", Request.Url.Port == 80?"":":" + Request.Url.Port.ToString()); 

    PdfPage docTestPlan = doc.AddPage(PageSize.Letter, new Margins(0, 0, 0, 0), PageOrientation.Portrait); 
    // passing the string test returned from the string writer 

     HtmlToPdfElement htmlToPdf = new HtmlToPdfElement(test, baseUrl); 
       htmlToPdf.FitWidth = false; 
       docTestPlan.AddElement(htmlToPdf); 


       /****************************************** 
       * put doc in a memory stream for return */ 
       response.FileDataStream = new MemoryStream(); 
       doc.Save(response.FileDataStream); 
       doc.Close(); 
       response.FileDataStream.Position = 0; 

       return new FileStreamResult(response.FileDataStream, "application/pdf"); 



If you need to capture the controller action follow my post here.[http://stackoverflow.com/questions/5553674/capturing-html-to-string-in-mvc2-0][1] 

Usted puede obtener los códigos de muestra de la página web oficial de Winnovative creador de PDF.

Cuestiones relacionadas