У меня есть PDF-файл размером 150 МБ (55 страниц, содержащий текст и изображения), сгенерированный с помощью FPDF.
Я бы хотел разделить этот PDF на отдельные страницы PDF.
Я использую FPDI, но у меня есть серьезная проблема, каждый PDF-файл на одной странице имеет размер 150 МБ (как в оригинальном PDF).
Вот мой код:
use setasign\Fpdi\Fpdi;
require('fpdf181/fpdf.php');
require('fpdi/autoload.php');
function split_pdf($filename, $end_directory = false)
{
$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);
$templateIndex = $new_pdf->importPage($i);
$new_pdf->useTemplate($templateIndex, null, null, 0, 0, true);
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("contract.pdf", 'split/');
Мой оригинальный PDF-файл содержит только PNG и текст Helvetica.
Заранее спасибо за любую помощь:)