PDF 操作 - 对 PDF 文件进行几次连续操作后图像失真
PDF manipulation - images are distorted after few consecutive operations on PDF file
我 运行 遇到了这个 PDF 文件处理的奇怪问题。不确定 SO 是否适合提出这个问题,但我找不到任何具体的网站。我希望有人能阐明这个问题。
如果省略某些步骤,则在以下特定过程中会发生这种情况 - 不会观察到该问题。
我有一个 PHP 应用程序可以为用户提供 PDF 文件。这些文件由作者在 MS Word 2007 中创建,然后打印为受保护的 PDF(很可能使用 pdf995,如果需要我可以确认)。
我将在下文中将此初始 PDF 文件称为 'source'。
根据要求,源文件在 PHP 中按以下方式处理:
我们使用qpdf解密:
qpdf --decrypt "source.pdf" "tmp_output.pdf"
然后我们给它添加安全标签/wartermark,使用 mPDF 6.0:
加密并输出到浏览器
$mpdf = new mPDF();
$mpdf->SetImportUse();
$pagecount = $mpdf->SetSourceFile($fpath);
if ($pagecount) {
for ($i=1;$i<=$pagecount;$i++){
$tplId = $mpdf->ImportPage($i);
$mpdf->UseTemplate($tplId);
$html = '[security label / watermark contents...]';
$mpdf->WriteHTML($html);
}
}
$mpdf->SetProtection(array('copy','print'), '', 'password',128);
$mpdf->Output('final_output.pdf','I');
按照上述确切步骤,粘贴到 Word 文档中的输出图像如下所示:
在源 PDF 中,tmp_output(qpdf 解密文件)粘贴的图像看起来正确:
如果出现以下任何一种情况,则不会发生失真:
- Word 文档打印成 PDF 没有保护
- mPDF 输出不受保护。
如您所见,因素太多,所以我不知道去哪里寻找错误。
每个组件都可以自己正常工作,我找不到有关该问题的任何信息。非常感谢任何见解。
编辑 1
经过更多测试,这似乎只发生在从网络浏览器、Windows 资源管理器、MS Word 截取的屏幕截图上。无法使用 Gimp 的屏幕截图重现此内容。
似乎在尝试将白色转换为 alpha 时失败了。
当前版本 (6.1) 的 Mpdf 有一个错误,它不能正确处理转义的 PDF 字符串(通过 FPDI 导入)是否应该加密。
修复此问题的拉取请求可用 here。
我 运行 遇到了这个 PDF 文件处理的奇怪问题。不确定 SO 是否适合提出这个问题,但我找不到任何具体的网站。我希望有人能阐明这个问题。
如果省略某些步骤,则在以下特定过程中会发生这种情况 - 不会观察到该问题。
我有一个 PHP 应用程序可以为用户提供 PDF 文件。这些文件由作者在 MS Word 2007 中创建,然后打印为受保护的 PDF(很可能使用 pdf995,如果需要我可以确认)。 我将在下文中将此初始 PDF 文件称为 'source'。
根据要求,源文件在 PHP 中按以下方式处理:
我们使用qpdf解密:
qpdf --decrypt "source.pdf" "tmp_output.pdf"
然后我们给它添加安全标签/wartermark,使用 mPDF 6.0:
加密并输出到浏览器$mpdf = new mPDF();
$mpdf->SetImportUse();
$pagecount = $mpdf->SetSourceFile($fpath);
if ($pagecount) {
for ($i=1;$i<=$pagecount;$i++){
$tplId = $mpdf->ImportPage($i);
$mpdf->UseTemplate($tplId);
$html = '[security label / watermark contents...]';
$mpdf->WriteHTML($html);
}
}
$mpdf->SetProtection(array('copy','print'), '', 'password',128);
$mpdf->Output('final_output.pdf','I');
按照上述确切步骤,粘贴到 Word 文档中的输出图像如下所示:
在源 PDF 中,tmp_output(qpdf 解密文件)粘贴的图像看起来正确:
如果出现以下任何一种情况,则不会发生失真:
- Word 文档打印成 PDF 没有保护
- mPDF 输出不受保护。
如您所见,因素太多,所以我不知道去哪里寻找错误。 每个组件都可以自己正常工作,我找不到有关该问题的任何信息。非常感谢任何见解。
编辑 1
经过更多测试,这似乎只发生在从网络浏览器、Windows 资源管理器、MS Word 截取的屏幕截图上。无法使用 Gimp 的屏幕截图重现此内容。
似乎在尝试将白色转换为 alpha 时失败了。
当前版本 (6.1) 的 Mpdf 有一个错误,它不能正确处理转义的 PDF 字符串(通过 FPDI 导入)是否应该加密。
修复此问题的拉取请求可用 here。