FPDF / FPDI yapmak veya 1.4 daha büyük PDF'leri ayrıştırma destek Zend_Pdf bir yolu var mı?

6 Cevap php

Ben FPDI kullanarak FPDF ile oluşturulan bir PDF (aksi oluşturulan) varolan bir PDF eklemek çalışıyorum. Çoğu PDF'ler için bulmak iş gibi görünüyor, ama ben aşağıdaki hatayı alıyorum:

FPDF error: Unable to find xref table.

Birkaç denemeden sonra, ben 1.4 veya daha düşük bir PDF sürümünü kullanıyorsanız, (Acrobat v5 veya daha düşük) o iş gibi görünüyor olduğunu anladım. Dosyasına bakarak çünkü farklı bir PDF formatı gibi görünüyor.

Geçici bir çözüm veya bu çözüm var mı? Ben kullanıcılar tarafından yüklenen muhtemelen 10 000 + PDF'leri, yeni çalışma, bazı, bazıları değil. Bu FPDI sadece yerine hata çeşit neden hatta dönen ölür bu da sinir bozucu yanlış

Ben şimdi düşünüyorum edebilirsiniz tek çözüm sürümünü belirlemek ve sadece sürümleri üzerinde çalışacak yenilerini eklemek için PDF dosyasının ilk satırı ayrıştırmak için.

Edit:

Ben de Zend_Pdf bu denedim ve Zend Framework ile gelen demo dosyasını kullanarak, aşağıdaki sonucu vardı:

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

Bu 1.4 daha büyük PDF'leri ayrıştırmak imkansız mı?

6 Cevap

Ben ticari sürümünü kullanarak FPDI PDF-Parser benim problem çözüldü bulundu. Ben şimdi bir yıl için kullanıyorum ve (PDF bozuk olduğunu ya da devam garip başka bir şey olmadığı sürece) bu ayrıştırma adamcağız herhangi PDF'leri olmadı.

Sen TCPDF ile FPDI kullanabilirsiniz 1.7 PDF'leri, o üretecektir ve (FPDI ile) sürümünü okuyun.

Bkz TCPDF - PHP class for PDF.


EDIT

Ben son zamanlarda çeşitli sürümleri ve FPDI ve TCPDF ile PDF formatları kullanarak sorunu ile meydan olmuştur ve ben vurmak ve özledim 1.4 yukarıda olduğunu PDF versiyonunu teyit edebilir, ilginç bir şey ben 1.7 PDF'leri çalışan bir çok olması, ve 1.5 ve 1.6 üzerinde yaklaşık 50/50 çalışır.

Ben GhostScript kullanarak v1.4 olmayan tüm uygulanabilir PDF dosyalarını dönüştürerek soruna çalıştı hangi can exec komut satırından. GhostScript lib klasöründen ps2pdf14 kullanın.

Setasign bir commercial addon FPDI gibi bir PDF çözümleyici sunuyor. Biz hiçbir sorunlarım çok yeni çözümleyici kullanarak sürüm 1.7 PDF dosyalarını ayrıştırma vardı.

Ben sadece v1.4 yukarıda PDF'leri almak TCPDF 6 (ve FPDF_TPL) ile çalışmak (sırasıyla FPDI ve tcpdf_parser dayalı TCPDI / tcpdi_parser,) projelerin bir çift sunduk (şimdiye kadar 1.6 kadar test, ama ben! bunu test etmek için bir 1.7 PFD bulmak kez ben emin 1.7 ile çalışır yapacağız) herhangi bir ticari addons gerektirmeden. Temel kurulum ve kullanım talimatları TCPDI README bulunabilir; bunu denemek ve Github izci üzerinden herhangi bir sorunları bildirmek için çekinmeyin.

Acrobat PDF yazar varsa, yazdırdığınız PDF / savingAs PDF 1.4 uyumlu olarak yapmak için iş ayarları işleyebilirsiniz. Ben bu ürüne ihtiyacınız minik nedenle, 1,4 'den büyük sürümlerine uyumlu ticari sürümünü almak için 100 Euro değerinde görünmüyor.

benim takımım kod kısmını çıkarmıştı. biz pdf filigran ekleme kodu durdu. Bu bizim için sorun çözüldü. PDF> = 1.5