Dr. Luthardt's Chemieseiten 

weiter

Best seen with
Get Firefox!

Valid HTML 4.01!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.
Valid CSS!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.

visitors
counter
last modified
08.12.2018

Ihr Browser unterstützt kein CSS. Das für die Darstellung dieser Webseiten intendierte Seitenlayout wird deshalb nicht angewandt / angezeigt. Ist dies nicht Ihre Absicht, so haben Sie wahrscheinlich in Ihrem Browser den Autorenmodus deaktiviert. Dennoch sind diese Seiten les- und navigierbar.
Texte der Infoboxen werden inline ausgegeben.
Bitte erlauben Sie den Autorenmodus oder verwenden Sie einen CSS-fähigen Browser, wenn Sie diese Seiten so anschauen möchten, wie sie vom Autor gestaltet wurden.

Tipps und Tricks

von Michael Luthardtauthor: Michael Luthardt

PDF-Dateien verkleinern

Mitunter steht man vor der Notwendigkeit, PDFs zu verkleinern. Dies ist schon vielfach besprochen worden und kann unter Linux mit Ghostscript (gs) leicht erledigt werden.

Allerdings ist gs in seinen Optionen ein derart umfangreiches Programm, dass dem gelegentlichen Anwender der Überblick schwer fällt.

Ihr Browser kann das Objekt leider nicht anzeigen! Your browser does not support objects, but you may view this content here.
Hier hilft das nebenstehende Skript. Nehmen Sie eine Anpassung des Schrumpfungsgrades mit dem Parameter -r oder -dPDFSETTINGS vor. Die für letzteren wählbaren Werte sind /screen, 72 dpi, /ebook, 150 dpi, /printer, 300 dpi, /prepress, 300 dpi, color preserving und /default, entspricht im Wesentlichen der vorgefundenen Auflösung. Rendering-Parameter werden ensprechend -dPDFSETTINGS durch gs automatisch gesetzt. Dem Skript und damit gs lassen sich auch PostScript-Dateien .(e)ps übergeben0. Eingebetteter Text (OCR oder über "Drucken in Datei") bleibt dabei erhalten.
Eine andere mögliche Parameterkombination ist, auf -dPDFSETTINGS zu verzichten und die Auflösung mit dem Schalter -r zu setzen, zum Beispiel gs -q -o -r150 $NEWNAME ….
Welche Parameterkombination zu wesentlicher Verkleinerung bei akzeptabler Qualität führt, muss man gegebenenfalls durch Ausprobieren finden. Sehr viel hängt dabei von der Ausgangsqualität eines Scans ab.

Leider führt dieses Vorgehen nicht immer zum Erfolg. Evtuell vergößert sich die PDF-Datei, die Unschärfe nimmt störend zu oder die Datei wird unbrauchbar. Deshalb achtet das Skript darauf, dass das Original nicht überschrieben wird.

Informationen zu Ghostscript und den verwendeten Parametern finden Sie hier:
How to use Ghostscript
Ghostscript and the PostScript language
ps2pdf: PostScript-to-PDF converter

Die Stolperfallen Sicherheit und DOCINFO

Beim Verkleinern wird das Dokument mit dem Drucker pdfwrite neu gedruckt. Dies ist nur dann möglich, wenn wenn das Originaldokument in den PDF-Sicherheitseinstellungen, mit oder ohne Passwort, zum Drucken freigegeben ist. Unter Linux reicht die Freigabe "Drucken", die das Drucken nur mit niedriger Auflösung1 erlaubt, allein nicht aus.

Ist das Dokument zum Drucken mit hoher Auflösung freigegeben und sind keine Rechte explizit gesetzt, werden beim Erzeugen des neuen Dokuments die vorhandenen Sicherheitseinstellungen übernommen.
Achtung Sind jedoch Rechte, auch mit Passwort, explizit gesetzt, gehen diese beim Erzeugen des neuen Dokuments verloren!2 Um das zu vermeiden, müssen die Rechte und das Passwort beim Erzeugen neu gesetzt werden. Dies geschieht mit den folgenden Parametern:

-sOwnerPassword=geheim \
-sUserPassword= \
-dPermissions=-1340 \
-dEncryptionR=3 \
-dKeyLength=128 \

Mit UserPassword kann zusätzlich ein Öffnen-Passwort gesetzt werden.

Der Permissions-Parameter ist in Ghostscript eine 16 bit-Zahl. Welche bits wie gesetzt werden müssen, ist in Tabelle 3.20 der PDF Reference, Sixth Edition, version 1.73 beschrieben. Addieren Sie bit 1-16, um den Wert für Permissions zu erhalten.
Sie können diesen Wert direkt als positive Zahl verwenden – im Beispielskript sind mit 64196 die Rechte "Drucken mit hoher Auflösung" und "Erleichterung der Zugänglickkeit" gesetzt – oder das Zweierkomplement als negative Zahl. Für 64196 ist das -1340.
Wenn man die Berechtigung z. B. mit grep -aE '/P \-?[[:digit:]]+' <PDF> | strings | sed -ne 's/.*\(P -\?[[:digit:]]\+\).*/\1/p' aus einer mit einem PDF-Programm erstellten Datei ausliest4 erhält man stets das Zweierkomplement. Daraus lassen sich die gesetzten Berechtigungen zurück rechnen.

