use strict; use PDF::API2; my $pdf = PDF::API2->new( -file => "path/to/outfile.pdf" ); my @files = glob ("path/to/somewhere/else/*.pdf"); merge (@files); # some stuff sub merge { my ( $file, $root, ); $root = $pdf->outlines; my $import_page = 0; my $document_page = 0; foreach $file ( @_ ) { my ($inputpdf, $inputdir) = fileparse ($file); my $input = PDF::API2->open( $file ); my @pages = 1 .. $input->pages; if ( scalar @pages > 0 ) { my $outline; $outline = $root->outline if $bookmark; foreach ( @pages ) { ++$import_page; ++$document_page; my $page = $pdf->importpage($input, $_, $import_page); if ( $bookmark ) { my ($bmtext) = ($inputpdf =~ /([^\.]+)/ ); $outline->title($bmtext); my $bm = $outline->outline; $bm->title("Seite $document_page"); $bm->dest($page); $outline->dest($page) if $document_page == 1; $outline->closed; } } } } $pdf->preferences( -outlines => 1 ) if $bookmark; $pdf->update; $pdf->end; }