2017-06-19 5 views
0

私はadfプロジェクトを作成し、itextpdf 5.1.3を使用してレポートを生成しています。 例: - 私のテーブルの顧客は3000行あります。私のjspxページに顧客テーブル&のボタンがあります。ファイルダウンローダのリスナーがあります。私は単にレポートを呼び出しています。 最初の50行(最大4ページ)のレポートのみが生成されます。 残りの行がレポートに表示されないのはなぜですか?itextpdfの最大ページサイズ

private void generatePDFFile(FacesContext facesContext, java.io.OutputStream outputStream) { 
    try { 
     DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry(); 
     DCIteratorBinding iterBind1 = (DCIteratorBinding)dcBindings.get("CustomerView1Iterator"); 

     Document document = new Document(); 
     PdfWriter.getInstance(document, new FileOutputStream(FILE)); \\file path local disk D:\mywork\customer.pdf   
     document.open(); 
     Row[] rows= iterBind1.getAllRowsInRange(); 
     for(Row row:rows){ 
     custcode = (String) row.getAttribute("CustomerCode"); 
     custname = (String) row.getAttribute("CustomerNameE"); 
     addgroup(document); 
     } 
     document.close(); 
     facesContext = facesContext.getCurrentInstance(); 
     ServletContext context = (ServletContext)facesContext.getExternalContext().getContext(); 
     File file = new File(FILE); 
     FileInputStream fileInputStream; 
     byte[] b; 
     System.out.println(file.getCanonicalPath()); 
     System.out.println(file.getAbsolutePath()); 
     fileInputStream = new FileInputStream(file); 
     int n = fileInputStream.available(); 
     while (n > 0) { 
      b = new byte[n]; 
      //b = new byte[8192]; 
      int result = fileInputStream.read(b); 
      outputStream.write(b, 0, b.length); 
      if (result == -1) 
       break; 
     } 
     outputStream.flush(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
private static void addgroup(Document document) throws DocumentException{ 

    Paragraph preface1 = new Paragraph(); 
    Paragraph preface2 = new Paragraph(); 
    preface1.add(new Chunk("\n")); 
    preface1.add(new Chunk("Customer : "+custcode+"  "+custname,BlueFont)); 
    preface1.add(new Chunk("\n")); 
    document.add(preface1); 
    document.add(preface2); 

} 
+2

どうか良い質問です。あなたはそれを改善できますか? –

+0

こんにちはブルーノ、 私のテーブルは3000行あります。 pdf世代を呼び出すときは最初の50行だけが来ます。なぜですか? 以下は私のコードです.... –

+1

あなたのコードは以下の通りではありません。何千もの開発者がiTextを使用してPDFを作成し、3000行以上の行を作成しています。なぜアプリケーションが50行しかレンダリングしないのか、私に尋ねるならば、答えは簡単です。何か間違っているからです。あなたは何を間違っているのですか?おそらく、あなたはほぼ6歳のiTextのバージョンを使用すべきではないでしょう。あなたはアップグレードを試みましたか? –

答えて

0

PDFドキュメント内のページの最大サイズは14,400で、14,400ユーザー単位です。ブログ投稿Help, I only see blank pages in my PDFを参照してください。これはiTextによって導入された制限ではありません。 Adobe ReaderなどのPDFビューアには制限があります。他の視聴者(Apple Previewなど)は、大きなページを含むPDFを表示することに問題はありません。

これはあなたの投稿の件名に質問に答えます。

あなたの投稿の本文には全く異なる質問があります。たぶん、あなたはページサイズについてではなく、ファイルサイズについて尋ねているかもしれません。その質問は過去にも答えられています。

  • PDF 1.5、約10ギガバイトであるよりも古いバージョンでPDFの最大サイズを:私はその答えを要約することを許可するWhat is the size limit of pdf file?

    を参照してください。

  • 圧縮された相互参照ストリームを使用するPDFバージョン1.5以上のPDFの最大サイズは、PDFを処理するソフトウェアの制限によってのみ決まります。
  • 5.3より前のiTextバージョンで作成されたPDFの最大サイズは2ギガバイトです。 iTextバージョン5.3以降で作成されるPDFの最大サイズは1テラバイトです。

iText 5.1.3を使用しているので、2 GBのPDFを作成できます。 2011年11月より新しいバージョンではなく、iTextのバージョンを使用している理由はわかりませんが、3000行を含むテーブルをPDFに入れても大丈夫な理由はありません2 GBytesとして

あなたのコードは本当に悪いです。残念ながら、私たちにあなたのコードを示すことはありません。 Large Tablesの作成方法に関するドキュメントをお読みになりましたか?

私はあなたが言うの部分にコメントすることはできません。私のJSPXページで

&ボタンがあり、ファイルダウンローダのリスナーを持つ顧客テーブルを持っている私は単純にレポートを呼んでいます。

これは、あなたの質問の文脈においては関連していないようです。

関連する問題