Achtung Verloren gehen auch die Dokumenteneigenschaften (DOCINFO pdfmark) wie Titel, Autor &c. Werden Sie benötigt, lassen sie sich dem Skript als 2. oder 3. Parameter übergeben.
Mögliche Schlüsselworte sind Author, CreationDate, Creator, Producer, Title, Subject, Keywords und ModDate. Zu Einzelheiten siehe die pdfmark-Dokumentation. Benutzt werden sie als /key(value)-Paare und gs mit -c "[/key1(value)/key2(value)/.../DOCINFO pdfmark" übergeben.

Hier einige Beispiele für die Benutzung des Skripts shrinkpdf.sh.

shrinkpdf.sh grossePDF.pdf
Verkleinert grossePDF.pdf entsprechend der gewählten Qualitätsstufe, setzt das Bearbeiten-Passwort auf "foobar" und die öffentlichen weiter Berechtigungen auf Drucken mit hoher Qualität unter Verbesserung der Barrierefreiheit zu grossePDF_shrunk.pdf. Eventuell vorhandene Dokumenten-Informationen gehen verloren.

shrinkpdf.sh grossePDF.pdf kleinePDF.pdf '-c "[/Title(Sch\366ne Sache)/Author(M\344xchen M\374ller)/Subject(Ein Test)/CreationDate(201201021821)/Keywords(pdf verkleinern)/DOCINFO pdfmark" -f'.
Verkleinert grossePDF.pdf zu kleinePDF.pdf und fügt die weiter DOCINFO hinzu.

oktal_escape_pdf
Umlaute und Sonderzeichen müssen oktal maskiert werden. Die Tabelle zeigt die Werte für Adobe PDF.

Für die Übergabe der DOCINFO als Parameter muss gs mit eval ausgewertet werden. Deshalb kann Pfad/Dateiname keine Leerzeichen enthalten. Angesichts der Wichtigkeit der DOCINFO ist dies hinnehmbar.

Um grosse PDF schneller anzuzeigen (fast web view) läßt sich deren innere Struktur optimieren. Mit gs muss dies in einem eigenständigen Aufruf über pdfopt input.pdf output.pdf erfolgen. Dabei dürfen für die Datei keine passwortgeschützten Rechte vergeben sein. Wollen Sie eine PDF nach dem schrumpfen noch optimieren, müssen Sie die Zeilen

-sOwnerPassword=foobar \
-sUserPassword= \
-dPermissions=64196 \
-dEncryptionR=3 \
-dKeyLength=128 \

aus dem Skript entfernen.
Ob bei einer nochmaligen Anwendung von shrinkpdf.sh diese Optimierung verloren geht, weiß ich nicht. Hinweise sind willkommen.

Zu Besonderheiten in LibreOffice siehe weiter dort.

Kompatibilität

Seit Acrobat 9 ist 256 bit-Verschlüsselung möglich. Solche Dokumente lassen sich unter Linux mit Qoppa PDF Studio 8 erstellen und mit AcroRead 9 für Linux oder mit Qoppa lesen. Aufwärtskompatibilität zu Acobat/AcoRead X unter Windows ist gegeben.

Ghostscript 9 beherrscht 256 bit-Verschlüsselung nicht.

Achtung Die Verschlüsselung der Berechtigungen5 in Acobat X unter Windows – für Linux gibt es AcroRead X vorläufig? nicht – ist mit Version 9 nicht kompatibel. Für Acrobat X Dokumente mit gesetzten Berechtigungen ist Linux zur Zeit leider no-go area.

           
0 Das Programm ps2pdf ruft seinerseits gs zur eigentlichen Umwandlung auf.
1 Realisiert über "Drucken als Bild". Dies ist unter UNIXen nicht möglich.
2 Andererseits ein Weg, Sicherheitseinstellungen aus PDFs zu entfernen. Will man dies vermeiden, muss das Recht zum Drucken gesperrt werden!
3 Die in den Errata beschriebenen Ergänzungen scheinen mit gs nicht zu funktionieren.
4 Sofern Rechte explizit gesetzt sind.
5 Werden Berechtigungen gesetzt, ist dies immer mit Verschlüsselung verbunden! Leider gibt es in Acrobat X nicht die Möglichkeit, Berechtigungen mit Acrobat 9-Kompatibilität oder 128 bit Verschlüsselung zu setzen.

02.01.2012/02.05.2016

 nach oben

Änderungen dieser Seite verfolgen:

it's private by ChangeDetection