我已经解决了这个限制,方法pdftk
是在将 PDF 加载到之前解压缩它FPDI
,然后再重新压缩它pdftk
。
我确实查看了付费许可证,FPDI
但在尝试编译和运行评估版时遇到了巨大的困难,并且失去了希望/信心。除了分叉或克隆之外,TCPDI 缺少任何真正的安装路径,而且它们在 PHP 7.4 上看起来充其量都是零散的。
在您的机器上安装pdftk
后,该解决方案看起来有点像这样:
$PDF = new Fpdi();
try {
$PDF->setSourceFile('./pdf.pdf');
} catch (\Exception $exception) {
if (aBoolFunctionToDetectThisParticularException($exception)) {
exec('pdftk ./pdf.pdf output ./pdf_expanded.pdf uncompress');
$PDF->setSourceFile('./pdf_expanded.pdf');
} else {
throw $exception;
}
}
如果您走这条路,重新压缩是个好主意,因为文件大小的差异是巨大的。
exec('pdftk ./pdf_expanded.pdf output ./pdf_compressed.pdf compress');