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

Copy Outlines for Each Document

This demo shows you how to copy outlines for each merged document as childs of a newly created bookmark item.

PHP
<?php

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';

$merger = new Merger();

$merger->addFile([
    'filename' => $assetsDirectory . '/pdfs/Brand-Guide.pdf',
    'outlinesConfig' => [
        Merger::OUTLINES_TITLE => 'Brand-Guide.pdf',
        Merger::OUTLINES_COPY => Merger::COPY_OUTLINES_AS_CHILDS
    ]
]);

$merger->addFile([
    'filename' => $assetsDirectory . '/pdfs/Fuchslocher-Example.pdf',
    'outlinesConfig' => [
        Merger::OUTLINES_TITLE => 'Fuchslocher-Example.pdf',
        Merger::OUTLINES_COPY => Merger::COPY_OUTLINES_AS_CHILDS
    ]
]);

// merger
$merger->merge();

// get the resulting document instance
$document = $merger->getDocument();

// show outlines when document opens
$document->getCatalog()->setPageMode(PageMode::USE_OUTLINES);

// we're also going to close the items in the root node
$iterator = $document->getCatalog()->getOutlines()->getIterator();
$iterator->setMaxDepth(0);
foreach ($iterator as $item) {
    $item->close();
}

$document->setWriter(new HttpWriter('outlines-as-childs.pdf', true));
$document->save()->finish();