2010-05-10 3 views
0

iText를 사용하여 PDF 및 RTF를 생성합니다. iText로 RTF 생성이 인기가 없다는 것을 알고 있지만, 여전히 코드를 둘 다 작동시킬 필요가 있습니다. 기술적으로, 각 유형을 처리하기 위해 다른 코드 조각을 가질 수 있지만 동일한 파일/클래스 내에 포함 할 수 있어야합니다.iText로 PDF 및 RTF에 헤더 추가

나는 다음과 같은 코드로 작업 할 수 있습니다 :

String outputData = getFieldValue(myRecord, myFieldName); 
if (exportToPDF) { 
    iTextPdfPCell = new PdfPCell(pdfPTable.getDefaultCell()); 
    iTextPdfPCell.setPhrase(outputData); 
    pdfPTable.addCell(iTextPdfPCell); 
} 
if (exportToRTF) { 
    iTextCell = new RtfCell(outputData); 
    iTextTable.addCell(iTextCell); 
} 

내가 헤더 복잡한을 얻을 때 문제가 모두 PDF에 나타납니다 HeaderFooter 및 RTFs

Phrase headerPhrase = new Phrase ("This is a page header."); 
HeaderFooter header = new HeaderFooter(headerPhrase, false); 
iTextDoc.setHeader(header); 

를 사용하여 헤더를 추가 할 수 있습니다. 테이블과 이미지를 포함하는 헤더를 추가하고 싶습니다 (이미지는 테이블 내에있을 수 있음). 나는이 일을 제안했다 다른 포럼에 대한 몇 가지 코드를 보았다 : 내 초기 테스트이 어떤 오류를 컴파일하고 기술적으로 "작동"이 발생하지 않음을 보여주고 있지만

Phrase headerPhrase = new Phrase(); 
headerPhrase.add(iTextTable); 
HeaderFooter header = new HeaderFooter(headerPhrase, false); 
iTextDoc.setHeader(header); 

를,이 같은 위치에 헤더 테이블을 시작합니다 파일의 본문 텍스트가 겹치기 때문입니다. 헤더의 공간을 허용하기 위해 페이지 여백을 넓게 설정하면 머리말이 본문과 함께 아래로 이동합니다.

온라인에서 (그리고 매뉴얼에서) 읽은 대부분의 정보는 페이지 이벤트 사용을 가리키는 것처럼 보이지만 내 수업은 PdfPageEventHelper를 확장해야한다는 것을 의미합니다. 그럴 경우

1. RTF와 비슷한 점이 있습니까?

2.있는 경우 동일한 클래스가 'RtfPageEventHelper'(있는 경우)와 PdfPageEventHelper를 모두 확장 할 수 있습니까? 각 출력 유형에 대해 별도의 클래스를 쓸 수 없습니다.

3. 그렇지 않은 경우 이미 PDF 및 RTF 모두에서 작동하는 HeaderFooter 클래스 내에서 테이블/이미지를 사용할 수 있습니까?

4. iText가 RTF를 생성 한 상태로 남겨 두었 기 때문에 RTF를 생성하기 위해 뭔가 다른 것을 사용해야합니까 (PDF와 함께 사용하는 것이 좋음).

답변

0

HeaderFooter가있는 머리글이나 바닥 글이 모든 페이지에 표시됩니다. 단순히 문서 머리글을 원할 경우 내용 앞에 페이지에 표준 요소 (단락/등)를 추가하십시오. 예를 들어

내 문서와 함께이 일을 해요 :

Paragraph Header = new Paragraph("Document Header", FontFactory.getFont(FontFactory.HELVETICA, 18, Font.BOLDITALIC, new Color(0, 0, 0))); 

document.open(); 
document.add(Header); 
document.add(otherContent); 
document.close(); 
3

을 나는이 형식으로했다. RTF 용이지만 PDF와 동일하다고 생각합니다. PdfHeader에 대해서만 RtfHeader를 변경하십시오.

document.open(); 
Paragraph head=new Paragraph("Head"); 
Paragraph foot=new Paragraph("Foot"); 
HeaderFoot header=new RtfHeaderFooter(head); 
HeaderFoot footer=new RtfHeaderFooter(foot); 
document.setHeader(header); 
document.setFooter(footer); 
document.close(); 

나는 도움이 될 것입니다.