我想知道是否可以使用 LuaLaTeX 保护 pdf 文件(例如控制打印/复印/...访问)无需使用第三方软件喜欢定量PDF或列出的pdfcrypt包裹。
有些年纪大一点的邮政说可以使用\special
命令,但其示例使用 XeTeX,而使用 LuaLaTeX 进行测试时,它并没有按预期工作。他们确实说 LuaLaTeX 可能没有等效的:
\special{pdf:encrypt ownerpw (abc) userpw (xyz) length 128 perm 2052}
\documentclass{article}
\begin{document}
This is a test.
\end{document}
是否可能使用类似 LuaLaTeXs 后端原语\pdfextension
?
如果仅使用 LuaLaTeX 即可实现 MWE,那么如果有人可以向我展示,我将不胜感激。
谢谢,
戴夫
答案1
谢谢@用户202729我能够通过以下方式自动保护/加密 pdf 文件定量PDF(文档) 在 LuaLaTeX 中。
在 PDF 的后期处理过程中结束运行阶段,通过 Lua 的模式匹配读取输出目录:
local outdir = nil
for i = 0, #arg, 1 do
if string.find(arg[i], "%-+output%-d[irectory]*%=?%s?") then
outdir = string.gsub(arg[i], "%-+output%-d[irectory]*%=?%s?", "")
end
end
笔记:我不能确切地说这是否涵盖了所有的参数格式,至少是所有格式@用户202729已发布这里得到认可。
然后使用所需的参数执行 QPDF:
os.execute((outdir ~= nil and "cd " .. outdir .. " &&" or "") .. "qpdf " .. tex.jobname .. ".pdf --encrypt userpw ownerpw 256 --accessibility=y --assemble=y --extract=y --form=y --modify-other=y --print=full -- " .. tex.jobname .. "_secure.pdf")
完整 MWE(Windows 10):
\documentclass{book}
\usepackage{luacode}
\begin{luacode}
luatexbase.add_to_callback("wrapup_run", function()
local outdir = nil
for i = 0, #arg, 1 do
if string.find(arg[i], "%-+output%-d[irectory]*%=?%s?") then
outdir = string.gsub(arg[i], "%-+output%-d[irectory]*%=?%s?", "")
end
end
os.execute((outdir ~= nil and "cd " .. outdir .. " &&" or "") .. "qpdf " .. tex.jobname .. ".pdf --encrypt userpw ownerpw 256 --accessibility=y --assemble=y --extract=y --form=y --modify-other=y --print=full -- " .. tex.jobname .. "_secure.pdf")
end, "Callback to secure pdf")
\end{luacode}
\begin{document}
Hello World!
\end{document}