[英]Editing an existing PDF without using iText
我想將索引頁添加到現有的PDF文件中。 並將頁碼添加到pdf文件的頁面。
所有建議的解決方案都指向創建新的pdf並將現有的pdf文件與新的pdf文件合並。
還有其他方法嗎? 我也不想使用itext,因為它不是免費用於商業用途。
根據您對原始問題的評論,您認為是在PDFBox中
要添加新的頁面和內容,您需要創建一個新的pdf文件並添加新的內容,然后合並現有的pdf文件。 我想避免合並步驟。 重命名不是問題
您可能想要嘗試這樣的事情:
PDDocument doc = PDDocument.load(new FileInputStream(new File("original.pdf")));
PDPage page = new PDPage();
// fill page
doc.addPage(page);
doc.save("original-plus-page.pdf");
編輯:在對答案的評論中,出現了一個問題,即如何在特定的索引(頁面編號)處插入新頁面。 為此,顯然必須以某種方式更改doc.addPage(page)
。
最初,此PDDocument
方法的定義如下:
/**
* This will add a page to the document. This is a convenience method, that
* will add the page to the root of the hierarchy and set the parent of the
* page to the root.
*
* @param page The page to add to the document.
*/
public void addPage( PDPage page )
{
PDPageNode rootPages = getDocumentCatalog().getPages();
rootPages.getKids().add( page );
page.setParent( rootPages );
rootPages.updateCount();
}
我們只需要一個類似的函數,它不僅可以簡單地add
頁面add
到孩子中,還可以將其添加到給定的索引中。 因此,在我們的代碼中,如下所示的輔助方法將起作用:
public static void addPage(PDDocument doc, int index, PDPage page)
{
PDPageNode rootPages = doc.getDocumentCatalog().getPages();
rootPages.getKids().add(index, page);
page.setParent(rootPages);
rootPages.updateCount();
}
如果現在更換線
doc.addPage(page);
在原始答案的代碼中
addPage(doc, page, 0);
空頁被添加到前面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.