【发布时间】:2017-07-12 08:19:36
【问题描述】:
我在处理 PDF 文件时遇到了这个奇怪的问题。不确定 SO 是否是问这个问题的正确地方,但我找不到任何具体的网站。我希望有人能对这个问题有所了解。
如果省略某些步骤,以下特定过程会发生这种情况 - 未观察到问题。
我有一个为用户提供 PDF 文件的 PHP 应用程序。这些文件由作者在 MS Word 2007 中创建,然后打印为受保护的 PDF(很可能使用 pdf995,如果需要,我可以确认)。 下面我将这个初始 PDF 文件称为“源”。
根据请求,源文件在 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 doc 打印为 PDF,没有保护
- mPDF 输出不受保护。
你可以看到有太多的因素,所以我不知道去哪里寻找错误。 每个组件都可以自行正常工作,我找不到有关该问题的任何信息。非常感谢任何见解。
编辑 1
经过更多测试,这似乎只发生在从网络浏览器、Windows 资源管理器、MS Word 截取的屏幕截图中。无法使用 Gimp 的屏幕截图重现这一点。
似乎有一些东西试图将白色转换为 alpha 并且失败了。
【问题讨论】:
-
您能否分享在所述工作流程中使用/制作的所有 PDF?
-
@JanSlabon 我在这里无权访问任何文件共享服务,也无法将文件附加到问题中。怎么办?
-
@JanSlabon 好的,这里是download密码:pdf
-
我刚刚给 Mpdf 发了一个pull request 应该可以解决这个问题。
标签: php pdf encryption ms-word mpdf