Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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";文件没有页数”;当我有锚标记时出错_C#_Asp.net_Itextsharp - Fatal编程技术网

C# itextsharp";文件没有页数”;当我有锚标记时出错

C# itextsharp";文件没有页数”;当我有锚标记时出错,c#,asp.net,itextsharp,C#,Asp.net,Itextsharp,我正在将一些html转换为pdf。它工作得很好,但是当我在html中有锚标记时,我得到一个错误,文档没有页面 我的代码是 byte[] data; using (var sr = new StringReader(sw.ToString())) { var st = new StyleSheet(); GetStyleSheetForUnicodeCharacters(st); using (var ms = new MemoryStream()) {

我正在将一些html转换为pdf。它工作得很好,但是当我在html中有锚标记时,我得到一个错误,文档没有页面

我的代码是

 byte[] data;
 using (var sr = new StringReader(sw.ToString()))
 {
    var st = new StyleSheet();

    GetStyleSheetForUnicodeCharacters(st);
    using (var ms = new MemoryStream())
    {
       using (var pdfDoc = new Document())
       {                            
           using (var w = PdfWriter.GetInstance(pdfDoc, ms))
           {
              pdfDoc.Open();
              var parsedHtmlElements = HTMLWorker.ParseToList(sr, st);
              foreach (var htmlElement in parsedHtmlElements)
              {
                 pdfDoc.Add(htmlElement as IElement);
              }
              pdfDoc.Close();
              data = ms.ToArray();
           }
       }
    }
 }

您是否已尝试添加包含以下内容的页面:

pdfDoc.NewPage();
我认为您的代码应该如下所示:

byte[] data;
using (var sr = new StringReader(sw.ToString()))
{
    var st = new StyleSheet();

    GetStyleSheetForUnicodeCharacters(st);
    using (var ms = new MemoryStream())
    {
        using (var pdfDoc = new Document())
        {                            
            using (var w = PdfWriter.GetInstance(pdfDoc, ms))
            {
               pdfDoc.Open();
               pdfDoc.NewPage(); // add Page here
               var parsedHtmlElements = HTMLWorker.ParseToList(sr, st);
               foreach (var htmlElement in parsedHtmlElements)
               {
                  pdfDoc.Add(htmlElement as IElement);
               }
               pdfDoc.Close();
               data = ms.ToArray();
            }
        }
    }
}
您还可以使用以下方法添加空白页:

    pdfDoc.newPage();
    w.setPageEmpty(false);

MfG chris

问题可能是无效的html。检查的一种方法是通过验证器运行html源代码。

需要检查任何html标记是否不匹配。示例/td>,上述错误引发的此类错误。

HTMLWorker
已停止。您应该切换到使用XML Worker
HTMLWorker
在某些HTML流上失败,这将导致
parsedHtmlElements
中出现0个条目。这会导致“文档没有页面”错误。这是一种“无法解决”的情况。您需要升级到XML Worker;我已经申请了,但没有结果。在进一步调查之后,我发现当我的html中有img标记时,问题就出现了。如果我说它工作得很好