2011-07-01 27 views
2

私は、Primefaces dataExporterを使用してdataTableからpdfを生成しています。生成されたpdfには、同じ幅のすべての列があります。私はpostProcessor/preProcessor関数のテーブルのスタイルを変更する方法を探しています。 pdfを生成する前にsetHtmlStyleClassメソッドを使用して何かを変更できますか?私はそれを使用しようとしましたが、成功しませんでした。私はそれを正しく理解していないと思う。Primefaces dataExporterでpdfを生成するスタイルを変更する

public void preProcessPDF(Object document) throws IOException, BadElementException, DocumentException { 

    Document pdf = (Document) document; 
    pdf.setHtmlStyleClass("reportClass"); 
    ... 
} 

私はこのメソッドを使用できますが、どこでreportClassを定義できますか?ブラウザのページのCSSクラスですか?

答えて

4

PDFExporter.javaエクスポートメソッドで何が起こっているのか見ると、PDFのデータテーブルは操作できません。

まず、com.itextpdf.text.Documentオブジェクトが作成されます。

Document document = new Document(PageSize.A4.rotate()); 

その後プリプロセッサ方法は、表はPDF文書に追加される前に、これは、文書を渡すと呼ばれています。

if(preProcessor != null) { 
    preProcessor.invoke(facesContext.getELContext(), new Object[]{document}); 
} 

次に、com.itextpdf.text.pdf.PdfPTableが作成されます。 exportPDFTableメソッドは特別な書式設定を行いません。

PdfPTable pdfTable = exportPDFTable(table, excludeColumns); 
document.add(pdfTable); 

ここで、postProcessメソッドが呼び出され、Documentが再び渡されます。ここで私はあなたがアクセスし、DocumentオブジェクトからPdfPTableを変更することができると思うだろうが、iText APIを見て、それはあなたのように見えません。

if(postProcessor != null) { 
    postProcessor.invoke(facesContext.getELContext(), new Object[]{document}); 
} 

したがって、スタイル付きPDF表を作成するには、独自のPDFエクスポートを実装する必要があります。 PrimeFaces PDFExporterがどのように行われているかを見て、それを助けてくれることを願っています。

+0

詳細情報はありがとうございます。自分のPDFエクスポートの実装について考えてみましょう。 – Marcelo

関連する問題