1

iTextSharp XMLWorkder クラスを使用して HTML を PDF に変換しています。空の HTML テーブルがある場合を除いて、すべて正常に動作" "し、その中に文字が配置され、PDF にはっきりと表示されます。

これを空のスペースまたは に置き換えようとしました<br/>が、「テーブルの幅はゼロより大きい必要があります」というエラーが発生しました。

誰でも私が何をすべきかを提案できますか?

4

1 に答える 1

1

疑いはPDFiTextSharpに置きます。&#160;それどころか、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
            );
        }
    }
}

ここに画像の説明を入力

したがって、より可能性の高いケースはHTML、パーサーに送信された が としてエンコードさ&#160;れていること&amp;#160;です。簡単な修正は、パーサーに送られるに、エンコードされた HTML エンティティを置き換えることです。

HTML = HTML.Replace("&amp;#160;", "\u00A0");
于 2016-03-09T02:42:38.203 に答える