
Ich habe mich gefragt, ob es möglich ist, PDF-Dateien mit LuaLaTeX zu schützen (z. B. den Druck-/Kopierungs-/... Zugriff zu kontrollieren).ohne Verwendung von DrittanbietersoftwarewieQPDFoder die in derPDF-VerschlüsselungPaket.
Einige älterePostsagt, dass es mit dem Befehl möglich ist \special
, aber das Beispiel verwendet XeTeX und beim Testen mit LuaLaTeX funktioniert es nicht wirklich wie erwartet. Sie sagen tatsächlich, dass es wahrscheinlich kein Äquivalent für LuaLaTeX gibt:
\special{pdf:encrypt ownerpw (abc) userpw (xyz) length 128 perm 2052}
\documentclass{article}
\begin{document}
This is a test.
\end{document}
Ist dies vielleicht mit LuaLaTeX-Backend-Grundelementen wie möglich \pdfextension
?
Ich wäre dankbar, wenn mir jemand ein MWE zeigen könnte, falls es nur mit LuaLaTeX möglich ist.
Danke,
Dave
Antwort1
Dank an@Benutzer202729Ich konnte die Sicherung/Verschlüsselung von PDF-Dateien automatisieren überQPDF(Dokumentation) innerhalb von LuaLaTeX.
Bei der Nachbearbeitung des PDFs imZusammenfassungPhase wird das Ausgabeverzeichnis über Luas Mustervergleich gelesen:
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
Notiz: Ich kann nicht genau sagen, ob alle Argumentformate davon abgedeckt sind, zumindest alle Formate, die@Benutzer202729hat gepostetHierwerden anerkannt.
QPDF wird dann mit den gewünschten Argumenten ausgeführt:
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")
Vollständiges 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}