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
,并将其输出作为响应发送。