Existe uma maneira de fazer FPDF / FPDI ou Zend_Pdf apoiar a análise de PDFs maiores que 1.4?

StackOverflow https://stackoverflow.com/questions/660425

Pergunta

Eu estou tentando adicionar um PDF existente (criado de outra forma) para um PDF criado com FPDF usando FPDI. Parece para encontrar trabalho para a maioria dos PDFs, mas eu recebo o seguinte erro:

FPDF error: Unable to find xref table.

Depois de alguns testes, eu descobri que se eu usar uma versão em PDF 1.4 ou inferior (Acrobat v5 ou diminuir) parece funcionar. Olhando para o arquivo parece ser por causa de um formato PDF diferente.

Existe um em torno do trabalho ou solução para isso? Eu tenho provavelmente 10 000+ PDFs enviados por usuários, alguns dos novos trabalho, alguns deles não. Também é irritante que FPDI apenas morre em vez de causar algum tipo de erro ou até mesmo retornar false

A única solução que eu posso pensar agora é analisar a primeira linha do arquivo PDF para determinar a versão e só adicionar os que mais versões que vai funcionar.

Editar:

Eu também tentei isso em Zend_Pdf e teve o seguinte resultado, usando o arquivo de demonstração que vem com o Zend Framework:

Fatal error: Uncaught exception 'Zend_Pdf_Exception' with message 'Cross-reference streams are not supported yet.' in /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php:331
Stack trace:
#0 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php(455): Zend_Pdf_Parser->_loadXRefTable('116')
#1 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf.php(297): Zend_Pdf_Parser->__construct('/Volumes/Docume...', Object(Zend_Pdf_ElementFactory_Proxy), true)
#2 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf.php(250): Zend_Pdf->__construct('/Volumes/Docume...', NULL, true)
#3 /Volumes/Documents/temp/ZendFramework-1.7.7/demos/Zend/Pdf/demo.php(37): Zend_Pdf::load('/Volumes/Docume...')
#4 {main}
  thrown in /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php on line 331

É impossível analisar PDFs maiores que 1.4?

Foi útil?

Solução 4

Descobri que usando a versão comercial do FPDI PDF-Parser resolveu o meu problema. Eu tenho usado por um ano agora e não tive quaisquer PDFs que coul parse (a menos que o PDF foi corrompido ou tinha outra coisa estranha acontecendo).

Outras dicas

Você pode usar FPDI com TCPDF, que irá gerar e ler (com FPDI) versão 1.7 PDFs.

TCPDF -. Classe PHP para PDF


Editar

I foram recentemente desafiados com a questão do uso várias versões e formatos de PDF com FPDI e TCPDF, e posso confirmar que as versões PDF acima de 1,4 são errática, o interessante é que eu tenho um monte de trabalho 1.7 PDFs e trabalhos sobre 50/50 em 1.5 e 1.6.

Eu trabalhei em torno da questão, convertendo todos os arquivos PDF não-viáveis ??para v1.4 usando GhostScript que você pode exec a partir da linha de comando. Use ps2pdf14 da pasta lib GhostScript.

Acabei de lançar um par de projectos ( TCPDI / tcpdi_parser , com base em FPDI e tcpdf_parser, respectivamente) que funcionam com TCPDF 6 (e FPDF_TPL) para PDF importação acima v1.4 (testado até 1,6 até agora, mas eu vou ter certeza que funciona com 1.7 uma vez que eu encontrar um PFD 1,7 a testá-lo com!), sem necessidade de complementos comerciais. instruções de instalação e uso básico pode ser encontrada no TCPDI README ; não hesite em experimentá-lo e relatar quaisquer problemas através do rastreador Github.

Setasign está oferecendo um analisador de PDF como um addon comercial para FPDI. Nós não tivemos problemas ao analisar arquivos PDF até a versão 1.7 até agora usando o novo analisador.

para symfony, eu usei essa lib para converter> 1.4 https://packagist.org/packages/xthiago/pdf-version-converter

Se você tem Acrobat escritor PDF, você pode manipular as configurações do trabalho para tornar o PDF estiver imprimindo / savingAs para ser compatível com PDF 1.4. Para a pequena razão que eu preciso este produto, não parece vale a pena os 100 euros para obter a versão comercial, que é compatível com as versões maior que 1,4.

minha equipe tinha removido alguma parte do código. paramos o código da adição de marca d'água para o pdf. isso resolveu o problema para nós. PDF> = 1,5

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top