우리는 우리의 응용 프로그램에서 PDF 생성 작업을 위해 itextpdf 및 xmlworker API (itextpdf-5.1.1.jar, Xmlworker-1.1.0.jar)를 사용합니다. XML-XSLT 변환에서 HTML 컨텐트를 생성 한 다음 HTML 컨텐트를 사용하여 pdf 문서를 만듭니다.ItextPdf에서 페이지 매김
페이지 매김을 구현할 때 (1/3, 2/3 등), 우리는 itextpdf 온라인 샘플을 통해 우리가 생성 한 PDF 문서와는 별도로 생성 된 PDF 문서를 생성해야한다는 것을 배웠습니다 각 페이지 내용에 페이지 번호를 찍으십시오.
이 접근법은 중간 PDF 문서를 제거하는 데 어려움을 낳습니다. pdf 문서를 하나 생성하는 것을 피할 수 있도록 pdf를 처음 만들 때 페이지 번호를 결정할 수있는 방법이 있습니까?
감사 벤 카트
class TableFooter extends PdfPageEventHelper {
String header;
PdfTemplate total;
public void setHeader(String header) {
this.header = header;
}
public void onOpenDocument(PdfWriter writer, Document document) {
total = writer.getDirectContent().createTemplate(30, 16);
}
public void onEndPage(PdfWriter writer, Document document) {
Font ffont = new Font(Font.FontFamily.UNDEFINED, 7, Font.NORMAL);
PdfPTable table = new PdfPTable(2);
try
{
table.setWidths(new int[]{1,1});
table.setTotalWidth(50);
table.getDefaultCell().setFixedHeight(15);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
Phrase footer = new Phrase(String.format("%d of", writer.getPageNumber()), ffont);
table.addCell(footer);
PdfPCell cell = new PdfPCell(Image.getInstance(total));
table.addCell(cell);
table.writeSelectedRows(0, -1, 275, 20, writer.getDirectContent());
}
catch(Exception de) {
throw new ExceptionConverter(de);
}
}
public void onCloseDocument(PdfWriter writer, Document document) {
ColumnText.showTextAligned(total, Element.ALIGN_LEFT, new Phrase(String.valueOf(writer.getPageNumber() - 1)), 10, 4, 0);
}
}
페이지 패스워드 X의 달성에 대한 자세한 설명은 Bruno Lowagie에게 감사합니다. 우리는 XML-XSLT-HTMLContent 접근 방식으로 PDF 문서를 생성하므로 MovieCountries1과 비슷한 방식으로 시도한 샘플 프로그램은 헤더에 Page X of Y를 만들었습니다. Page X of Y를 바닥 글 영역에 배치 할 샘플이 있습니까? 나를 견본으로 안내해 주시겠습니까? – VenkatRam
추가 샘플이 필요 없습니다. 추가 콘텐츠를 추가 할 때 좌표 만 변경하십시오. 803을 20과 같은 것으로 바꾸십시오 (바닥 글의 위치를 결정하는 것은 귀하에게 달려 있습니다). –
감사합니다. Bruno Lowagie. 샘플에서 좌표를 변경하려고 시도했지만 페이지의 총 개수 (Y)를 X에 더 가깝게 가져 오는 데 도움이되지 않았습니다. – VenkatRam