php - 使用 Ghostscript 密码保护 PDF

标签 php pdf password-protection ghostscript

我需要在 php 中使用 ghostscript 为 PDF 文件设置密码保护。

这些文件将使用简单的形式上传到服务器(我不需要任何帮助),但它们一开始没有任何保护。所以我想在其中使用 exec 函数和 ghostscript 对它们进行密码保护。但是我在任何地方都找不到 ghostscript 查询应该是什么样的。

例如,我有一个名为 File.pdf 的 PDF 文件。我上传它,然后我需要对其进行保护并将其命名为 File_protected.pdf。

我试图这样做,但是“.ps”文件的权重太大,最终的 File_protected.pdf 中没有密码:

exec("gs -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=File.ps File.pdf");
exec("gs -dNOPAUSE -dBATCH -sPDFPassword=password -sDEVICE=pdfwrite -sOutputFile=File_protected.pdf File.ps");

最佳答案

好的,首先您不需要将文件转换为 PostScript。 Ghostscript 完全能够将 PDF 文件作为输入并生成 PDF 文件作为输出,很多人出于多种原因这样做。

但是,您需要注意,如果您这样做,Ghostscript 不仅仅是“标记”PDF 文件或其他内容,它会将其完全解释为标记操作,然后制作一个包含这些操作的全新 PDF 文件分数。但是,如果您对转换为 PostScript 并返回为 PDF 感到满意,您应该会感到满意,这实际上比进行两步转换要好。

其次,pdfwrite 设备没有“PDFPassword”开关,这就是它不起作用的原因。有 2 个开关:-sOwnerPassword-sUserPassword。您可能还想提供 -dPermissions 开关。

您应该阅读 PDF 引用手册以了解详细信息,但简而言之,所有者可以对文件执行任何操作,用户仅限于权限(这是一个位域)。如果您不提供用户密码,那么任何人都可以打开该文件(仅限于权限),但您需要提供所有者密码才能执行权限不允许的任何操作。我怀疑这是您想要做的,但这取决于您。

关于php - 使用 Ghostscript 密码保护 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12921006/

相关文章:

javascript - 在 CodeIgniter 中高效压缩 CSS 和 JS

php - Codeigniter 无法从 URL 中删除索引

pdf - 我正在使用 Rotativa 工具来显示 pdf。它在本地主机上运行良好,但在 Azure 平台上不起作用

tensorflow - 有人找到了使 Tensorboard 受密码保护的方法吗?

javascript - 需要密码/密码短语才能使用 Wordpress 查看类别内容

url - Lighttpd:如何对匹配正则表达式的 URL 进行密码保护

php - 更改了 MySQL 的 root 密码,现在 zurmo 无法连接到数据库

php - 如何获取包含内容作为字符串?

c# - 使用 ITextSharp(旧版本)将多个文件合并为 pdf

javascript - Node.js - jQuery。从服务器获取PDF并在前端显示