Skip to content

Instantly share code, notes, and snippets.

@gnanakeethan
Forked from maccath/gist:3981205
Created September 27, 2020 10:20
Show Gist options
  • Select an option

  • Save gnanakeethan/e7c63c21e6b1d8ee7d6d2adad0409c80 to your computer and use it in GitHub Desktop.

Select an option

Save gnanakeethan/e7c63c21e6b1d8ee7d6d2adad0409c80 to your computer and use it in GitHub Desktop.

Revisions

  1. @maccath maccath renamed this gist Oct 30, 2012. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. @maccath maccath created this gist Oct 30, 2012.
    53 changes: 53 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,53 @@
    <?php

    /**
    * Split PDF file
    *
    * <p>Split all of the pages from a larger PDF files into
    * single-page PDF files.</p>
    *
    * @package FPDF required http://www.fpdf.org/
    * @package FPDI required http://www.setasign.de/products/pdf-php-solutions/fpdi/
    * @param string $filename The filename of the PDF to split
    * @param string $end_directory The end directory for split PDF (original PDF's directory by default)
    * @return void
    */
    function split_pdf($filename, $end_directory = false)
    {
    require_once('fpdf/fpdf.php');
    require_once('fpdi/fpdi.php');

    $end_directory = $end_directory ? $end_directory : './';
    $new_path = preg_replace('/[\/]+/', '/', $end_directory.'/'.substr($filename, 0, strrpos($filename, '/')));

    if (!is_dir($new_path))
    {
    // Will make directories under end directory that don't exist
    // Provided that end directory exists and has the right permissions
    mkdir($new_path, 0777, true);
    }

    $pdf = new FPDI();
    $pagecount = $pdf->setSourceFile($filename); // How many pages?

    // Split each page into a new PDF
    for ($i = 1; $i <= $pagecount; $i++) {
    $new_pdf = new FPDI();
    $new_pdf->AddPage();
    $new_pdf->setSourceFile($filename);
    $new_pdf->useTemplate($new_pdf->importPage($i));

    try {
    $new_filename = $end_directory.str_replace('.pdf', '', $filename).'_'.$i.".pdf";
    $new_pdf->Output($new_filename, "F");
    echo "Page ".$i." split into ".$new_filename."<br />\n";
    } catch (Exception $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
    }
    }
    }

    // Create and check permissions on end directory!
    split_pdf("filename.pdf", 'split/');

    ?>