Este documento refere-se ao FPDI 2. A versão 1 está obsoleta e o desenvolvimento foi descontinuado.
FPDI é uma coleção de classes PHP que facilita aos desenvolvedores a leitura de páginas de documentos PDF existentes e a utilização delas como modelos no FPDF, desenvolvido por Olivier Plathey. Além de uma cópia do FPDF, o FPDI não requer nenhuma extensão PHP especial.
O FPDI também pode ser usado como uma extensão para TCPDF ou tFPDF.
Como o FPDI pode ser usado com FPDF, TCPDF ou tFPDF, não adicionamos uma dependência fixa no arquivo principal compositor.json. Você mesmo precisa adicionar a dependência à biblioteca de geração de PDF de sua escolha.
Para usar FPDI com FPDF inclua o seguinte em seu arquivo compositor.json:
{"require": {"setasign/fpdf": "1.8.*","setasign/fpdi": "^2.5"} }
Se quiser usar TCPDF, você deve atualizar seu compositor.json para:
{"require": {"tecnickcom/tcpdf": "6.6.*","setasign/fpdi": "^2.5"} }
Se quiser usar tFPDF, você deve atualizar seu compositor.json para:
{"require": {"setasign/tfpdf": "1.33.*","setasign/fpdi": "^2.3"} }
Se você não usa o compositor, basta solicitar o autoload.php na pasta /src:
require_once('src/autoload.php');
Se você possui um autoloader PSR-4 implementado, basta registrar o caminho src da seguinte forma:
$loader = new ExemploPsr4AutoloaderClass;$loader->register();$loader->addNamespace('setasignFpdi', 'caminho/para/src/');
A versão 2 é uma reescrita completa do zero do FPDI que vem com:
Código com namespace
Base de código e estilo limpos e atualizados
Carregamento automático compatível com PSR-4
Melhorias de desempenho em até 100%
Menos consumo de memória
Suporte nativo para leitura de PDFs a partir de strings ou recursos de fluxo
Suporte para documentos com dados "inválidos" antes do cabeçalho do arquivo
Resolução otimizada da árvore de páginas
Uso de exceções individuais
Vários tipos de testes (testes unitários, funcionais e visuais)
Tentamos manter os métodos principais e o fluxo de trabalho lógico iguais aos da versão 1, mas observe que houve alterações incompatíveis que você deve considerar ao atualizar para a versão 2:
Você precisa carregar o código usando o arquivo src/autoload.php
em vez de classes/FPDI.php
.
As classes e características têm namespace agora: setasignFpdi
Os limites de página que começam com uma barra, como /MediaBox
, não são mais suportados. Remova a barra ou use uma constante de PdfReaderPageBoundaries
.
Os parâmetros $x, $y, $width e $height do método useTemplate()
ou getTemplateSize()
têm valores padrão corretos mais lógicos agora. Passar 0
como largura ou altura resultará em uma InvalidArgumentException
agora.
O valor de retorno de getTemplateSize()
foi alterado para um array com mais chaves falantes e capacidade de reutilização: Use width
em vez de w
e height
em vez de h
.
Se você quiser usar FPDI com TCPDF você precisa refatorar seu código para usar a classe TcpdfFpdi
(desde 2.1; antes era TcpdfFpdi
) em vez de FPDI
.
Um exemplo simples, que importa uma única página e a coloca em uma nova página criada:
AddPage();// define a fonte file$pdf->setSourceFile("Fantastic-Speaker.pdf");// importar página 1$tplId = $pdf->importPage(1);// usar a página importada e colocá-la no ponto 10,10 com largura de 100 mm$pdf->useTemplate($tplId, 10, 10, 100);$pdf->Output();
Uma documentação completa do usuário final e uma referência da API estão disponíveis aqui.