2016-04-19 1 views
1

私のアプリケーションではpdfをレンダリングするためにflyingsaucerを使用しています。より多くのコンテンツを含む行がある場合、1ページの値をレンダリングする際に問題が発生します。ここで-fs-keep-with-inline:keepを使用した場合の2番目のページへのカラム値のレンダリング

は私のHTMLコードは

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<style type="text/css" media="all"> 
.pcs-itemtable { 
-fs-table-paginate: paginate; 
-fs-keep-with-inline: keep; 
} 
.pcs-itemtable-header { 
font-size: 9pt; 
color: #ffffff; 
background-color: #3c3d3a; 
} 
.pcs-item-row { 
font-size: 8pt; 
border-bottom: 1px solid #e3e3e3; 
background-color: #ffffff; 
color: #000000; 
} 
.pcs-item-desc { 
    color: #727272; 
    font-size: 8pt; 
} 
</style> 
</head> 
<body> 
<table cellpadding="0" cellspacing="0" border="0" class="pcs-itemtable" style="width:100%;margin-top:20px;table-layout:fixed;"> 
<thead> 
    <tr style="height:32px;"> 
     <td class="pcs-itemtable-header" style="padding:5px 0 5px 5px;text-align: center;word-wrap: break-word;width: 5%;"> 
      # 
     </td> 
       <td class="pcs-itemtable-header" style="padding:5px 10px 5px 20px;word-wrap: break-word;"> 
      Item &amp; Description 
     </td> 
     <td class="pcs-itemtable-header" style="padding:5px 10px 5px 5px;word-wrap: break-word;width: 11%;" align="right"> 
      Qty 
     </td> 
     <td class="pcs-itemtable-header" style="padding:5px 10px 5px 5px;word-wrap: break-word;width: 11%;" align="right"> 
      Rate 
     </td> 
     <td class="pcs-itemtable-header" style="padding:5px 10px 5px 5px;word-wrap: break-word;width:120px;" align="right"> 
       Amount 
     </td> 
    </tr> 
</thead> 
<tbody class="itemBody"> 
<tr> 
     <td class="pcs-item-row" style="padding: 10px 0 10px 5px;text-align: center;word-wrap: break-word;" valign="top"> 
      2 
     </td> 

     <td class="pcs-item-row" style="padding: 10px 0px 10px 20px;" valign="top"> 
         <div > 
         <div > 
      <span id="tmp_item_name" style="word-wrap: break-word;">Item With Unit</span><br /> 

      <span id="tmp_item_description" class="pcs-item-desc" style="white-space: pre-wrap;word-wrap: break-word;">Siamo spiacenti di informarvi che Zoho Invoice non ha un&#39;opzione per&#10;stampare bolle di consegna prima di creare una fattura e modificare&#10;modello di bolla di consegna. Spiacente di deluderti.&#10;Vorremmo suggerire una soluzione per la creazione di modelli&#10;preferiti in Zoho Invoice. È possibile personalizzare il modello stime&#10;rinominando il titolo del documento.&#10;Per fare questo, si prega di seguire le istruzioni trovate qui di seguit&#10;Siamo spiacenti di informarvi che Zoho Invoice non ha un&#39;opzione per&#10;stampare bolle di consegna prima di creare una fattura e modificare&#10;modello di bolla di consegna. Spiacente di deluderti.&#10;Vorremmo suggerire una soluzione per la creazione di modelli&#10;preferiti in Zoho Invoice. È possibile personalizzare il modello stime&#10;rinominando il titolo del documento.&#10;Per fare questo, si prega di seguire le istruzioni trovate qui di seguito.&#10;Siamo spiacenti di informarvi che Zoho Invoice non ha un&#39;opzione per&#10;stampare bolle di consegna prima di creare una fattura e modificare&#10;modello di bolla di consegna. Spiacente di deluderti.&#10;Vorremmo suggerire una soluzione per la creazione di modelli&#10;preferiti in Zoho Invoice. È possibile personalizzare il modello stime&#10;rinominando il titolo del documento.&#10;Per fare questo, si prega di seguire le istruzioni trovate qui di seguito&#10;Siamo spiacenti di informarvi che Zoho Invoice non ha un&#39;opzione per&#10;stampare bolle di consegna prima di creare una fattura e modificare&#10;modello di bolla di consegna. Spiacente di deluderti.&#10;Vorremmo suggerire una soluzione per la creazione di modelli&#10;preferiti in Zoho Invoice. È possibile personalizzare il modello stime&#10;rinominando il titolo del documento.&#10;Per fare questo, si prega di seguire le istruzioni trovate qui di seguito.</span> 
         </div> 
         </div> 
     </td> 
      <td class="pcs-item-row" style="padding: 10px 10px 5px 10px;text-align:right;word-wrap: break-word;" valign="top"> 
       <span id="tmp_item_qty">1.00</span> 
       <div class="pcs-item-desc">test unit</div> 
      </td> 
      <td class="pcs-item-row" style="padding: 10px 10px 5px 10px;text-align:right;word-wrap: break-word; " valign="top"> 
       <span id="tmp_item_rate">500.00</span> 
      </td> 
     <td class="pcs-item-row" style="text-align:right;padding: 10px 10px 10px 5px;word-wrap: break-word;" valign="top"> 
      <span id="tmp_item_amount">500.00</span> 
     </td> 
     </tr> 
    </tbody> 
