FPDF/FPDI 또는 ZEND_PDF를 1.4보다 큰 PDF의 구문 분석을 지원하는 방법이 있습니까?

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

문제

FPDI를 사용하여 FPDF로 생성 된 PDF에 기존 PDF (그렇지 않으면 생성)를 추가하려고합니다. 대부분의 PDF에 대해서는 작동하는 것처럼 보이지만 다음과 같은 오류가 발생합니다.

FPDF error: Unable to find xref table.

약간의 테스트 후, PDF 버전의 1.4 이하 (Acrobat v5 이하)를 사용하면 작동하는 것 같습니다. 파일을 보면 PDF 형식이 다른 것 같습니다.

이에 대한 작업이나 해결책이 있습니까? 아마도 10,000 명 이상의 PDF가 사용자가 업로드했으며 일부는 새로운 작업 중 일부는 그렇지 않습니다. FPDI가 어떤 종류의 오류를 일으키지 않고 거짓을 반환하는 대신 죽는 것이 성가신 일입니다.

내가 지금 생각할 수있는 유일한 솔루션은 PDF 파일의 첫 번째 줄을 구문 분석하여 버전을 결정하고 작동하는 버전을 초과하는 버전 만 추가하는 것입니다.

편집하다:

또한 zend_pdf에서 이것을 시도했으며 Zend 프레임 워크와 함께 제공되는 데모 파일을 사용하여 다음과 같은 결과를 얻었습니다.

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

1.4보다 큰 PDF를 구문 분석하는 것이 불가능합니까?

도움이 되었습니까?

해결책 4

나는 상거래 버전을 사용하는 것을 발견했습니다 FPDI PDF-PARSER 내 문제를 해결했습니다. 나는 1 년 동안 그것을 사용해 왔으며 PDF가 없었습니다.

다른 팁

TCPDF와 함께 FPDI를 사용할 수 있으며 (FPDI 포함) 버전 1.7 PDF를 생성하고 읽습니다.

보다 TCPDF- PDF 용 PHP 클래스.


편집하다

최근에 FPDI 및 TCPDF와 함께 다양한 버전과 PDF 형식을 사용하는 문제에 도전했으며 1.4 이상의 PDF 버전이 히트 앤 미스임을 확인할 수 있습니다. 흥미로운 점은 1.7 PDF를 많이 사용하고 있으며, 1.7 PDF, 그리고 많은 일이 있다는 것입니다. 1.5 및 1.6에서 약 50/50 작동합니다.

나는 당신이 할 수있는 GhostScript를 사용하여 모든 비 작업 할 수없는 PDF 파일을 v1.4로 변환 하여이 문제를 해결했습니다. exec 명령 줄에서. 사용 ps2pdf14 고스트 스크립트에서 lib 폴더.

방금 한 쌍의 프로젝트를 발표했습니다 (TCPDI / tcpdi_parser, TCPDF 6 (및 FPDF_TPL)에서 작동하여 V1.4 이상의 PDF를 가져 오기 위해 FPDI 및 TCPDF_PARSER를 각각 기반으로합니다. 상업용 애드온이 필요하지 않고 테스트하십시오!). 기본 설치 및 사용 지침은 tcpdi readme; 자유롭게 시도하고 GitHub 트래커를 통해 모든 문제를보고하십시오.

SetAsign은 PDF 파서를 a로 제공합니다 상업 애드온 FPDI에. 우리는 새 파서를 사용하여 지금까지 버전 1.7까지 PDF 파일을 구문 분석하는 데 어려움이 없었습니다.

Symfony의 경우이 lib를 사용하여> 1.4를 변환했습니다.https://packagist.org/packages/xthiago/pdf-version-converter

Acrobat PDF Writer가있는 경우 작업 설정을 조작하여 PDF를 PDF로 만들 수 있습니다. PDF 1.4와 호환됩니다. 이 제품이 필요한 작은 이유에서는 1.4보다 큰 버전과 호환되는 상용 버전을 얻는 것이 100 유로의 가치가없는 것 같습니다.

우리 팀은 코드의 일부를 제거했습니다. 코드가 PDF에 워터 마크를 추가하는 것을 중지했습니다. 이것은 우리에게 문제를 해결했습니다. pdf> = 1.5

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top