当我尝试上传 pdf 文件并将每个页面分隔为 pdf 时,它可以使用一些 pdf 文件,但一些 pdf 文件显示此错误:
mPDF error: Unable to find xref table -" Maybe a Problem with auto_detect_line_endings"
我的代码:
ini_set('memory_limit', '512M');
$pagecount = Model::count_pages($documentPath.$journalDoc);
for ($i=1; $i<=$pagecount; $i++) {
$pdf = new mPDF('','Letter',12,'helvetica, sans-serif',200,0,0,20,0,10,'P');
$pdf->SetImportUse();
$pdf->SetSourceFile($documentPath.$journalDoc);
$import_page = $pdf->ImportPage($i);
$pdf->UseTemplate($import_page);
$pdf->Output($output_dir.$i.'.pdf', 'F');
}
这可能是由与您正在运行的 mPDF 不兼容的版本 PDF 文件的 PDF 文件引起的。您通常可以通过回归源 PDF 文件来规避此问题。
例如,对于 mPDF v6.0,请尝试使用 Ghostscript 之类的内容将 PDF 压缩到最多 v1.4。(哪里旧.pdf你是源文件)
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -o new.pdf old.pdf
Ghostscript 不会写入它正在读取的文件,所以如果你正在内联执行此操作,你将不得不跳舞;
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -o new.pdf old.pdf; mv -f new.pdf old.pdf
增加这个的长度大小
公共静态$trailerSearchLength = 5500;
对此
公共静态$trailerSearchLength = 500000;
文件位置为:vendor''setasign''fpdi''src''PdfParser''CrossReference''CrossReference.php
这可能是由与 mPDF 不兼容的 PDF 文件版本引起的。您最好回归 PDF 文件版本。
如果从文件中提取页面,则可能使用了 Adobe 软件。只需在Linux平台上使用pdftk或pdfchain即可解决问题。
mPDF 官方存储库中的 FPDI 版本非常古老。您可以尝试更新到最新版本。或者你只是使用使用FPDF的FPDI的正式版本。
如果您收到有关"未运动压缩"的消息,您可以查看FPDI PDF-Parser附加组件。请注意,许可证与 mPDF 不兼容。