我正在使用JTidy和Flying Saucer从HTML创建PDF文档。在将文档传递给Flying Saucer之前,我使用JTidy确保所有元素都是干净且格式正确的。
我遇到了一个我无法弄清楚的JTidy问题。有一个“p”元素有很多文本,它是从数据库填充并使用空格格式化。在HTML中,它使用“white-space:pre-line”样式显示。所以它显示了这样的东西
<p>
Section 1:
A lot of text from section 1 that goes on and on for quite some time.
Section 2 :
....
</p>
这在浏览器中正确显示,我们根据空白区域划分了部分。但是在运行JTidy之后,上面的代码变成了
<p> Section 1: A lot of text from section 1
that goes on and on for quite some time.
Section 2 : ....
</p>
基本上它只是将所有文本包装成一个大的部分,只有一定数量的字符,然后换行到下一行。因此,由于我使用的是pre-line,因此生成的PDF中的输出是错误的。我查看了http://jtidy.sourceforge.net/apidocs/org/w3c/tidy/Tidy.html的文档,但未能找到解决方案。到目前为止,我的Java代码看起来像这样
Tidy tidy = new Tidy();
tidy.setShowWarnings(true);
tidy.setInputEncoding("UTF-8");
tidy.setOutputEncoding("UTF-8");
tidy.setXHTML(true);
tidy.setMakeClean(true);
我尝试过使用
tidy.setWrapSection(false);
但这并没有改变输出。任何帮助,将不胜感激。
答案 0 :(得分:0)
JTidy的默认包裹边距很小。为了避免包裹完全设置为0
tidy.setWraplen(0);