如何计算 Ghostscript 命令行中的 dPermissiions 参数?
How to calculate dPermissiions parameter in the Ghostscript command line?
我正在寻找在线计算器、工具或至少是一篇易于理解的文章,它可以让我定义 Ghostscript 命令行的 dPermissiions
参数的值。
请指教!
它记录在 VectorDevices.htm 中,其中说明它是一个位字段并引导您访问 PDF 参考手册。实际值由 Adobe 定义。
标准安全处理程序(1.7 PDF 参考手册的第 121 页)中描述了各种访问权限,Table 3.20(1.7 PDF 参考手册中的第 124 和 124 页)描述了各个位。
第 1 位和第 2 位(最低的 2 位)始终定义为 0,因为(当前)是第 13-32 位。恼人的是,第 7 位和第 8 位是保留位,必须为 1。
假设您想授予打印文档的权限,为此您需要设置位 3。因此位 1-2 为 0,位 4-32 也为 0,位 7 和 8 必须为1. 在二进制中对应于:
00000000 00000000 00000000 11000100
十六进制为 00 00 00 C4,十进制为 196。因此您可以设置 -dPermissions=196
举一个更复杂的例子,我们可能还想设置位 12 以允许高质量打印(对于安全处理程序的修订版 3 或更高版本)。现在我们要设置二进制的第 3 位和第 12 位:
00000000 00000000 00001000 11000100
十六进制 00 00 08 C4,十进制为 2244,因此您可以设置 -dPermissions=2244
Windows 计算器在设置为程序员模式时具有二进制输入配置。如果您以二进制输入位域,然后切换为十进制,它会为您转换。或者有一个在线转换工具 here.
只需写出您想要设置为二进制的位,设置位 7 和 8,然后转换为十进制,简单!
--编辑--
因此,正如 Vsevolod Azovsky 指出的那样,第 12-32 位应该是 1。使用我在上面指出的相同工具,您可以获得二进制表示的带符号 2 的十进制补码,您可以将其用作值权限。
但是,如果您这样做,Ghostscript 的 pdfwrite 设备将产生警告。原因是我在上面设置的一些位(位 8 以上的任何位)仅与修订版 3(或更好)安全处理程序兼容,而 pdfwrite 的默认设置是使用修订版 2 安全加密。
因此,如果您想使用 Adobe 文档中标记为 'revision 3' 的位,那么您(显然)需要使用 -dEncryptionR=3
将修订版设置为 3。这要求输出的 PDF 文件是 1.4 或更高版本的文件,您不能将修订版 3 与 PDF 1.3 文件一起使用。
请注意,对于修订版 2 安全处理程序,所有位 1-2 和 7-32 都必须为 1。
希望这也能回答上一条评论中的问题。
我正在寻找在线计算器、工具或至少是一篇易于理解的文章,它可以让我定义 Ghostscript 命令行的 dPermissiions
参数的值。
请指教!
它记录在 VectorDevices.htm 中,其中说明它是一个位字段并引导您访问 PDF 参考手册。实际值由 Adobe 定义。
标准安全处理程序(1.7 PDF 参考手册的第 121 页)中描述了各种访问权限,Table 3.20(1.7 PDF 参考手册中的第 124 和 124 页)描述了各个位。
第 1 位和第 2 位(最低的 2 位)始终定义为 0,因为(当前)是第 13-32 位。恼人的是,第 7 位和第 8 位是保留位,必须为 1。
假设您想授予打印文档的权限,为此您需要设置位 3。因此位 1-2 为 0,位 4-32 也为 0,位 7 和 8 必须为1. 在二进制中对应于:
00000000 00000000 00000000 11000100
十六进制为 00 00 00 C4,十进制为 196。因此您可以设置 -dPermissions=196
举一个更复杂的例子,我们可能还想设置位 12 以允许高质量打印(对于安全处理程序的修订版 3 或更高版本)。现在我们要设置二进制的第 3 位和第 12 位:
00000000 00000000 00001000 11000100
十六进制 00 00 08 C4,十进制为 2244,因此您可以设置 -dPermissions=2244
Windows 计算器在设置为程序员模式时具有二进制输入配置。如果您以二进制输入位域,然后切换为十进制,它会为您转换。或者有一个在线转换工具 here.
只需写出您想要设置为二进制的位,设置位 7 和 8,然后转换为十进制,简单!
--编辑--
因此,正如 Vsevolod Azovsky 指出的那样,第 12-32 位应该是 1。使用我在上面指出的相同工具,您可以获得二进制表示的带符号 2 的十进制补码,您可以将其用作值权限。
但是,如果您这样做,Ghostscript 的 pdfwrite 设备将产生警告。原因是我在上面设置的一些位(位 8 以上的任何位)仅与修订版 3(或更好)安全处理程序兼容,而 pdfwrite 的默认设置是使用修订版 2 安全加密。
因此,如果您想使用 Adobe 文档中标记为 'revision 3' 的位,那么您(显然)需要使用 -dEncryptionR=3
将修订版设置为 3。这要求输出的 PDF 文件是 1.4 或更高版本的文件,您不能将修订版 3 与 PDF 1.3 文件一起使用。
请注意,对于修订版 2 安全处理程序,所有位 1-2 和 7-32 都必须为 1。
希望这也能回答上一条评论中的问题。