java - 转换为 PDF 时 iText XMLWorker 表异常

标签 java html pdf itext xmlworker

好的,基本上我一直在尝试使用 Java 中的 iText 的 XMLWorker 将 HTML 文件转换为 PDF。因为直接从 HTML 转换存在问题,所以我一直在使用 JTidy 先将文件转换为 XHTML(效果很好),但是当我尝试将其转换为 PDF 时,它会把我的布局搞得一团糟。
同样,HTML 和 XHTML 文件(在浏览器中查看时它们是相同的)看起来完全符合我想要的方式,但 PDF 文件被搞砸了。 这是 HTML 代码,显然我用“Bla”替换了表格中包含的所有信息:

<!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>

现在,当在转换后的 PDF 中查看时,第一个表格从屏幕边缘向右延伸,这显然不是故意的。任何想法为什么会发生这种情况?

最佳答案

尝试将表 t0a 中第一列的列宽显式设置为 30%。

关于java - 转换为 PDF 时 iText XMLWorker 表异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39103272/

相关文章:

php - 如何在tcpdf中添加手动分页符

Java - JDBC 驱动程序和 MySQL 数据库连接问题

javascript - Jquery Range Slider - 根据输入值显示字符串文本 - Javascript 数组不工作

android ndk 使用 mupdf 库

javascript - PHP 当用户选中复选框时清除文本框

javascript - 如何通过用户(输入字段)更改函数内部全局变量的值

python - PDF 文件方向检测

java - 通过 JSch shell 的多个命令

java - 如何区分客户端/服务器应用程序中的多个客户端

java - 如何通过 KafkaAdminClient 删除主题配置