java - 使用 PDFBox 库在 PDF 中生成分层书签

标签 java pdf pdf-generation pdfbox

如何为 PDF 创建分层书签,如下所示:

Root
---Node-1
-------Node-11
-------Node-12
....
---Node-2
-------Node-21
....

我有一个二维数组(我接受任何类型的列表/集合作为示例),其节点名称如下:

1
 11,
 12,
 ...
2
 21,
 22,
 23,
 ...
...

此问题基于this但我不知道如何使用 PDFBox 库。

最佳答案

这是 CreateBookmarks example 中的一段,在源码下载中找到:

document = PDDocument.load( args[0] );
if( document.isEncrypted() )
{
    System.err.println( "Error: Cannot add bookmarks to encrypted document." );
    System.exit( 1 );
}
PDDocumentOutline outline =  new PDDocumentOutline();
document.getDocumentCatalog().setDocumentOutline( outline );
PDOutlineItem pagesOutline = new PDOutlineItem();
pagesOutline.setTitle( "All Pages" );
outline.appendChild( pagesOutline );
List pages = document.getDocumentCatalog().getAllPages();
for( int i=0; i<pages.size(); i++ )
{
    PDPage page = (PDPage)pages.get( i );
    PDPageFitWidthDestination dest = new PDPageFitWidthDestination();
    dest.setPage( page );
    PDOutlineItem bookmark = new PDOutlineItem();
    bookmark.setDestination( dest );
    bookmark.setTitle( "Page " + (i+1) );
    pagesOutline.appendChild( bookmark );
}
pagesOutline.openNode();
outline.openNode();

document.save( args[1] );

关于java - 使用 PDFBox 库在 PDF 中生成分层书签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30695462/

相关文章:

android - 用于在 Android 上生成 pdf 的 droidText

java - 如何在循环中输入超过1个整数

javascript - 如何在Nodejs中保存pdftron中的注释?

vb.net - PDF页面计数器

java - Apache PDFBox : Get alignment and font from a PDAnnotationWidget or PDTextField

iphone - iOS SDK 编辑 PDF 添加图像

java - 在 Oracle10g 上使用 c3p0 配置 Hibernate 连接池

java - 使用jsp :include to pass a array from one jsp page to another

java - 使用 open office 将 excel (.xlsx) 转换为 pdf (.pdf) 时缺少工作表和页面大小问题

ios - UIActionSheet 在 iOS6 中工作正常,但在 iOS7 中崩溃——数据结构有问题