2011-07-01 3 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

감사 정보 세부 정보는 Mark입니다. 내 자신의 PDF 내보내기 구현에 대해 생각해 보겠습니다. – Marcelo