SetaPDF Demos PHP libraries to handle, modify or create PDF files

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