使用PDFBox库生成PDF格式的分层书签

时间:2015-06-07 15:44:13

标签: 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库。

1 个答案:

答案 0 :(得分:0)

这是源代码下载中的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] );