Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml不工作_C#_Itextsharp - Fatal编程技术网

C# iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml不工作

C# iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml不工作,c#,itextsharp,C#,Itextsharp,我使用的是iTextSharp版本:5.5.6;iTextSharp XML Worker版本:5.5.6 我从中获得了一些代码,但在运行代码后,PDF文件将永远无法打开 :文件已损坏,无法修复。本地\EWHvxm9t5++ htmltext=“\r\n\r\n\r\n\r\n\r\n\r\n” \r\n\r\n\r\n\r\n\r\n\r\n \r\n项目\r\n说明\r\n LotNo\r\n修订版\r\n名称平台n\r\n DateCreated\r\n CreatedBy\r\n\r\n

我使用的是iTextSharp版本:5.5.6;iTextSharp XML Worker版本:5.5.6

我从中获得了一些代码,但在运行代码后,PDF文件将永远无法打开

:文件已损坏,无法修复。本地\EWHvxm9t5++

htmltext=“\r\n\r\n\r\n\r\n\r\n\r\n” \r\n\r\n\r\n\r\n\r\n\r\n
\r\n项目\r\n说明\r\n
LotNo\r\n修订版\r\n名称平台n\r\n
DateCreated\r\n CreatedBy\r\n\r\n\r\n
\r\n\r\n 100-817412-001\r\n X500-G02- 环境图纸\r\n 15020008\r\n B
\r\n测试123\r\n 2015年9月4日12:00:00 AM\r\n ULTRATCS\xma\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n“

HTML字符串(格式更好)如下所示:

<!DOCTYPE html>
<html lang=\"en\" >
<body>




        <table> 

   <tr> 
   <th> Item </th>
   <th> Description</th>
   <th>   LotNo</th>
   <th>Revision</th>
   <th>NamePlatSN</th>
   <th>DateCreated</th>
   <th>CreatedBy</th>

   </tr>

    <tr>
    <td> 100-817412-001</td>
     <td> X500-G02 - ENV DWG            </td>
    <td>15020008</td>
    <td> B      </td>
    <td>testing123</td>
    <td> 4/9/2015 12:00:00 AM</td>
    <td> ULTRATCS\\xma</td>

    </tr>
    </table>



</body>
</html>
怎么了?

(通过评论发现)


在调用
buf=memStream.ToArray()之前,需要调用
doc.Close()
。这让iTextSharp知道您实际上已经完成了,它应该刷新所有缓冲区并编写PDF尾部。

ParseXHtml方法不用于解析HTML代码?我需要做的是:我必须生成一个报告。为此,我创建了一个普通的razor视图,然后尝试使用ParseXHtml创建一个PDF报告天哪!你真是天才!在我切换这两个语句之后,它就开始工作了。非常感谢你!
 protected ActionResult ViewPdf(object model)
        {
            // Create the iTextSharp document.          
            Document doc = new Document();
            byte[] buf;
            // Set the document to write to memory.
            MemoryStream memStream = new MemoryStream();
            PdfWriter writer = PdfWriter.GetInstance(doc, memStream);
            writer.CloseStream = false;
            doc.Open();
            string htmltext = this.RenderActionResultToString(this.View(model));      

               using (var srHtml = new StringReader(htmltext))
                 {
                            //Parse the HTML
                            XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml);
                            //buf  = new byte[memStream.Position];
                            //memStream.Position = 0;
                            //memStream.Read(buf, 0, buf.Length);

                            buf = memStream.ToArray(); 

                            doc.Close();
                        }       
           // System.IO.File.WriteAllBytes(@"c:\\temp\test.pdf", buf);
            // Send the binary data to the browser.
            return new BinaryContentResult(buf, "application/pdf");
        }       
    }
}