簡體   English   中英

在不使用iText的情況下編輯現有的PDF

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM