iText 未生成预期的 PDF 格式

iText not generating expected PDF format

我正在使用 iText 生成 PDF,下面是代码片段。

String template="";//content given below for more readability
OutputStream file = new FileOutputStream(new File("D:\Test.pdf"));
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, file);
document.open();
InputStream is = new ByteArrayInputStream(k.getBytes());
XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);

我的模板是这样的:

<html>
<head>
    <style>.col{padding:3px 20px 3px 20px}</style>
</head>
<body style="font-family:tahoma">
    <div style="background:rgb(230,230,230); padding:5px ;border:1px solid black;">
    <b style="color:rgb(51,153,255)">Sample header</b>
    <img style="float:right" height="25px" width= "80px" src="resources/images/itext.png" />
    </div>
    <br />
    <table border='0' style='border-collapse: collapse;'>
    <tr>
    <td class="col">String 1</td>
    <td class="col">: 1234354545</td> 
    </tr>
    <tr>
    <td class="col">String 2</td>
    <td class="col">: rere</td> 
    </tr>
    <tr>
    <td class="col">String 3</td>
    <td class="col">: ureuiu</td> 
    </tr>
    <tr>
    <td class="col">Date</td>
    <td class="col">: dfdfjkdjk</td> 
    </tr>
    </table>
    <br />
    <br />
    <br />
    <hr/>
    <br />
    Contact us
</body>
</html>

在浏览器中看起来像给定的图像

但是在 PDF 中我得到了这样的东西

我找不到解决方法。

请看ParseHtml12 and the corresponding result: test2015-11.pdf

你的结果有什么不同?

在您的结果中,您使用的是 <br /> 标签,这会导致换行操作考虑到 leading。当您开始一个新页面时,行距为 0。一旦您有一些正常的段落,其中第一次定义了行距,行距就会发生变化。

在你的例子中,前导的定义永远不会发生,所以你必须自己做。例如:

PdfWriter writer = PdfWriter.getInstance(document, file);
writer.setInitialLeading(12);

现在当您使用 <br /> 标签时,前导的值将导致空行 12 个用户单位。

关于徽标的对齐方式:我建议您将该徽标放在双列中table,其中文本添加到第一列,徽标添加到第二列。