2012-10-16 152 views
5

我需要在php中使用ghostscript对PDF文件进行密码保护。使用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"); 

回答

10

OK所以,首先你不需要转换该文件为PostScript。 Ghostscript完全有能力将PDF文件作为输入并生成PDF文件作为输出,很多人出于各种原因这么做。

但是,您需要注意的是,如果您这样做,Ghostscript不仅仅是'加盖'PDF文件或其他东西,它完全将其解释为标记操作,然后制作一个全新的PDF文件,那些标记。但是,如果您满意地转换为PostScript并返回到PDF,您会发现这种令人满意的效果,实际上比进行两步转换要好。

其次,pdfwrite设备没有'PDFPassword'开关,这就是为什么它没有效果。有交换机:-sOwnerPassword-sUserPassword。您可能还需要提供-dPermissions交换机。

你应该阅读PDF参考手册来收集细节,但总之所有者可以对文件做任何事情,用户被限制在权限(这是一个位域)。如果您不提供用户密码,则任何人都可以打开该文件(仅限于权限),但您需要提供所有者密码才能执行权限不允许的任何操作。我怀疑这是你想要做的,但它取决于你。

+0

非常感谢 –