我编写了以下(可运行)程序,它创建了一个具有可调整的禁止访问权限的arara
密码锁定程序:pdf
secure.yaml
!config
# GhostScript-ps2pdf password-security rule for arara
# version: 0.1b
# requires arara 3.0+
identifier: secure
name: Secure
command: <arara> @{program} -sOwnerPassword=@{ownerpw} -sUserPassword=@{userpw} -dEncryptionR=@{encryptionmethode} -dKeyLength=@{keylength} -dPermissions=@{permission} @{getBasename(file)}.pdf @{outputpath}@{getBasename(file)}@{nameaffix}.pdf
arguments:
- identifier: program
flag: <arara> @{parameters.program}
default: ps2pdf
- identifier: ownerpw
flag: <arara> @{parameters.ownerpw}
default: aaa
- identifier: userpw
flag: <arara> @{parameters.userpw}
default: bbb
- identifier: encryptionmethode
flag: <arara> @{parameters.encryptionmethode}
default: 3
- identifier: keylength
flag: <arara> @{parameters.keylength}
default: 128
- identifier: permission
flag: <arara> @{parameters.permission}
default: 0
- identifier: nameaffix
flag: <arara> @{parameters.nameaffix}
default: _sec
- identifier: outputpath
flag: <arara> @{parameters.outputpath}
default: C:\Secret\
我想改变最后两个identifier
。
1. 问题“ nameaffix
”
如果不使用-Option,则默认ouputpath
会在同一个工作文件夹中创建一个文件。jobname_sec.pdf
我想要一个像这样的选项%arara: secure: {nameaffix: false}
,这样就会生成一个“安全”文件jobname.pdf
,这意味着“不安全”的文件将被“覆盖”。
编辑1:
所以,我觉得第一个问题不是问题,因为:
% arara: pdflatex
% #arara: secure: { userpw: foo }
% #arara: secure: { userpw: foo , nameaffix: -mostsecret }
% #arara: secure: { userpw: foo , nameaffix: "" }
% in this order:
% <"nothing"> yields: jobname_sec.pdf, the default
% <nameaffix: -mostsecret> yields jobname-mostsecret.pdf
% <nameaffix: ""> yields jobname.pdf; but a different outputpath is needed!!!
\documentclass{article}
\begin{document}
\section{My very secret Text}
......
\end{document}
2. 问题“ outputpath
”
我怎样才能将此选项作为纯可选参数?这意味着:
%arara: secure: {...}
如果有不 ... outputpath: C:/...
声明后,将使用相同的工作文件夹来写入“安全”文件。
我希望我已经解释了我的问题,让您容易理解;)感谢您的阅读和关注。
编辑2:
对于第二个问题,我的想法是这样的:
- identifier: outputpath
flag: <arara> @{parameters.outputpath}
default: <arara> @{ getDirname(file) }
是需要的。但这可能并不完全正确,因为:
在这种情况下
% #arara: secure: { userpw: foo , outputpath: \SecrectDocuments\TodaysSecretDocuments }
使用了“outputpath”(里面有一个正确的文件)。
但:
在这种情况下
% arara: secure: { userpw: foo }
这意味着,如果没有,则在工作文件夹中创建了outputpath
一个名为的文件。我怎样才能删除这个前缀'nulljobname_sec.pdf
无效的“?
PS:也欢迎提出改进建议/想法!
备注:我忘了,为了测试 arara-secure,使用以下 MWE 例如:
% arara: pdflatex
% arara: secure: { userpw: foo , permission: 0 }
\documentclass{article}
\begin{document}
\section{My very secret Text}
......
\end{document}
答案1
很抱歉,我搜索的东西并不是真正需要的。
它的效果正如预期,我喜欢它,我喜欢 arara - 我希望你也喜欢 :()
请注意那个非常微小的变化。
!config
# GhostScript-ps2pdf password-security rule for arara
# version: 0.2b
# requires arara 3.0+
identifier: secure
name: Secure
command: <arara> @{program} -sOwnerPassword=@{ownerpw} -sUserPassword=@{userpw} -dEncryptionR=@{encryptionmethode} -dKeyLength=@{keylength} -dPermissions=@{permission} "@{getBasename(file)}.pdf" "@{outputpath}@{outputfilename}@{nameaffix}.pdf"
arguments:
- identifier: program
flag: <arara> @{parameters.program}
default: ps2pdf
- identifier: ownerpw
flag: <arara> @{parameters.ownerpw}
default: aaa
- identifier: userpw
flag: <arara> @{parameters.userpw}
default: bbb
- identifier: encryptionmethode
flag: <arara> @{parameters.encryptionmethode}
default: 3
- identifier: keylength
flag: <arara> @{parameters.keylength}
default: 128
- identifier: permission
flag: <arara> @{parameters.permission}
default: 0
- identifier: outputpath
flag: <arara> @{parameters.outputpath}
- identifier: outputfilename
flag: <arara> @{parameters.outputfilename}
default: <arara> @{getBasename(file)}
- identifier: nameaffix
flag: <arara> @{parameters.nameaffix}
default: _sec
(请更改您自己的 userpw 和 ownpw 的默认值;))
用法:
%#########################################
%##### %arara: secure ##########################
%#########################################
%# PARAMETERS:
%# See http://svn.ghostscript.com/ghostscript/trunk/gs/doc/Ps2pdf.htm
%# for further informations.
%
%# program: ps2pdf (by default)
%
%# ownerpw: <OwnerPasswort>
%# aaa (by default)
%
%# userpw: <UserPasswort>
%# bbb (by default)
%
%# encryptionmethode: <number>
%# 2 or 3 (default)
%
%# keylength: <number>
%: 40, 48, ... , 128 (default)
%
%# permission: <number>
%# => The sum of following numbers ---> allows
%# 0 ----------> all rights prohibited (default)
%# 4 --> printing
%# 8 --> modifying
%# 16 --> copying contents
%# 32 --> adding / changing text annotations
%# 256 --> filling in (existing) formulary fields
%# 512 --> extracting text / graphics
%# 1024 --> assembling the document
%# 2048 --> adding / changing text annotations
%# -1 ----------> all rights permitted
%
%# nameaffix: <text>
%# _sec (by default)
%#########################################
% arara: pdflatex
% arara: secure: { userpw: foo , permission: 0 }
\documentclass{article}
\usepackage{xcolor}
\pagecolor{yellow!50}
\begin{document}
\section{My very secret Text}
......
\end{document}
一些例子。
a1)在工作文件夹中将生成一个具有特殊用户密码的文件,所有者密码将获取其默认值。
% arara: pdflatex
% arara: secure: { userpw: foo }
\documentclass{article}
\begin{document}
\section{My very secret Text}
......
\end{document}
=> 职位名称_sec.pdf
a2)...此外还应该生成一个特殊的名称前缀。
% arara: pdflatex
% arara: secure: { userpw: foo , nameaffix: -most_secret}
\documentclass{article}
\begin{document}
\section{My very secret Text}
......
\end{document}
=> 职位名称-most_secret.pdf
b)必须在特殊路径下生成一个同名文件(jobname.pdf
)(这是强制性的,否则必须覆盖原始文件)。
% arara: pdflatex
% arara: secure: { userpw: foo , outputpath: 'C:\SecretDocuments\TodaysSecretDocuments\' , nameaffix: ''}
\documentclass{article}
\begin{document}
\section{My very secret Text}
......
\end{document}
=>C:\SecretDocuments\TodaysSecretDocuments\jobname.pdf
nameaffix: ''
删除参数值。
C)随意测试一些其他参数;询问是否存在问题。