27
Januar
2022
19:21

Funktionen mit PDF-Dateien von Linux-Befehlszeilen

27 Januar 2022 19:21

Bei der Arbeit beschäftige ich mich oft mit PDF-Dateien – dem Zusammenführen und Komprimieren von Dateien. Um Windows nicht neu zu starten, wo ich zuvor das Dienstprogramm „PDF tools free“ verwendet habe, habe ich diesen Vorgang automatisiert, indem ich die entsprechenden Befehle für die Stapelkonvertierung und -verarbeitung von PDF in JPEG, JPEG in PDF, PDF in PDF ausgewählt habe (wodurch die Dateigröße reduziert wurde). ).

Artikel Funktion Terminalbefehl
1. Fügen Sie mehrere PDF-Dateien in einer einzigen Datei zusammen output.pdf
infile1.pdf+infile2.pdf+infile3.pdf = output.pdf
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile='output.pdf' 'infile1.pdf' 'infile2.pdf' 'infile3.pdf'

oder

qpdf --empty --pages infile1.pdf infile2.pdf -- output.pdf
Fügen Sie mehrere Seiten aus PDF-Dateien in einer einzigen Datei zusammen output.pdf

infile1.pdf(p.1, 12-13)+infile2.pdf(p.1-10)+infile3.pdf(p.44) = output.pdf
qpdf --empty --pages infile1.pdf 1,12-13 infile2.pdf 1-10 infile3.pdf 44 -- output.pdf
2. Aufteilen der Seiten der PDF-Datei, von 5 auf 7 und 12 in die neue Datei output.pdf qpdf input.pdf --pages . 5-7,12 -- output.pdf

oder

qpdf --empty --pages input.pdf 5-7,12 -- output.pdf
Ordnen Sie die Seiten in der PDF-Datei von 1,2,3,4 auf 4,3,2,1 um und speichern Sie das Ergebnis in einer neuen Datei output.pdf qpdf 'infile.pdf' --pages . 4,3,2,1 -- output.pdf
Erste Seite löschen aus der Eingabedatei, die aus 16 Seiten besteht qpdf infile.pdf out.pdf --pages infile.pdf 2-17 --

или

qpdf 'infile.pdf' --pages . 2-17 -- output.pdf
Letzte Seite löschen aus einer PDF-Datei mit 16 Seiten qpdf infile.pdf out.pdf --pages infile.pdf 1-16 --
Einige Seiten löschen aus der Eingabe-PDF-Datei, die aus 17 Seiten besteht: Seitennummer 6 und Seiten im Bereich 10–12 löschen qpdf infile.pdf out.pdf --pages infile.pdf 1-5,7-9,13-17 --
3. Alle Seiten in der PDF-Datei um 180 Grad drehen qpdf in.pdf out.pdf --rotate=+180
Drehen Sie die Seiten Nr. 1 und Nr. 2 um 90 Grad im Uhrzeigersinn qpdf in.pdf' out.pdf --rotate=+90:1-2
Drehen Sie Seite Nr. 3 um 90 Grad gegen den Uhrzeigersinn qpdf in.pdf' out.pdf --rotate=-90:3
Alle Seiten in PDF-Dateien im aktuellen Verzeichnis um 90 Grad im Uhrzeigersinn drehen for f in $(ls ./*.pdf); do qpdf $f $f.out --rotate=+90; rm $f; mv $f.out $f; done
4. PDF-Datei in Seiten aufteilen, jede Seite in einer separaten Datei speichern : infile.pdf -> out-1.pdf, out-2.pdf, ..., out-n.pdf qpdf infile.pdf out.pdf --split-pages
5. PDF in Seiten aufteilen, mit dem angegebenen Ausgabedateinamen (Maske) outXX.pdf:
infile.pdf -> out01.pdf, out02.pdf, ..., outNN.pdf (Split pages with file mask %d)
qpdf --split-pages=1 infile.pdf out%d.pdf
6. PDF in JPG konvertieren mit einer Pixeldichte von 300 dpi und JPEG-Qualität q=30 (hohe Komprimierung), Bilder jeder Seite im Ordner „images“ ablegen, alle Dateien mit dem Präfix „pg-“ für die Paginierung pg-01 .jpg, pg-02.jpg, etc. mkdir -p images && pdftoppm -jpeg -r 300 -jpegopt quality=30 'infile.pdf' images/pg
7. Stapelkonvertierung jeder JPG-Datei in eine PDF-Datei for f in $(ls images/*.jpg); do convert $f $f.pdf ; done
8. Fügen Sie alle PDF-Dateien im Ordner „Bilder“ zu einer einzigen PDF-Datei zusammen qpdf --empty --pages ./images/*.pdf -- output.pdf
9. Einzelne PDF-Datei erneut komprimieren (Hinweis: Durch die Ausführung dieses Befehls wird die Dateigröße manchmal nicht reduziert: Dies hängt vom Komprimierungsverhältnis der Quelldatei ab) gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf infile.pdf
10. Komprimieren Sie alle PDF-Dateien erneut im aktuellen Ordner und legen Sie das Ergebnis im Ordner „komprimiert“ ab. Das Ergebnis wird im komprimierten Katalog angezeigt.

Siehe Hinweis oben.
mkdir -p compressed && for f in $(ls out*.pdf); do gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=./compressed/$f $f; done
11. PDF-Datei extrem komprimieren mit einem einzigen Befehl mkdir -p images && pdftoppm -jpeg -r 96 -jpegopt quality=30 'infile.pdf' images/pg && for f in $(ls images/pg-*.jpg); do convert $f $f.pdf ; done && qpdf --empty --pages ./images/*.pdf -- outfile.pdf && rm -R images
12. JPG-Auflösung auf 25 % reduzieren, der Reihenfolge nach neu nummerieren und in JPG-Dateien mit JPEG-Qualität q=50 (hohe Komprimierung) speichern, Bilder im Ordner „images“ ablegen mkdir -p images && i=1 ; for f in $(ls *.jpg); do convert -resize 25% -quality 50 $f ./images/img$i.jpg ; let i=i+1; done
13. JPG-Auflösung auf 700x525 reduzieren, Auto-Levels anwenden, Scharfzeichnen-Filter anwenden, Neunummerierung in der Reihenfolge durchführen und in JPG-Dateien mit JPEG-Qualität q=50 (hohe Komprimierung) speichern. Bilder im Ordner „Images“ ablegen mkdir -p images && i=1 ; for f in $(ls *.jpg); do convert -resize 700x525 -auto-level -unsharp 0.65x0.65+1+0.9+0.04 -quality 50 $f ./images/img$i.jpg ; let i=i+1; done
14. NEU: Automatische Ebenen auf JPEG-Dateien anwenden, JPG-Komprimierungsstufe auf 40 erhöhen (hohe Komprimierung), Dateien unter Originalnamen speichern (Dateien überschreiben)“ mogrify -auto-level -quality 40% *.jpg
15. IN EINER AKTION: Komprimieren Sie alle PDF-Dateien mit angewendeten Auto-Levels und legen Sie das Ergebnis im Ordner „out“ mit dem Namen ab out*.pdf for p in $(ls *.pdf); do mkdir -p images && pdftoppm -jpeg -r 150 -jpegopt quality=100 $p images/pg && for f in $(ls images/pg-*.jpg); do mogrify -auto-level -quality 37% $f; convert $f $f.pdf ; done && qpdf --empty --pages ./images/*.pdf -- 'out'$p && echo $p && echo $p && rm -R images; done
16. IN EINER AKTION: Komprimieren Sie alle PDF-Dateien *.pdf, Seiten in Graustufen konvertieren mit angewendeten Filtern für automatische Tonwertkorrektur und Schärfen und legen Sie das Ergebnis im selben Ordner mit Namen ab out*.pdf shopt -s nocaseglob && for p in $(ls *.pdf); do mkdir -p images && pdftoppm -jpeg -r 150 -jpegopt quality=100 $p images/pg && for f in $(ls images/pg-*.jpg); do mogrify -colorspace gray -auto-level -sharpen 15% -quality 30% $f; convert $f $f.pdf ; done && qpdf --empty --pages ./images/*.pdf -- 'out'$p && echo $p && rm -R images; done
17. IN EINER AKTION: Komprimieren Sie alle PDF-Dateien *.pdf mit angewendeten Filtern für automatische Tonwertkorrektur, Größenänderung und Schärfen und legen Sie sie im Ordner mit dem Namen ab „compressed“. mkdir compressed && shopt -s nocaseglob && for p in $(ls *.pdf); do mkdir -p images && pdftoppm -jpeg -r 150 -jpegopt quality=100 $p images/pg && for f in $(ls images/pg-*.jpg); do mogrify -auto-level -quality 37% $f; convert $f $f.pdf ; done && qpdf --empty --pages ./images/*.pdf -- './compressed/'$p && echo $p && rm -R images; done

Wenn beim Ausführen eines der Befehle ein Fehler auftritt "convert-im6.q16: attempt to perform an operation not allowed by the security policy PDF' @ error/constitute.c/IsCoderAuthorized/421."`, Sie müssen Folgendes tun:

  • öffnen Datei policy.xml im Editor, zum Beispiel, nano. Der Speicherort der XML-Datei hängt von der ImageMagick-Version ab /etc/ImageMagick-6/policy.xml (or -7):
    sudo nano /etc/ImageMagick-6/policy.xml
    oder
    sudo nano /etc/ImageMagick-7/policy.xml
  • Suchen Sie den Abschnitt „“ und gehen Sie zum Ende vor dem </policymap> Etikett
  • Zeichenfolge einfügen
    <policy domain="coder" rights="read | write" pattern="PDF" />
  • Speichern Sie die Änderungen der Datei „policy.xml“ und beenden Sie den Editor.

Letzte Änderung: 21.11.2023 – Zeile Nr. 16 wurde geändert und Zeile Nr. 17 hinzugefügt.
Übersetzung ins Deutsche: 16.02.2024.



Verwandte Veröffentlichungen