我們在我們的應用程序中使用了用於PDF生成任務的itextpdf和xmlworker API(itextpdf-5.1.1.jar,Xmlworker-1.1.0.jar)。我們從XML-XSLT轉換生成HTML內容,然後使用HTML內容創建PDF文檔。ItextPdf中的分頁
當我們試圖實現分頁(作爲3中的1,2 ..)時,我們從itextpdf在線樣本中學習到,除了我們創建的PDF文檔之外,我們總是需要創建一個生成的PDF文檔,以便在每個頁面內容上標記頁碼。
這種方法帶來了刪除中間pdf文檔的挑戰。在我們第一次創建pdf的時候,是否有任何方法可以確定頁碼,以便我們避免創建一個由此產生的pdf文檔?
感謝 Venkat
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);
}
}
感謝Bruno Lowagie對單個通過實現Y素材第X頁的詳細解釋。由於我們使用XML-XSLT-HTMLContent方法生成PDF文檔,因此我們嘗試的類似於MovieCountries1的示例程序在標頭上創建了Y的Page X。是否有任何示例將Y的頁面X放在頁腳區域?你能指點我一個樣品嗎? – VenkatRam
不需要額外的樣本。添加額外內容時只需更改座標。將803替換爲20(取決於您決定頁腳的位置)。 –
感謝Bruno Lowagie。我們嘗試更改示例中的座標,但沒有任何幫助將頁面的總數(Y)更接近於X. – VenkatRam