Page Slicer
PageSlicer restructures a PDF’s page tree. It rebuilds the document from scratch using PdfFileWriter, so the output is a clean PDF containing only the selected pages.
Opening a PDF
Section titled “Opening a PDF”use Phpdftk\Pdf\Toolkit\PageSlicer;
// From file$slicer = PageSlicer::open('large.pdf');
// From string$slicer = PageSlicer::openString($pdfBytes);
// Encrypted PDF$slicer = PageSlicer::open('secured.pdf', password: 'secret');Keeping pages
Section titled “Keeping pages”By page numbers
Section titled “By page numbers”$slicer->keepPages(1, 3, 5)->save('selected.pdf');By range
Section titled “By range”$slicer->keepRange(1, 5)->save('first-five.pdf');With PageSelector
Section titled “With PageSelector”use Phpdftk\Pdf\Toolkit\PageSelector;
$slicer->keep(PageSelector::even())->save('even-pages.pdf');$slicer->keep(PageSelector::odd())->save('odd-pages.pdf');$slicer->keep(PageSelector::range(3, 7))->save('subset.pdf');Removing pages
Section titled “Removing pages”By page numbers
Section titled “By page numbers”$slicer->removePages(1, 2)->save('without-cover.pdf');With PageSelector
Section titled “With PageSelector”$slicer->remove(PageSelector::pages(1, 2))->save('trimmed.pdf');Reordering pages
Section titled “Reordering pages”Pass 1-based page numbers in the desired order:
$slicer->reorder(3, 1, 2)->save('reordered.pdf');Reversing page order
Section titled “Reversing page order”$slicer->reverse()->save('reversed.pdf');Splitting a PDF
Section titled “Splitting a PDF”Split at a page boundary, returning two PDF byte strings:
[$firstHalf, $secondHalf] = $slicer->split(6);// Pages 1-5 in $firstHalf, pages 6+ in $secondHalf
file_put_contents('part1.pdf', $firstHalf);file_put_contents('part2.pdf', $secondHalf);Saving
Section titled “Saving”// To file$slicer->save('output.pdf');
// To string$bytes = $slicer->toBytes();Document info
Section titled “Document info”$slicer->getPageCount(); // int (original page count)Escape hatch
Section titled “Escape hatch”$reader = $slicer->getReader(); // PdfReader