mPDF 错误:找不到外部参照表


mPDF error: Unable to find xref table

当我尝试上传 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 不兼容。