在不使用iText的情况下编辑现有PDF

时间:2013-05-06 13:19:34

标签: java pdf

我想在现有PDF文件中添加索引页面。并将页码添加到pdf文件的页面 所有建议的解决方案都指向创建新的pdf并将现有的pdf文件与新的pdf文件合并。

还有其他办法吗? 此外,我不想使用itext,因为它不能免费用于商业用途。

1 个答案:

答案 0 :(得分:1)

根据您对原始问题的评论,您认为在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");

编辑:在对答案的评论中,问题出现了如何在特定索引(页码)处插入新页面。要做到这一点,显然{{em> 1}}必须以某种方式改变。

最初这个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

如果您现在替换

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);

预先添加空白页面。