</table> 

私は

-fsは、キープして、インラインスタイルを使用している:に示したように、私は結果を得る を保ちます画像 enter image description here

レート列の値が2ページ目に表示されます。第二列の前に作成

私は-fs-キープして、インラインスタイルを削除すると、私は

enter image description here

この結果を得るスペース。

私は何が起こっているのか手がかりがありません。私はflyingsaucerの9.0.4バージョンを使用しています。助けてください。

答えて

0

問題を再現できませんでした。ここで

は、私が使用したHTMLです:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<style type="text/css" media="all"> 
.pcs-itemtable { 
    -fs-table-paginate: paginate; 
    /* -fs-keep-with-inline: keep;*/ 
} 

.pcs-itemtable-header { 
    font-size: 9pt; 
    color: #ffffff; 
    background-color: #3c3d3a; 
} 

.pcs-item-row { 
    font-size: 8pt; 
    border-bottom: 1px solid #e3e3e3; 
    background-color: #ffffff; 
    color: #000000; 
} 

.pcs-item-desc { 
    color: #727272; 
    font-size: 8pt; 
} 
</style> 
</head> 
<body> 
    <table cellpadding="0" cellspacing="0" border="0" class="pcs-itemtable" style="width: 100%; margin-top: 20px; table-layout: fixed;"> 
    <thead> 
     <tr style="height: 32px;"> 
     <td class="pcs-itemtable-header" style="padding: 5px 0 5px 5px; text-align: center; word-wrap: break-word; width: 5%;">#</td> 
     <td class="pcs-itemtable-header" style="padding: 5px 10px 5px 20px; word-wrap: break-word;">Item &amp; Description</td> 
     <td class="pcs-itemtable-header" style="padding: 5px 10px 5px 5px; word-wrap: break-word; width: 11%;" align="right">Qty</td> 
     <td class="pcs-itemtable-header" style="padding: 5px 10px 5px 5px; word-wrap: break-word; width: 11%;" align="right">Rate</td> 
     <td class="pcs-itemtable-header" style="padding: 5px 10px 5px 5px; word-wrap: break-word; width: 120px;" align="right">Amount</td> 
     </tr> 
    </thead> 
    <tbody class="itemBody"> 
     <tr><td colspan="5" style="height: 215mm">FILLER</td></tr> 
     <tr> 
     <td class="pcs-item-row" style="padding: 10px 0 10px 5px; text-align: center; word-wrap: break-word;" valign="top">2</td> 
     <td class="pcs-item-row" style="padding: 10px 0px 10px 20px;" valign="top"> 
      <div> 
      <div> 
       <span id="tmp_item_name" style="word-wrap: break-word;">Item With Unit</span><br /> <span id="tmp_item_description" class="pcs-item-desc" style="white-space: pre-wrap; word-wrap: break-word;">Siamo spiacenti di informarvi che Zoho Invoice non ha un&#39;opzione per&#10;stampare bolle di consegna prima di creare una fattura e modificare&#10;modello di bolla di consegna. Spiacente di deluderti.&#10;Vorremmo suggerire una soluzione per la creazione di modelli&#10;preferiti in Zoho Invoice. È possibile personalizzare il modello stime&#10;rinominando il titolo del documento.&#10;Per fare questo, si prega di seguire le istruzioni trovate qui di seguit&#10;Siamo spiacenti di informarvi che Zoho Invoice non ha un&#39;opzione per&#10;stampare bolle di consegna prima di creare 
       una fattura e modificare&#10;modello di bolla di consegna. Spiacente di deluderti.&#10;Vorremmo suggerire una soluzione per la creazione di modelli&#10;preferiti in Zoho Invoice. È possibile personalizzare il modello stime&#10;rinominando il titolo del documento.&#10;Per fare questo, si prega di seguire le istruzioni trovate qui di seguito.&#10;Siamo spiacenti di informarvi che Zoho Invoice non ha un&#39;opzione per&#10;stampare bolle di consegna prima di creare una fattura e modificare&#10;modello di bolla di consegna. Spiacente di deluderti.&#10;Vorremmo suggerire una soluzione per la creazione di modelli&#10;preferiti in Zoho Invoice. È possibile personalizzare il modello stime&#10;rinominando il titolo del documento.&#10;Per fare questo, si prega di seguire le 
       istruzioni trovate qui di seguito&#10;Siamo spiacenti di informarvi che Zoho Invoice non ha un&#39;opzione per&#10;stampare bolle di consegna prima di creare una fattura e modificare&#10;modello di bolla di consegna. Spiacente di deluderti.&#10;Vorremmo suggerire una soluzione per la creazione di modelli&#10;preferiti in Zoho Invoice. È possibile personalizzare il modello stime&#10;rinominando il titolo del documento.&#10;Per fare questo, si prega di seguire le istruzioni trovate qui di seguito.</span> 
      </div> 
      </div> 
     </td> 
     <td class="pcs-item-row" style="padding: 10px 10px 5px 10px; text-align: right; word-wrap: break-word;" valign="top"><span id="tmp_item_qty">1.00</span> 
      <div class="pcs-item-desc">test unit</div></td> 
     <td class="pcs-item-row" style="padding: 10px 10px 5px 10px; text-align: right; word-wrap: break-word;" valign="top"><span id="tmp_item_rate">500.00</span></td> 
     <td class="pcs-item-row" style="text-align: right; padding: 10px 10px 10px 5px; word-wrap: break-word;" valign="top"><span id="tmp_item_amount">500.00</span></td> 
     </tr> 
    </tbody> 
    </table> 
