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

时间:2014-07-04 12:18:17

标签: 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())
    {
       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();
           }
       }
    }
 }

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您是否已尝试使用以下内容添加页面

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

答案 2 :(得分:0)

需要检查所有html标签是否不匹配。例如/ td>,这种类型的错误会引起错误。