Structure Outline Items
In this PHP demo we prepare a bookmark outline item which is used as the parent of two merged PDF documents.
The item for the third document is placed below the second one.
PHP
<?php use setasign\SetaPDF2\Core\Document; use setasign\SetaPDF2\Core\Document\OutlinesItem; use setasign\SetaPDF2\Core\Document\PageMode; use setasign\SetaPDF2\Core\Writer\HttpWriter; use setasign\SetaPDF2\Merger\Merger; // load and register the autoload function require_once __DIR__ . '/../../../../../bootstrap.php'; $document = new Document(); $document->setWriter(new HttpWriter('structured-bookmark-outline.pdf', true)); // show outlines when document opens $document->getCatalog()->setPageMode(PageMode::USE_OUTLINES); // create a root outline item $outlines = $document->getCatalog()->getOutlines(); $root = OutlinesItem::create($document, 'Products'); $outlines->appendChild($root); // initiate the merger with the prepared document instance $merger = new Merger($document); // add files from the file system $merger->addFile([ 'filename' => $assetsDirectory . '/pdfs/etown/products/Boombastic-Box.pdf', 'outlinesConfig' => [ Merger::OUTLINES_TITLE => 'Boombastic Box', Merger::OUTLINES_PARENT => $root ] ]); // let's remember the item (id) $parent = $merger->addFile([ 'filename' => $assetsDirectory . '/pdfs/etown/products/Fantastic-Speaker.pdf', 'outlinesConfig' => [ Merger::OUTLINES_TITLE => 'Fantastic Speaker', Merger::OUTLINES_PARENT => $root ] ]); // now add this item below the previous one $merger->addFile([ 'filename' => $assetsDirectory . '/pdfs/etown/products/Noisy-Tube.pdf', 'outlinesConfig' => [ Merger::OUTLINES_TITLE => 'Noisy Tube', Merger::OUTLINES_PARENT => $parent ] ]); // merger $merger->merge(); $document->save()->finish();
