Как объединить несколько PDF-файлов в Laravel

Хотите отправить все чертежи, отчеты, информацию о различных отделах своему начальнику, но все ли это разные PDF-файлы, содержащие соответствующую информацию? Многие пользователи просто объединяют PDF-файлы и все. Объединение файлов в общий PDF-файл является чрезвычайно полезным и необходимым в настоящее время, поэтому, если вы предлагаете какое-то административное приложение для какого-либо предприятия, добавление такой функции в вашу систему может быть полезным, так что им не нужно устанавливать внешнюю программу или делать это онлайн. используя сторонний сервис.

В этой статье мы покажем, как объединить несколько PDF-файлов в один с помощью библиотеки PDFMerger.

1. Установите pdfmerger

PDFMerger использует (устанавливаются автоматически как зависимости) классы fpdf и fpdi от Setasign. Есть другие версии оригинальной библиотеки, портирован в PHP5 как оригинальная библиотека был размещен в codeplex, однако у них нет минимального уровня стабильности (они работают, но не с композитором). Библиотечный форк, работающий с composer, создан @rguedes, Что касается Laravel, любая зависимость, которую вы хотите использовать, требует минимального уровня стабильности (не dev-master). Чтобы продолжить установку пакета в вашем проекте Laravel, откройте терминал, перейдите в каталог вашего проекта и установите библиотеку, используя composer:

composer require rguedes/pdfmerger

После установки вы сможете использовать класс PDFMerger и его методы. Для получения дополнительной информации о форке этой библиотеки, посетите хранилище в Github здесь.

2. Использование библиотеки

Использование библиотеки очень просто и понятно, вы создаете экземпляр PDF-слияния. Этот класс позволяет объединять множество файлов по вашему желанию с помощью метода addPDF и, наконец, генерировать объединенный результат с помощью метода слияния. Вы можете выбрать, какие страницы PDF-файлов должны быть добавлены в окончательный вариант, решить, как и где будет создан конечный PDF-файл.

Указание страниц для слияния

Класс PDFMerger позволяет объединять многие PDF-файлы, как вы хотите и нуждаетесь, используя addPDF метод, вам нужно только указать путь в качестве первого аргумента и указать, какие страницы файла должны быть объединены в окончательный файл, используя второй аргумент, который ожидает строку. Например, вы можете объединить все страницы PDF:

$pdf = new PDFMerger();
// Add all the pages of the PDF to merge
$pdf->addPDF("somePdfToMerge.pdf", 'all');

Укажите, какие именно страницы вы хотите, указав их номер через запятую:

$pdf = new PDFMerger();
// Add only the pages 1, 3 and 5
$pdf->addPDF("somePdfToMerge.pdf", '1, 3, 5');

Или используя диапазон, например, от страницы 5 до 10:

$pdf = new PDFMerger();
// Add only the pages from 5 to 10
$pdf->addPDF("somePdfToMerge.pdf", '5-10');

Модель слияния

Используя метод слияния, вы создадите PDF-файл, содержащий добавленные файлы (указанные страницы каждого PDF-файла). Этот файл может быть сохранен или возвращен как ответ в соответствии с вашими потребностями. Метод для обработки PDF должен быть предоставлен в качестве первого аргумента метода слияния, возможные значения для этого аргумента: browser, download, string или же file, В качестве второго аргумента — путь, в котором будет сохранен PDF-файл (если в качестве метода используется файл) или имя PDF-файла, который будет использоваться для его возврата (с browser или же download):

Генерация прямой загрузки

Если вам не нужно никуда сохранять PDF-файл, а просто сгенерировать его и вернуть как ответ, вы можете принудительно загрузить сгенерированный PDF-файл напрямую, используя идентификатор загрузки:

addPDF($pdfFile1Path, 'all');
$pdf->addPDF($pdfFile3Path, '1, 2, 3');
// Generate download of "mergedpdf.pdf"
$pdf->merge('download', "mergedpdf.pdf");
}
}

Сохранение в файл

Вы можете сохранить объединенный результат в файл на вашем сервере:

addPDF($pdfFile1Path, 'all');
$pdf->addPDF($pdfFile2Path, 'all');
// Merge the files into a file in some directory
$pathForTheMergedPdf = public_path() . "/result.pdf";
// Merge PDFs into a file
$pdf->merge('file', $pathForTheMergedPdf);
// Do something else here, as return
// a response from the controller ...
}
}

Получить двоичное содержимое результата pdf

В случае, если вам нужно извлечь содержимое сгенерированного файла (двоичные данные), не сохраняя его где-либо, вы можете использовать метод строкового вывода для извлечения содержимого как переменной. В этом случае мы вернем двоичный контент как ответ с заголовками PDF (для просмотра в браузере). Вы также можете использовать тип браузера, если хотите:

addPDF($pdfFile1Path, 'all');
$pdf->addPDF($pdfFile2Path, 'all');
// Merge the files and retrieve its PDF binary content
$binaryContent = $pdf->merge('string', "mergedpdf.pdf");
// Return binary content as response
return response($binaryContent)
->header('Content-type' , 'application/pdf')
;
}
}
Ссылка на основную публикацию
Adblock
detector