Mesclar PDFs com PHP
Veja como juntar arquivos PDF utilizando PHP
Neste artigo vamos ver como é possível mesclar arquivos PDF utilizando PDF. Vou mostrar dois exemplos, o primeiro usando PHP sem frameworks, o segundo exemplo utilizando o framework Laravel.
O primeiro exemplo será com PHP sem frameworks. Para isso, será necessário instalar duas bibliotecas, a primeira se chama FPDF e a segunda se chama FPDI. Os links para download voê confere a seguir:
target="_blank">http://www.fpdf.org
target="_blank">https://www.setasign.com/products/fpdi/about/
A utilização é bem simples. Será criado um PDF em branco, e os arquivos desejados serão adicionados ao novo arquivo. No final, será feito o download.
require_once(__DIR__ . '/inc/fpdf/fpdf.php');
require_once(__DIR__ . '/inc/fpdi/src/autoload.php');
use setasignFpdiFpdi;
$pdf = new Fpdi();
$arquivos = ['arquivo1.pdf','arquivo2.pdf','arquivo3.pdf','arquivo4.pdf','arquivo5.pdf'];
foreach ($arquivos as $arquivo) {
$pageCount = $pdf->setSourceFile($arquivo);
for ($i = 0; $i < $pageCount; $i++) {
$tpl = $pdf->importPage($i + 1);
$pdf->addPage();
$pdf->useTemplate($tpl);
}
}
//Dowload direto
$pdf->Output('D','novo_arquivo.pdf');
Agora vamos ver um exemplo de como fazer isso utilizando o framework Laravel
Para fazer o merge de arquivos usando Laravel primeiro você precisa instalar um pacote chamado lara-pdf-merger.
composer require lynx39/lara-pdf-merger
Depois de instalar este pacote, edite o seu arquivo config/app.php, adicionando um provider e um alias.
'providers' => [
....
LynX39LaraPdfMergerPdfMergerServiceProvider::class,
],
'aliases' => [
....
'PdfMerger' => LynX39LaraPdfMergerFacadesPdfMerger::class,
]
Depois de feita esta configuração, você pode usar o pacote em seu controller da seguinte forma:
$pdf = new LynX39LaraPdfMergerPdfManage;
$pdf->addPDF(public_path('/minha_pasta/meu_arquivo_pdf_1.pdf'), 'all');
$pdf->addPDF(public_path('/minha_pasta/meu_arquivo_pdf_2.pdf'), 'all');
$pdf->merge('file', public_path('/minha_pasta/novo_arquivo_pdf.pdf'), 'P');
No exemplo acima, foi criado um novo arquivo com o conteudo dos dois arquivos informados.