C# pdf不是由使用iTextSharp创建的Adobe reader打开的
我是C# pdf不是由使用iTextSharp创建的Adobe reader打开的,c#,visual-studio-2010,pdf,itextsharp,export-to-pdf,C#,Visual Studio 2010,Pdf,Itextsharp,Export To Pdf,我是iTextSharp编码新手。我正在VS2010中从html字符串创建pdf文件。包含html表的html字符串,我希望将其转换为pdf文件。我自己开发了一个代码,它成功地创建了PDF文件,但当我打开文件时,它显示的消息是 Adobe Reader无法打开“XXX.pdf”,因为它不是受支持的文件或文件已损坏 但我没有走错方向 我开发的代码如下: Response.ContentType = "application/pdf"; Response.AddHea
iTextSharp
编码新手。我正在VS2010中从html字符串创建pdf文件。包含html表的html字符串,我希望将其转换为pdf文件。我自己开发了一个代码,它成功地创建了PDF文件,但当我打开文件时,它显示的消息是
Adobe Reader无法打开“XXX.pdf”,因为它不是受支持的文件或文件已损坏
但我没有走错方向
我开发的代码如下:
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=PendingOrderItems.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
DataTable oTable = HtmlTableParser.ParseTable(hftbPdfData.Text);
GridView oTempGridview = new GridView();
oTempGridview.AllowPaging = false;
oTempGridview.DataSource = oTable;
oTempGridview.DataBind();
StringWriter oStrWriter = new StringWriter();
HtmlTextWriter ohTextWriter = new HtmlTextWriter(oStrWriter);
oTempGridview.RenderControl(ohTextWriter);
StringReader oStringReader = new StringReader(oStrWriter.ToString());
Document oDocument = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
HTMLWorker oHTMLWorker = new HTMLWorker(oDocument);
oDocument.Open();
oHTMLWorker.Parse(oStringReader);
oDocument.Close();
Response.Write(oStringReader);
Response.End();
有人能告诉我哪里出了问题吗?????很有效,也许你忘了在pdf中添加内容?尝试注释
oHTMLWorker.Parse()
行,是否出现相同错误?顺便说一句,上面说已弃用。请改为使用XML Worker
。好的,我会马上在机场处理它,这样我就不会写太多了,但是看到这个关于使用ASP.Net和iTextSharp的答案,我希望它能为您指明正确的方向。您需要响应。编写(oStringReader)
oStringReader
是包含HTML的字符串读取器,它已被您的oHTMLWorker
读取。因此,您很可能不向响应流写入任何内容。而是为文档实例化一个PdfWriter
,并将其输出作为响应发送。