</body> 
</html> 

とJavaコード:

import java.io.ByteArrayOutputStream; 
import java.io.FileOutputStream; 
import java.io.OutputStream; 
import java.nio.charset.StandardCharsets; 
import java.nio.file.Files; 
import java.nio.file.Paths; 

import org.xhtmlrenderer.pdf.ITextRenderer; 

public class TestPdf { 
    public static void main(String[] args) throws Exception { 
     String html = new String(Files.readAllBytes(Paths.get("so.html")), StandardCharsets.UTF_8); 
     ByteArrayOutputStream output = new ByteArrayOutputStream(); 

     ITextRenderer renderer = new ITextRenderer(); 
     renderer.setDocumentFromString(html); 
     renderer.layout(); 
     renderer.createPDF(output); 

     OutputStream fos = new FileOutputStream ("so.pdf"); 
     output.writeTo(fos); 
    } 
} 

以下のような結果が、正しいです:fyling-受け皿でテスト enter image description here

9.0.4および9.0.9となり、同じ結果が得られました。

+0

これではわかりません。私は今日でもそれを再現することができます。 – John

+0

申し訳ありませんが、私はあなたを助けることができませんでしたが、問題の原因がわかりません。私のHTMLサンプルで試しましたか?それはあなたのものに基づいている、私はちょうどあなたのケースをシミュレートするためにフィラーを追加するだけで、違いがあります。 – obourgain

関連する問題