使用ITextRenderer将html表转换为PDF的问题

时间:2016-01-22 10:34:48

标签: java html pdf-generation

我们的客户在html中有一个模板,他希望用数据填充并转换为PDF。一切正常,问题只有模板,它有两列。该模板被解释为带有两个单元格的html <table>,每个单元格包含大量文本(大约2页,它是双语合同,一列是捷克语,另一列是英语)。我无法阻止客户以这种非常愚蠢的方式创建模板。

<table>
    <tbody>
    <tr>
     <td style="vertical-align: top;">
              long long text inside one <div></div> tag
            </td>
            <td style="vertical-align: top;">
              long long text inside one <div></div> tag
            </td>
        </tr>
     </tbody>
</table>

some other div

当此模板转换为PDF时,句子中间的列中会有大的空格,即使内容可以放在一页中。

Html内容很好,问题会出现在渲染的某个地方。 我们使用带有html内容的String

String content = html content;
byte[] bytes = content.getBytes("UTF-8);
InputStream htmlIs = new ByteArrayInputStream(bytes);
Tidy tidy = new Tidy();
tidy.setInputEncoding("UTF-8");
tidy.setOutputEncoding("UTF-8");
tidy.setXHTML(true);
Document xhtmlDoc = tidy.parseDOM(htmlIs, null);

// to pdf
ITextRenderer renderer = new ITextRenderer();
... get fonts
renderer.setDocument(xhtmlDoc, null);
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
    renderer.layout();
    renderer.createPDF(baos);
    return baos;
}

0 个答案:

没有答案