Java iText XMLWorker表转换为PDF时的怪异性
好的,基本上我一直在尝试使用iText的Java中的XMLWorker将HTML文件转换为PDF。由于直接从HTML转换存在问题,我一直在使用JTidy先将文件转换为XHTML(工作起来很有魅力),但当我尝试将其转换为PDF时,会把我的布局弄得一团糟。Java iText XMLWorker表转换为PDF时的怪异性,java,html,pdf,itext,xmlworker,Java,Html,Pdf,Itext,Xmlworker,好的,基本上我一直在尝试使用iText的Java中的XMLWorker将HTML文件转换为PDF。由于直接从HTML转换存在问题,我一直在使用JTidy先将文件转换为XHTML(工作起来很有魅力),但当我尝试将其转换为PDF时,会把我的布局弄得一团糟。 同样,HTML和XHTML文件(在浏览器中查看时是相同的)的外观与我所希望的完全相同,但PDF文件有问题。 这是HTML代码,显然我用“Bla”替换了表中包含的所有信息: 布拉 表#t0a{页边空白顶部:0.8cm;宽度:90%;字体大小:13
同样,HTML和XHTML文件(在浏览器中查看时是相同的)的外观与我所希望的完全相同,但PDF文件有问题。 这是HTML代码,显然我用“Bla”替换了表中包含的所有信息:
布拉
表#t0a{页边空白顶部:0.8cm;宽度:90%;字体大小:13px;边框折叠:折叠;}
表#t0a td{填充:4px;边框:1px实心;}
表#t0a td.span{宽度:70%;}
表#t0a td.long{宽度:32%;}
表#t0a td.short{宽度:6%;}
表格#t0b{页边距顶部:0.8cm;页边距底部:0.8cm;宽度:90%;字体大小:13px;表格布局:固定;边框折叠:折叠;}
表#t0b td{填充:4px;边框:1px实心;宽度:20%;}
表#t0b th{背景色:#bbb;填充:4px;边框:1px实心;}
表#t0b th:n子项(2){背景色:#bbb;填充:4px;边框:1px实心;宽度:20%;}
表#t1a{页边空白顶部:0.8cm;宽度:90%;字体大小:13px;边框折叠:折叠;}
表#t1a td{填充:4px;边框:1px实心;}
表#t1a td.span{宽度:70%;}
表#t1a td.long{宽度:32%;}
表#t1a td.short{宽度:6%;}
表#t1b{页边距顶部:0.8cm;页边距底部:0.8cm;宽度:90%;字体大小:13px;表格布局:固定;边框折叠:折叠;}
表#t1b td{填充:4px;边框:1px实心;宽度:20%;}
表#t1b th{背景色:#bbb;填充:4px;边框:1px实心;}
表#t1b th:n子项(2){背景色:#bbb;填充:4px;边框:1px实心;宽度:20%;}
布拉布拉
布拉布拉
布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉
布拉布拉
BlaBla
布拉布拉
BlaBla
布拉布拉
Bla
Bla
Bla
Bla
Bla
Bla
布拉
布拉布拉
布拉布拉
布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉
布拉布拉
BlaBla
布拉布拉
BlaBla
布拉布拉
Bla
Bla
Bla
Bla
Bla
Bla
0
现在,当在转换后的PDF中查看时,第一个表格从屏幕边缘向右延伸,这显然不是有意的。你知道为什么会这样吗 尝试显式地将表t0a中第一列的列宽设置为30% 事实证明iText与CSS并不完全兼容。 结果用飞碟代替了它,它成功了
<!DOCTYPE html><html lang="en">
<head><meta charset="UTF-8"><title>Bla</title>
<style>
table#t0a {margin-top: 0.8cm; width: 90%; font-size: 13px; border-collapse: collapse;}
table#t0a td {padding: 4px; border: 1px solid;}
table#t0a td.span {width: 70%;}
table#t0a td.long {width: 32%;}
table#t0a td.short {width: 6%;}
table#t0b {margin-top: 0.8cm; margin-bottom: 0.8cm; width: 90%; font-size: 13px; table-layout: fixed; border-collapse: collapse;}
table#t0b td {padding: 4px; border: 1px solid; width: 20%;}
table#t0b th {background-color: #bbb; padding: 4px; border: 1px solid;}
table#t0b th:nth-child(2) {background-color: #bbb; padding: 4px; border: 1px solid; width: 20%;}
table#t1a {margin-top: 0.8cm; width: 90%; font-size: 13px; border-collapse: collapse;}
table#t1a td {padding: 4px; border: 1px solid;}
table#t1a td.span {width: 70%;}
table#t1a td.long {width: 32%;}
table#t1a td.short {width: 6%;}
table#t1b {margin-top: 0.8cm; margin-bottom: 0.8cm; width: 90%; font-size: 13px; table-layout: fixed; border-collapse: collapse;}
table#t1b td {padding: 4px; border: 1px solid; width: 20%;}
table#t1b th {background-color: #bbb; padding: 4px; border: 1px solid;}
table#t1b th:nth-child(2) {background-color: #bbb; padding: 4px; border: 1px solid; width: 20%;}
</style>
</head>
<body>
<div id="container">
<div class="tables0" style="margin-left: 0.93cm">
<table id="t0a" cellspacing="0">
<tr><td>Bla</td><td class="span" colspan="3">Bla</td></tr>
<tr><td>Bla</td><td class="span" colspan="3">Bla</td></tr>
<tr><td>Bla</td><td class="long">Bla</td><td class="short">Bla</td><td class="long">Bla</td></tr>
</table>
<table id="t0b" cellspacing="0">
<tr><th><b>Bla</b></th><th>Bla</th></tr>
<tr><td><p>Bla</p></td><td>Bla</td></tr>
<tr><th><b>Bla</b></th><th>Bla</th></tr>
<tr><td><p>Bla</p></td><td>Bla</td></tr>
<tr><th><b>Bla</b></th><th>Bla</th></tr>
<tr><td>
<b>Bla</b><br>Bla<br>
<b>Bla</b><br>Bla<br>
<b>Bla</b><br>Bla<br>
</td><td>Bla</td></tr>
</table>
</div>
<hr style="height:3px;border:none;color:#000;background-color:#000;" />
<div class="tables1" style="margin-left: 0.93cm">
<table id="t1a" cellspacing="0">
<tr><td>Bla</td><td class="span" colspan="3">Bla</td></tr>
<tr><td>Bla</td><td class="span" colspan="3">Bla</td></tr>
<tr><td>Bla</td><td class="long">Bla</td><td class="short">Bla</td><td class="long">Bla</td></tr>
</table>
<table id="t1b" cellspacing="0">
<tr><th><b>Bla</b></th><th>Bla</th></tr>
<tr><td><p>Bla</p></td><td>Bla</td></tr>
<tr><th><b>Bla</b></th><th>Bla</th></tr>
<tr><td><p>Bla</p></td><td>Bla</td></tr>
<tr><th><b>Bla</b></th><th>Bla</th></tr>
<tr><td>
<b>Bla</b><br>Bla<br>
<b>Bla</b><br>Bla<br>
<b>Bla</b><br>Bla<br>
</td><td>0</td></tr>
</table>
</div>
</div>
</body></html>