java - XMLWorker (iText) 不会在 PDF 结果中分页

标签 java itext xmlworker

世界 我使用 XMLWorker (5.5.6) 将包含阿拉伯字符的 XHTML 页面转换为 PDF。一切正常,但“分页前”不起作用! 这是我的 html 页面:

<!DOCTYPE html>
<html>
    <head>
        <title>Déclaration</title>
        <style type="text/css" >
            table {
                page-break-before: always;
            }
        </style>
    </head>
<body style="font-family: Noto Naskh Arabic">
<p style="page-break-before: always;text-align: center; font-size: 24px; font-family: Noto Naskh Arabic">الجمهورية</p>
<div style="page-break-before: always;text-align: center; font-size: 18px; font-family: Verdana" >REPUBLIQUE </div>
<div dir="rtl" style="page-break-before: always;text-align: center; font-size: 24px; font-family: Noto Naskh Arabic" >تصريــــح    بالممتلكـــــات</div>
<p style="font-family: Verdana">DECLARATION </p>

<table width="100%" style="page-break-before: always" >
	<tr><td>Code Willaya </td><td></td><td>رمز الولاية</td></tr>
	<tr><td>Code de la commune </td><td></td><td>رمز البلدية</td></tr>
</table>

还有使用的 Java 代码 http://developers.itextpdf.com/2078

最佳答案

page-break-before 样式属性仅在 XML worker 生成的元素直接添加到 Document 时才受支持,如果它们被添加到表中则不支持像你的例子一样的细胞。不幸的是,RTL 仅在表格单元格内受支持。

虽然示例添加了元素本身,但可以对其进行改进以正确解释分页标记,只需增强原始循环即可

PdfPTable table = new PdfPTable(1);
PdfPCell cell = new PdfPCell();
cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
for (Element e : elements) {
    cell.addElement(e);
}
table.addCell(cell);
document.add(table);

像这样:

PdfPTable table = new PdfPTable(1);
PdfPCell cell = new PdfPCell();
cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
for (Element e : elements) {
    if (e == Chunk.NEXTPAGE)
    {
        table.addCell(cell);
        document.add(table);
        document.newPage();
        table = new PdfPTable(1);
        cell = new PdfPCell();
    }
    else
    {
        cell.addElement(e);
    }
}
table.addCell(cell);
document.add(table);

(您可能应该添加一些检查以防止在此处添加空表。)


顺便说一下,为了让这个示例处理您的示例,我不得不注释掉您的标题元素。但这可能是您的 XMLWorker 版本 5.5.6 和我在这里使用的版本 5.5.11-SNAPSHOT 之间的差异。

关于java - XMLWorker (iText) 不会在 PDF 结果中分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42412002/

相关文章:

javascript - 在表单表中设置隐藏输入值

java - 如何从 php 执行 java 函数?

java - 带有表格读取行的android表格布局

java - 如何使用java打印PDF的一页?

c# - 如何使用 iTextSharp 将 HTML 转换为 PDF

java - PdfPTable元素: Japanese characters are not being displayed

java 3D绘图

java - XMLWorkerHelper 在 Java 中给出错误

asp.net - 如何从相对路径获取图像

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