Pig*_*vel 6 php pdf ghostscript password-protection
我需要在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");
Run Code Online (Sandbox Code Playgroud)
Ken*_*enS 11
好的,首先您不需要将文件转换为PostScript.Ghostscript完全能够将PDF文件作为输入并生成PDF文件作为输出,很多人这样做有很多原因.
但是,你需要知道,如果你这样做,Ghostscript不只是"标记"PDF文件或其他东西,它完全将其解释为标记操作,然后制作一个包含这些标记的全新PDF文件.但如果您对转换为PostScript并返回PDF感到满意,您应该会发现这种情况令人满意,它实际上比进行2步转换要好.
其次,pdfwrite设备没有'PDFPassword'开关,这就是它没有效果的原因.有2个开关:-sOwnerPassword和-sUserPassword.您可能还想提供-dPermissions交换机.
您应该阅读PDF参考手册以收集详细信息,但简而言之,所有者可以对文件执行任何操作,用户仅限于权限(这是一个位字段).如果您不提供用户密码,则任何人都可以打开该文件(仅限于权限),但您需要提供所有者密码才能执行权限不允许的任何操作.我怀疑这是你想要做的,但它取决于你.
上面的答案对我不起作用,所以我发布我的答案。
幽灵脚本版本:
manan@manan-EliteBook-8470p ~ $ gs -v
GPL Ghostscript 9.18 (2015-10-05)
Copyright (C) 2015 Artifex Software, Inc. All rights reserved.
Run Code Online (Sandbox Code Playgroud)
将起作用的命令...
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dBATCH -dNOPROMPT -dNOPAUSE -dQUIET -sOwnerPassword=mypassword -sUserPassword=manan -sOutputFile=MyOutputFile.pdf MyInputFile.pdf
Run Code Online (Sandbox Code Playgroud)