简体   繁体   English

当我有锚标记时,itextsharp“文档没有页面”错误

[英]itextsharp “the document has no pages” error when i have anchor tag

I am converting some html to pdf. 我正在将一些html转换为pdf。 It is working fine but when i have anchor tag in my html i get error the document has no pages 它工作正常但是当我在我的html中有锚标记时我得到错误文档没有页面

My code is 我的代码是

 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();
           }
       }
    }
 }

The problem may be invalid html. 问题可能是无效的HTML。 One way to check is to run your html source through a validator such W3C Markup Validation Service . 检查的一种方法是通过验证器运行您的html源,例如W3C标记验证服务

have you already tried to add a Page with: 你有没有尝试添加一个页面:

pdfDoc.NewPage();

I think your Code should look like this: 我认为您的代码应如下所示:

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();
            }
        }
    }
}

You can also add a blank Page by using: 您还可以使用以下方法添加空白页面:

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

MfG chris MfG克里斯

Need to check that any html tags are mismatched. 需要检查是否有任何html标记不匹配。 Example /td>, this types of mistake raised above error. 示例/ td>,这种错误引发错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM