有没有免费/开源的PDF解析器可以做这项工作?FPDI附带的免费解析器仅支持1.4以下的PDF版本。我尝试过TCPDF,但它不起作用。
我知道我可以通过Acrobat更改PDF文件的PDF版本,但我在这样做时遇到了错误。
我正在使用FPDI在我们公司出售的PDF文件上添加水印。我注意到我从1.7到Acrobat降级到1.4的其中一个PDF看起来很像,但是在我的水印功能完成后,PDF将在我的封面的右侧和底部有一个黑色背景的空白区域。简而言之,在整个过程之后,PDF看起来很难卖出去。
发布于 2013-10-01 10:35:31
我在目前正在从事的一个项目中遇到了同样的限制,最终基于TCPDF的解析器创建了我自己的解析器,该解析器与名为TCPDI的FPDI的修改版本和FPDF_TPL的未修改副本一起工作。它可以与TCPDF 6一起使用,并且至少支持PDF 1.6 (我手头还没有1.7个PDF可供尝试,但我很快就会找到一个,以确保它能工作)。
如果你仍然想这样做,请随时尝试TCPDI / tcpdi_parser -如果你遇到任何问题,请通过Github报告他们,我会调查他们。基本安装和使用说明可在TCPDI README中找到。
发布于 2018-06-23 23:41:19
FPDI允许处理最高版本为1.4的PDF文件。您可以使用GHOSTSCRIPT将任何PDF文件转换为1.4版,然后再使用FPDI进行处理。
示例代码可以在我的官方网站博客this link上找到。
更新-
现在请关注this link。域名已由webnius.com变更为infoconic.com
发布于 2020-08-12 17:47:22
我已经绕过了这个限制,在加载到FPDI之前使用pdftk解压缩,然后用pdftk重新压缩。
我确实研究了FPDI的付费许可,但在尝试编译和运行评估版本时遇到了巨大的困难,失去了希望/信心。除了派生或克隆之外,TCPDI缺乏任何实际的安装路径,在PHP7.4上,它们充其量看起来都是零散的。
使用installed pdftk on your machine后,解决方案看起来有点像这样
$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');https://stackoverflow.com/questions/17101747
复制相似问题