iTextsharp - XmlWorker PDF - 以PDF格式显示

时间:2016-03-08 18:16:55

标签: c# itextsharp xmlworker

我正在使用iTextSharp XMLWorkder类将HTML转换为PDF。一切正常,除非有任何空的HTML表格,它会在其中放置" "字符,然后在PDF中清晰可见。

我尝试用空格或<br/>替换它,但它给出了错误“表格​​宽度必须大于零”。

任何人都可以建议我该怎么办?

1 个答案:

答案 0 :(得分:1)

怀疑iTextSharp&#160;放入PDF中。相反,iTextSharp足够聪明,可以正确地将其识别为非破坏性空间。以下是证明:

    string HTML = @"
<div>
<h1>HTML Encoded non breaking space</h1><table border='1'><tr><td>&amp;#160;</td></tr></table>
<h1>HTML non breaking space</h1><table border='1'><tr><td>&#160;</td></tr></table>
<div style='background-color:yellow;'><h1>Empty Table</h1><table><tr><td></td></tr></table></div>
</div>
    ";

using (var stringReader = new StringReader(HTML))
{
    using (FileStream stream = new FileStream(
        outputFile,
        FileMode.Create,
        FileAccess.Write))
    {
        using (var document = new Document())
        {
            PdfWriter writer = PdfWriter.GetInstance(
                document, stream
            );
            document.Open();
            XMLWorkerHelper.GetInstance().ParseXHtml(
                writer, document, stringReader
            );
        }
    }
}

enter image description here

因此,更有可能的情况是发送给解析器的HTML已将&#160;编码为&amp;#160;。简单的解决方法是替换编码的HTML实体,然后转到解析器:

HTML = HTML.Replace("&amp;#160;", "\u00A0");