Asp.net mvc 2 从.NETMVC视图创建pdf

Asp.net mvc 2 从.NETMVC视图创建pdf,asp.net-mvc-2,pdf,pdf-generation,itextsharp,Asp.net Mvc 2,Pdf,Pdf Generation,Itextsharp,我正在为我的应用程序使用asp.net mvc2。我有一个接受模型并以某种格式呈现其数据的视图。我想把这个页面转换成pdf文件,以便它可以通过附件发送或创建和下载的飞行。我用itextsharp库成功创建了pdf,但他们说它对html和css有非常基本的支持。如果有人使用itextsharp或任何其他库将复杂的html页面呈现为pdf,请帮助我解决此问题。如有任何意见,我们将不胜感激 谢谢虽然不是免费的,但您可能想看看PDF转换服务。最新的测试版非常精确地支持HTML转换 请看一看,它在.net

我正在为我的应用程序使用asp.net mvc2。我有一个接受模型并以某种格式呈现其数据的视图。我想把这个页面转换成pdf文件,以便它可以通过附件发送或创建和下载的飞行。我用itextsharp库成功创建了pdf,但他们说它对html和css有非常基本的支持。如果有人使用itextsharp或任何其他库将复杂的html页面呈现为pdf,请帮助我解决此问题。如有任何意见,我们将不胜感激


谢谢

虽然不是免费的,但您可能想看看PDF转换服务。最新的测试版非常精确地支持HTML转换

请看一看,它在.net和基于java的环境中运行良好


我研究过这个产品,所以通常的免责声明适用。很乐意回答任何问题。

您还可以研究使用提供html到pdf转换的

iText可以将XML或HTML文件转换为PDF,但只能在非常基本的级别上进行转换。将文档从一种格式转换为另一种格式超出了iText的范围。否:iText不会将Word文档转换为PDF

我认为这在一定程度上会有所帮助。只需注意,HTML显示和PDF文档的用途与前面描述的不同。其基本思想是后者用于打印输出,另一个用于视频显示

我的建议是,在大多数情况下,当从web打印时,可以选择使用此声明创建单独的样式表进行打印。这样做的目的是简化样式,使其更便于打印=不太复杂

下面的列表提供了对该选项的进一步了解

<link rel="stylesheet" type="text/css" media="print" href="print.css" /> 
另一个免费的PDF库是。但是,它们不支持从HTML到PDF的转换

其他相关问题


将呈现视图html捕获为字符串,并将其传递给Winnovative PDF creator,这是一个保留复杂格式的非常好的工具。 下面是从捕获的html创建PDF的代码

    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]

您可以从Winnovative PDF creator的官方网站获得示例代码。

plz帮助我解决此问题-解决哪个问题,是吗?@Tom从复杂的html动态创建pdf,或者从保存的html文件创建pdf,这些文件应该保留通过cssIt定义的所有格式。最好列出您尝试过的内容,这样其他人就不会用您已经拒绝的内容发布答案。我很感谢您的回复,但我更倾向于开源解决方案谢谢为了寻求帮助,我尝试了itextsharp,但它不能满足我的要求,是的,它确实非常基本