Wie mache ich daraus

Wie verschlüssle ich PDF-Dateien mit einem Passwort?

ein arara-Programm?

gefragt 25 Jun '14, 14:39

cis's gravatar image

cis
9.5k92459491
Akzeptiert-Rate: 29%

bearbeitet 28 Jun '14, 17:34

Mein erstes, durchweg funktionierendes, (natürlich mit Blick in andere Beispiele) erstelltes arara-Programm - @Clemens (@Paulo, @Macro) sei stolz auf mich.

(26 Jun '14, 01:30) cis

<> Ist das Problem verständlich formuliert? :()

(26 Jun '14, 12:55) cis

Ich glaube von uns nimmt einfach keiner Arara. Für das Testen von Minimalbeispielen reicht mir latexmk vollkommen aus.

(26 Jun '14, 14:46) Johannes

Ohne arara wäre der Befehl halt ps2pdf -sOwnerPassword=TeXweltgeheim -sUserPassword=TeXwelt -dEncryptionR=3 -dPermissions=-3904 foo.pdf geheim.pdf - aber das weiß halt auch nicht jeder, daher auch großen Dank an @Ijon Tichy. Und bevor ich den Befehl immer wieder raussuchen muß. hab ich halt gern ein komfortables Skript.

(26 Jun '14, 18:02) cis

Komfortabel geht das mit einer richtigen Skriptsprache. Dort kann man dann auch leicht symbolische Optionen für die unterschiedlichen Rechte definieren. Es lohnt sich auf Dauer wirklich, etwas wie Lua (für TeXLua-Skripte), perl oder bash zu lernen. BTW: Das recht komfortable texdoc von TeX Live ist ebenfalls ein TeXLua-Skript. Ich habe mir dort selbst schon einiges abgeschaut.

(26 Jun '14, 18:18) gast3

Jetzt seid nicht so arara-agro und vor allem seid nicht so absolut, sonst gibts Haue von mir und Paulo :() Für jeden Topf den passenden Deckel, kein Taxi rufen, nur um beim ALDI einzukaufen ;) BTW: Ich prüfe gerne mit Strg+D die Dokumentinfos - in der tat sind die Profi-Skripte meist mit Lua geschrieben.

PS: Ich hörte arara, zur Zeit JAVA, könnte künftig aus Lua aufgebaut sein.

(26 Jun '14, 18:29) cis

Ein Grund mehr Lua zu lernen. TeXLua-Skripte und arara schließen sich ja auch nicht gegenseitig aus. Man kann auch ein TeXLua-Skript schreiben, das man dann von arara aufruft. Und wenn dann arara selbst Lua versteht, kann man vermutlich leicht aus dem dann bereits vorhandenen TeXLua-Skript ein arara-Lua-Skript machen. Und eine TeXLua-Lösung ist eben nicht auf arara beschränkt.

Nein, ich will Dich nicht überreden. Ich will nur darauf hinweisen, dass einige Deiner Probleme der letzten Zeit mit einer etwas mächtigeren Skriptsprache u. U. einfacher zu lösen sind als nur mit arara.

(26 Jun '14, 19:12) gast3

Naja, ich bin schon froh, wenn ich mit arara einigermaßen umgehen kann (fürs erste); und vor allem würde ich gerne mal dieses arara-Programm fertig stellen - aber die arara-Q's halten sich zurück :()

(26 Jun '14, 19:59) cis
2

Du könntest doch Paulo auch direkt anschreiben, und dann hier die Loung präsentieren. Wenn einer Ahnung von arara hat, dann er.

Eine Ente im Anhang wird ihn bestimmt freuen ;-)

(26 Jun '14, 20:37) Johannes

Eine Ente, mhh.... Ja, ich denk halt - man muß ihn ja auch nicht mit jedem Kram belästigen. Wenn mir allerdings jmd. sagt, daß was Du willst ist nimmer trivial - dann sieht der Fall natürlich anders aus.

PS: Das Problem -perfekt- in englisch zu schildern ist auch ein wenig problematisch für mich; aber da muß durch.

(26 Jun '14, 20:40) cis

Ich denke, wenn eine Ente da ist, wird Paulo dir dein englisch verzeihen ;-)

(26 Jun '14, 23:18) Johannes

Im Großen und Ganzen sind Autoren freier Software immer sehr hilfsbereit. Das ist doch das Tolle.

(26 Jun '14, 23:20) Johannes

Gut, dann nehme ich mal an, daß es sich nicht einfach nur um eine simple if-Abfrage handelt (für die ich halt zu doof bin) und es sollte der Autor persönlich kontaktiert werden. Wegen der Ente ist es halt so eine Sache: Wollte ich es gescheit machen, müßte ich schon erstmal eine TikZ-Ente erstellen...

(27 Jun '14, 12:24) cis

Eine prinzipielle Einschätzung, ob das Problem lösbar ist, also mit vorhandenen arara-Mitteln wäre ja auch schonmal hilfreich.

(27 Jun '14, 21:12) cis

@cis Es wurde ja festgestellt, dass arara JAVA nutzt (zukünftig evtl. Lua) und somit nur eine Schnittstelle zu den Werkzeugen ist, welche im Terminal verfügbar sind. Momentan fehlt imho einfach das Bedürfnis so etwas zu automatisieren. Und wenn, dann gibt es dafür komfortablere Methoden (bash, perl, etc).

(27 Jun '14, 23:53) Johannes

Jeder sollte das Werkzeug des Vertrauens nutzen (egal ob editor/Scriptsprache/Desktopmanager ...). Ich möchte nie mehr auf Vim verzichten, @clemens nie mehr auf Emacs. Würden wir beide den Rechner tauschen, dann wäre das Ergebnis ein Trauerspiel (Obwohl ich das gern sehen würde), aber jeder ist mit der gewohnten Umgebung unschlagbar.

(27 Jun '14, 23:55) Johannes

Das spielt ja keine Rolle, ob man das braucht oder nicht, es geht ja um die Problemstellung unter bestimmten Voraussetzungen (hier arara als Programm); und ich vermute, das das 1. Problem mit arara-Mitteln allein nicht geht. Mit der console-Regel von @Clemens könnte man es aber wahrscheinlich hinbekommen (mit Befehlen wie rename, del usw.) - wobei hier vll. Linux/Windows/Mac-Probleme auftreten, es spräche also schon viel für eine allgemeinere Lösung.

(28 Jun '14, 01:16) cis

Ich habe noch einen Edit ergänzt.

(28 Jun '14, 11:22) cis

Für das 2. Problem habe ich jetzt auch noch einen Edit ergänzt.

(28 Jun '14, 13:39) cis

Ja, das 2. Problem hat sich dann glaub auch erledigt. Ich hab die Nadel im Heuhaufen gesucht, ohne zu merken, daß ich sie gar nicht brauche.

- identifier: outputpath
  flag:  @{parameters.outputpath}

(no default) Dann kann ich ja die Frage löschen, a) blickt da so sowieso niemand mehr durch, b) ist das ganze scheints frühstens dann interessant wenn es mit perlscript oder so geschrieben wurde (was dann sicher hohes Niveau erfüllt & den vernachlässigbaren Nebeneffekt, daß es kaum noch ein Normalnutzer anwenden kann) und Überzeugungsarbeit ist sowieso nicht meine Stärke :()

(28 Jun '14, 16:09) cis
Ergebnis 5 von 20 show 15 more comments

Falls es doch jmd. interessiert.

secure.yaml

Open in writeLaTeX
!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

(bei den Paßwörtern am besten eigene Defaults setzen)

Benutzung:

Open in writeLaTeX
%#########################################
%##### %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 oder 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[ngerman]{babel}
\usepackage{xcolor}
\pagecolor{yellow!50}

\begin{document}
\section{Mein geheimer Text}
......
\end{document}

alt text

Ein paar Beispiele.

a1) Es soll (im Arbeitsordner) eine Datei mit speziellem Benutzerpaßwort erstellt werden, das Besitzerpaßwort soll seinen Defaultwert annehmen.

Open in writeLaTeX
% arara: pdflatex
% arara: secure: { userpw: foo }

\documentclass{article}
\begin{document}
\section{Mein geheimer Text}
......
\end{document}

=> jobname_sec.pdf

a2) ... zuätzlch soll ein individueller Namenszusatz verwendet werden.

Open in writeLaTeX
% arara: pdflatex
% arara: secure: { userpw: foo , nameaffix: -geheim }

\documentclass{article}
\begin{document}
\section{Mein geheimer Text}
......
\end{document}

=> jobname-geheim.pdf

b) Es soll eine namensgleiche Datei (jobname.pdf) erzeugt werden, und zwar in einem speziellen Verzeichnis (das ist in dem Fall zwingend notwendig, weil sonst die Originaldatei überschrieben werden müßte).

Open in writeLaTeX
% arara: pdflatex
% arara: secure: { userpw: foo , outputpath: 'C:\GeheimeDokumente\AktuelleGeheimeDokumente\' , nameaffix: ''}

\documentclass{article}
\begin{document}
\section{Mein geheimer Text}
......
\end{document}

=> C:\GeheimeDokumente\AktuelleGeheimeDokumente\jobname.pdf

nameaffix: '' erzeugt hier einen leeren Parameterwert.

€dit: c) Ich habe noch die Option outputfilename ergänzt (mit getBasename(file) als Default); Bsp.:

Open in writeLaTeX
% arara: pdflatex
% arara: secure: { userpw: foo , outputfilename: EinAndererName ,  nameaffix: -geheim}     
\documentclass{article}
\begin{document}
\section{Mein geheimer Text}
......
\end{document}

=> EinAndererName-geheim.pdf

d) Testen der weiteren Einstellungen, Parameterwerte (z.B. der Permissionsnummer) und Effekte, überlasse ich dem interessierten Nutzer. Fragen sind natürlich erlaubt.

PS: Ich konnte das Programm selbst nur unter Windows testen. Es wurde zwar nichts Windows-spezifisches gemacht, aber eine Rückmeldung der Linux-Nutzer wäre nett.

Permanenter link

beantwortet 28 Jun '14, 17:32

cis's gravatar image

cis
9.5k92459491
Akzeptiert-Rate: 29%

bearbeitet 29 Jun '14, 16:08

1

@cis Danke für das Posten der Lösung! Ich habe das Thema (einschließlich der anderen Fragen und Antworten) auch lesend verfolgt. Du stellst ja viele sehr interessante Probleme in den Raum, ich freue mich darüber, auch wenn ich gerade oft nur zum Lesen komme und wenig zum Lösung-Erarbeiten.

(28 Jun '14, 17:48) stefan ♦♦

@Stefan: Du meinst mit 'viele' sicher insb. die "Schriftenübersicht"; wenn Du davon (in diese 'vielen') irgendwo Zeit/Mühe investieren willst/kannst, dann darin :()

PS: Natürlich gibt es immer andere Möglichkeiten (z.B. Zusatzsoftware), aber ich finde das halt grundsätzlich elegant, wenn man komplett dokumentintern arbeiten kann.

(28 Jun '14, 20:58) cis
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×30
×4
×2

gestellte Frage: 25 Jun '14, 14:39

Frage wurde gesehen: 9,350 Mal

zuletzt geändert: 29 Jun '14, 16:08