Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从PHP或JavaScript中删除.pdf限制?_Javascript_Php_Pdf - Fatal编程技术网

如何从PHP或JavaScript中删除.pdf限制?

如何从PHP或JavaScript中删除.pdf限制?,javascript,php,pdf,Javascript,Php,Pdf,我一直在使用qpdf删除.pdf限制,这可以通过php使用,如下所示: shell_exec('qpdf --decrypt "'.$pdfName.'" unlocked.pdf'); 这在本地主机上运行良好,但出于安全原因,不可能在共享web主机上执行 因此,我正在寻找另一种不用shell命令就能实现这一点的方法 有关于PHP或JavaScript语言的解决方案吗 编辑: 我正在测试的pdf没有被密码阻止,我只知道我不能从中复制文本,但在应用“qpdf--decrypt..”命令后,我可以

我一直在使用qpdf删除
.pdf
限制,这可以通过php使用,如下所示:

shell_exec('qpdf --decrypt "'.$pdfName.'" unlocked.pdf');
这在本地主机上运行良好,但出于安全原因,不可能在共享web主机上执行

因此,我正在寻找另一种不用shell命令就能实现这一点的方法

有关于PHP或JavaScript语言的解决方案吗

编辑


我正在测试的pdf没有被密码阻止,我只知道我不能从中复制文本,但在应用“qpdf--decrypt..”命令后,我可以做到。

使用JavaScript(pdf.js)编写的Mozilla pdf阅读器,您所需的一切都是可能的。您可以显示所有PDF,而不受共享web主机的限制。我现在已经测试了它的文本复制、文档打印和其他限制-您可以不受限制地执行所有这些操作

仅对于文件读取密码,您需要密码,我希望您理解,如果密码足够强,则任何其他软件都不可能删除此密码。您也可以使用密码联机打开所有文档(如果有),但将跳过所有其他限制。我已经测试了它从所有者和用户密码

如果有人不明白OP(原始海报)中的QPDF库是什么,我是否找到了关于该QPDF库的以下信息:

受保护的PDF文件有两种密码:所有者和用户。
所有者密码用于强制执行权限。
用户密码用于打开pdf文件。

如果它也有用户密码保护,您可以解密它,但您需要知道密码

使用此库,您无需编写明确的代码来删除PDF限制。它通过自动读取文档来删除限制(对于所有者密码)。如果设置了用户密码(用于打开PDF文件),则会通过读取文档自动显示该密码的输入对话框

结论:OP的PDF.js库和QPDF库在受到限制的情况下也会这样做

如何开始 只需打开下面的主页链接,然后转到入门网站(您将在页面顶部找到这种可能性)–您将在那里找到有关入门的所有说明

PDF.js是一个(GitHub链接)

在此上,您将发现:

  • 入门信息
  • 示例(大量代码示例)
  • 常见问题解答(答案)
  • API说明
有用的链接:


您可以在GitHub中使用以下存储库

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'); 

得到支持。@ceejayoz他们告诉我们要找一个副总裁,但现在还不是这样。好吧,这也是我的建议。你可以在不同的地方每月花2-5美元买一张。@ceejayoz不在智利,只要你有信用卡/借记卡,我想应该在智利也能用。你能进一步解释一下这一切是如何解决问题的吗?对我来说,这看起来只是一个链接answer@NicoHaase,它不是本例中唯一的链接答案,因为它是一个大库,我不能将它的所有源代码都放在这里。我的问题中有足够的信息,这是Mozilla的官方演示页面。我还有一个例子,如果你需要关于它的任何其他信息,请写信给我,我会将信息添加到我的答案中。@Bharata这似乎是一个很好的库,但你没有告诉我从哪里开始,也没有告诉我删除pdf限制的示例在哪里。另外,我从来没有提到过密码。你告诉我从哪里开始探索这个库,但你甚至没有向我展示一行包含我需要的代码,甚至没有展示其中的一小部分。50%是关于密码的,50%是关于libs链接/引用…密码。我不知道你为什么这么想我不是在用作曲家,如何将库包含在.php文件中?您可以直接从下载库并使用它。我已经下载了库,现在正在测试您的代码,但它抛出:致命错误:C:\xampp\htdocs\myproject\php\libs\php-pdftk-0.5.0\ArteeCode.php中找不到类“mikehaertl\pdftk\Pdf”,请解释如何使用该库?我将PHP与XAMPP结合使用。我没有使用composer或laravel。我已经下载了库,但是您发布的代码抛出了该错误。mikehaertl/php pdftk也会有同样的问题,因为我认为需要安装
pdftk
。据我所知,没有纯PHP或JavaScript解决方案。您可以尝试第三方解决方案,将工作分包出去,但这是有代价的。