2017-02-23 5 views
0

world XMLWorker(5.5.6)を使用して、アラビア文字を含むXHTMLページをPDFに変換しました。すべて正常に動作しますが、 "page-break-before"は機能しません。 は、ここに私のhtmlページです:XMLWorker(iText)はPDFの結果でページを中断しません

<!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" > 
 
\t <tr><td>Code Willaya </td><td></td><td>رمز الولاية</td></tr> 
 
\t <tr><td>Code de la commune </td><td></td><td>رمز البلدية</td></tr> 
 
</table>

そしてXMLワーカーによって生成された要素は、直接に追加された場合http://developers.itextpdf.com/2078

+0

'page-break-before'スタイルの属性は、XMLワーカーによって生成された要素が' Document'に直接追加された場合にのみサポートされます。残念ながら、RTLはテーブルセル内でのみサポートされています。 – mkl

答えて

3

page-break-beforeスタイル属性のみがサポートされて使用されるJavaコードがあります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との違いかもしれません。

関連する問題