如何避免在使用 pdfHtml 生成的 PDF 中添加不需要的白色 space?
How to avoid unwanted white space getting add in PDF generated using pdfHtml?
我正在使用 iText 的 pdfHtml 从 HTML 生成 PDF,但我可以看到在生成的 PDF 的两个元素之间添加了很多空格。
请看下面HTML和PDF
下图中突出显示的部分显示了两行之间不需要的空白。
.
以下是来源HTML内容。
<html>
<head></head>
<body>
<meta name="generator" content="HTML Tidy for Java (vers. 2009-12-01), see jtidy.sourceforge.net">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
* { font-family: 'Arial Unicode MS'; }
</style>
<title></title>
<img border="0" style="margin-left: 370px;" width="340.6" src="file:Docs_a0s29000000qTxeAAE/01529000000ITQ8.PNG">
<div style="font-size: 25px; font-family: Roboto, arial, sans-serif;">
สวัสดีชาวโลก!
</div>
<div style="font-size: 25px; font-family: Roboto, arial, sans-serif;">
นี่คือเทมเพลตการปฏิเสธความรับผิด!
</div>
<ul>
<li>BioConnect Version 1 - Capture</li>
</ul>
<p> <span style="font-size: 25px; font-family: Roboto, arial, sans-serif;">嘿!这是结算模板</span> </p>
<div style="margin-right: 500px;">
中文1
<img border="0" src="null" style="margin-right: 500px;" width="112.5">
<br>中文2
<br>中文3
<br>中文4
<br>中文5
<br>中文6
</div>
</body>
</html>
这是 HTML 在浏览器中的样子。
如有任何意见/解决方案,我们将不胜感激。谢谢
如果我理解正确,你抱怨 iText 用于 html.
的前导(行间默认 space)
与默认情况下的浏览器相比,iText 考虑存储在字体文件中的升序和降序来计算行之间的行距。对于 iText 用来处理您的 html 的字体来说,它们似乎相当大,这导致了问题。
要克服它,可以使用 line-height 属性。我相信将它的值设置为 1em 会对你有所帮助。
我已将下一个 css 样式规则添加到您的 html 文件中:
div {
line-height: 1em;
}
然后我使用了最新的 iText7(itextcore 和 html2pdf 都使用了 7.1.5-SNAPSHOT)并在更改前后处理了您的 html。现在请看结果
新html:https://pastebin.com/tFzdViyx
之前:
之后:
比较:
我正在使用 iText 的 pdfHtml 从 HTML 生成 PDF,但我可以看到在生成的 PDF 的两个元素之间添加了很多空格。
请看下面HTML和PDF
下图中突出显示的部分显示了两行之间不需要的空白。
以下是来源HTML内容。
<html>
<head></head>
<body>
<meta name="generator" content="HTML Tidy for Java (vers. 2009-12-01), see jtidy.sourceforge.net">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
* { font-family: 'Arial Unicode MS'; }
</style>
<title></title>
<img border="0" style="margin-left: 370px;" width="340.6" src="file:Docs_a0s29000000qTxeAAE/01529000000ITQ8.PNG">
<div style="font-size: 25px; font-family: Roboto, arial, sans-serif;">
สวัสดีชาวโลก!
</div>
<div style="font-size: 25px; font-family: Roboto, arial, sans-serif;">
นี่คือเทมเพลตการปฏิเสธความรับผิด!
</div>
<ul>
<li>BioConnect Version 1 - Capture</li>
</ul>
<p> <span style="font-size: 25px; font-family: Roboto, arial, sans-serif;">嘿!这是结算模板</span> </p>
<div style="margin-right: 500px;">
中文1
<img border="0" src="null" style="margin-right: 500px;" width="112.5">
<br>中文2
<br>中文3
<br>中文4
<br>中文5
<br>中文6
</div>
</body>
</html>
这是 HTML 在浏览器中的样子。
如有任何意见/解决方案,我们将不胜感激。谢谢
如果我理解正确,你抱怨 iText 用于 html.
的前导(行间默认 space)与默认情况下的浏览器相比,iText 考虑存储在字体文件中的升序和降序来计算行之间的行距。对于 iText 用来处理您的 html 的字体来说,它们似乎相当大,这导致了问题。
要克服它,可以使用 line-height 属性。我相信将它的值设置为 1em 会对你有所帮助。
我已将下一个 css 样式规则添加到您的 html 文件中:
div {
line-height: 1em;
}
然后我使用了最新的 iText7(itextcore 和 html2pdf 都使用了 7.1.5-SNAPSHOT)并在更改前后处理了您的 html。现在请看结果
新html:https://pastebin.com/tFzdViyx
之前:
之后:
比较: