Я пытаюсь разделить PDF на несколько, чтобы уменьшить размер файла. PDF-файлы содержат меньше страниц, но размер файла остается таким же, как полный PDF-файл. Ниже я показываю функцию с проблемой. Я считаю, что проблема в SetSourceFile, который поддерживает полный размер файла PDF. Что я могу сделать?
publi c функция downloadPdfFull ($ id_processo) {set_time_limit (300);
$caminho_pdf_full = public_path('pdf_full_'.$id_processo.'.pdf');
if(!file_exists($caminho_pdf_full)){
$this->SavePdfFull($id_processo, $caminho_pdf_full);
}
$tamanho_total = filesize($caminho_pdf_full)/pow(1024, 2);
if($tamanho_total >= 3){
$zipname = 'processo-'.$id_processo.'.zip';
$zip = new \ZipArchive();
$zip->open($zipname, \ZipArchive::CREATE);
$mpdf = new \Mpdf\Mpdf([
]);
$mpdf_partes = new \Mpdf\Mpdf([
]);
$mpdf_partes->simpleTables = true;
$partes = ceil($tamanho_total/3);
$paginas = $mpdf_partes->SetSourceFile($caminho_pdf_full);
$mod = ceil($paginas/($partes*10));
$contador_partes = 0;
for($i = 1; $i <= $paginas; $i++) {
if($i%$mod==0) {
$contador_partes+=1;
$filename = 'processo-'.$id_processo.'-PARTE'.$contador_partes.'.pdf';
$caminho = public_path($filename);
$mpdf_partes->Output($caminho, 'F');
$zip->addFile($filename);
$mpdf_partes = new \Mpdf\Mpdf([
]);
$mpdf_partes->simpleTables = true;
$mpdf_partes->SetSourceFile($caminho_pdf_full);
//$mpdf_partes->RestartDocTemplate();
}
$pagina_importada = $mpdf_partes->ImportPage($i);
$mpdf_partes->SetPageTemplate($pagina_importada);
if($i != $paginas) {
$mpdf_partes->WriteHTML('<pagebreak/>');
}
}
if($paginas%$mod!=0) {
$contador_partes+=1;
$filename = 'processo-'.$id_processo.'-PARTE'.$contador_partes.'.pdf';
$caminho = public_path($filename);
$mpdf_partes->Output($caminho, 'F');
$zip->addFile($filename);
}
$zip->close();
return response()->download($zipname);
} else {
$mpdf->Output('processo-'.$id_processo.'.pdf', 'D');
}
}