世界 我使用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代码
答案 0 :(得分:4)
page-break-before
时,才支持 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之间存在差异。