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,其中文本添加到第一列,徽标添加到第二列。
我正在使用 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,其中文本添加到第一列,徽标添加到第二列。