Привет! Итак, я фактически использовал этот код для выравнивания PDF-файла, который имел редактируемые формы, но я считаю, что мы можем изменить его, чтобы объединить PDF-файлы вместе.
Это решение использует php's Imagick (), который должен быть частью вашей хостинговой среды.
Итак, вот код, я попытался прокомментировать его как можно лучше. Вы вызовете mergePdf () и поместите папку назначения (где находятся ваши файлы и где вы будете сохранять новый файл) и массив файлов (только имена), которые нужно объединить, а затем новое имя файла. После этого новый файл будет сохранен в папке назначения.
/**
* mergePdf()
*
* @param mixed $destinationPath
* @param array $files
* @param mixed $newFileName
* @return
*/
public function mergePdf($destinationPath, $files, $newFileName){
//Create array to hold images
$array_images = array();
//Loop through to be merged
foreach($files as $file){
//Firstly we check to see if the file is a PDF
if(mime_content_type($destinationPath.$file)=='application/pdf'){
// Strip document extension
$file_name = pathinfo($file, PATHINFO_FILENAME);
// Convert this document
// Each page to single image
$im = new imagick();
//Keep good resolution
$im->setResolution(175, 175);
$im->readImage($destinationPath.$file);
$im->setImageFormat('png');
$im->writeImages($destinationPath.$file_name.'.png',false);
//loop through pages and add them to array
for($i = 0; $i < $im->getNumberImages(); $i++){
//insert images into array
array_push($array_images, $destinationPath.$file_name.'-'.$i.'.png');
}
//Clear im object
$im->clear();
$im->destroy();
}else{
return false;
}
}
//Now that the array of images is created we will create the PDF
if(!empty($array_images)){
//Create new PDF document
$pdf = new Imagick($array_images);
$pdf->setImageFormat('pdf');
if($pdf->writeImages($destinationPath.$newFileName, true)){
$pdf->clear();
$pdf->destroy();
//delete images
foreach($array_images as $image){
unlink($image);
}
return true;
}else{
return false;
}
}else{
return false;
}
}
public function getMergePdf(){
$destinationPath = "/your/destination/to/the/file/goes/here/";
//put the files in the order you want them to be merged
$files = array('file1.pdf','file2.pdf','file3.pdf');
$this->mergePdf($destinationPath, $files, "NewPdf.pdf");
}