我一直在使用qpdf来消除.pdf限制,这可以通过php使用,如下所示:
shell_exec('qpdf --decrypt "'.$pdfName.'" unlocked.pdf');这在本地主机上工作得很好,但是由于安全原因,在共享的web主机上执行是不可能的。
因此,我正在寻找一种不用shell命令就能使其工作的方法。
在PHP或JavaScript语言上有什么解决方案吗?
编辑
我正在测试的pdf没有被密码阻止,我只知道我不能从它复制文本,但是在应用了"qpdf -解密.“之后。指挥部,我能做到。
发布于 2019-01-31 08:30:08
您可以在GitHub pdftk中使用以下存储库
示例PHP代码:
use mikehaertl\pdftk\Pdf;
$pdf = new Pdf('/path/my.pdf');
$pdf->allow('AllFeatures') // Change permissions
->flatten() // Merge form data into document (doesn't work well with UTF-8!)
->compress($value) // Compress/Uncompress
->keepId('first') // Keep first/last Id of combined files
->dropXfa() // Drop newer XFA form from PDF
->dropXmp() // Drop newer XMP data from PDF
->needAppearances() // Make clients create appearance for form fields
->setPassword($pw) // Set owner password
->setUserPassword($pw) // Set user password
->passwordEncryption(128) // Set password encryption strength
->saveAs('new.pdf'); 发布于 2019-01-30 15:03:32
使用用JavaScript (PDF.js)编写的Mozilla的PDF.js,所有这些都是可能的。您可以在共享的web主机上不受限制地显示所有PDF。我已经测试了它的文本副本,文件打印和其他限制-你可以不受限制地做所有这些。
只有文件读取密码,你将需要一个密码,我希望你理解,删除这个密码是不可能与任何其他软件,如果密码是足够强的。您也可以使用密码打开所有文档(如果有密码的话),但所有其他限制都将被跳过。我已经用256位密钥长度测试过它的所有者和用户密码。
如果有人不了解OP (原始海报)中的QPDF库,我发现以下有关QPDF库的信息:
一个安全的PDF文件有两种类型的密码:所有者和用户。 所有者密码用于强制执行权限。 用户密码用于打开pdf文件。 ..。 如果它使用用户密码也是安全的,您也可以解密它,但是您需要知道密码。 来源
使用这个库,不需要编写、显式、一些代码来删除PDF限制。它通过从文档automatically.中读取删除限制(用于所有者密码)。在这种情况下,如果设置了用户密码(用于打开PDF文件),则通过读取文档显示此密码automatically.的输入对话框。
结论: OP的 PDF.js库和QPDF库在有限制的情况下也是如此。
如何开始
只需打开下面的主页链接,然后转到Getting 站点(您将在页面的顶部找到这种可能性)--您将找到所有的入门说明。
PDF.js是一个开源项目 (GitHub链接)。
在这个家址上,您会发现:
有用链接:
https://stackoverflow.com/questions/54313682
复制相似问题