使用 PDFBox 库在 PDF 中生成分层书签
Hierarchical Bookmark Generation in PDF using PDFBox library
如何为这样的 PDF 创建分层书签:
Root
---Node-1
-------Node-11
-------Node-12
....
---Node-2
-------Node-21
....
我有一个二维数组(我接受任何类型的 list/set 作为示例),节点名称如下:
1
11,
12,
...
2
21,
22,
23,
...
...
这个问题是基于 但我不知道如何使用 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] );
如何为这样的 PDF 创建分层书签:
Root
---Node-1
-------Node-11
-------Node-12
....
---Node-2
-------Node-21
....
我有一个二维数组(我接受任何类型的 list/set 作为示例),节点名称如下:
1
11,
12,
...
2
21,
22,
23,
...
...
这个问题是基于
这是来自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] );