27
Januar
2022
19:21

Operationen mit PDF-Dateien über die Linux-Befehlszeile

27 Januar 2022 19:21

Bei der Arbeit muss ich oft mit PDF-Dateien arbeiten – Dateien zusammenführen und komprimieren. Um nicht in Windows 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 (Komprimierung) ausgewählt habe.

Vorbereitung:

1) Installieren Sie die erforderlichen Pakete:

sudo apt install poppler-utils imagemagick qpdf

2) Konfigurieren Sie die XML-Datei des Imagemagick-Programms

Andernfalls tritt beim Ausführen eines der Befehle ein Fehler auf "convert-im6.q16: attempt to perform an operation not allowed by the security policy PDF' @ error/constitute.c/IsCoderAuthorized/421."

Wir müssen die Datei „policy.xml“ bearbeiten:

  • Datei zum Bearbeiten öffnen /etc/ImageMagick-6/policy.xml(oder -7 je nach Version):
    sudo nano /etc/ImageMagick-6/policy.xml
    oder
    sudo nano /etc/ImageMagick-7/policy.xml
  • Abschnitt finden <policymap> und gehen Sie bis zum Ende vor dem Tag </policymap>
  • Zeile einfügen
    <policy domain="coder" rights="read | write" pattern="PDF" />
  • Dateiänderungen speichern policy.xml

 

Fertige Lösungen:

Artikel Funktion Terminalbefehl
1. Zusammenführen mehrere PDFs Dateien in eine (Mehrere PDF-Dateien zu einer Datei „output.pdf“ zusammenführen)
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
Zusammenführen mehrere Seiten aus diversen Dateien PDF (Mehrere Seiten aus PDF-Dateien in einer Datei zusammenführen)

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. Isolieren aus den Dateiseiten 5-7 und 12 und speichern Sie sie in einer separaten Datei (Teilen Sie die Seiten 5 bis 7 und 12 in die neue Datei „output.pdf“ auf) qpdf input.pdf --pages . 5-7,12 -- output.pdf

oder

qpdf --empty --pages input.pdf 5-7,12 -- output.pdf
Seitenreihenfolge ändern in der Eingabedatei von 1 2 3 4 bis 4 3 2 1 (Seiten neu anordnen zu 4,3,2,1), in neuer Datei „output.pdf“ speichern (in neuer Datei „output.pdf“ speichern) qpdf 'infile.pdf' --pages . 4,3,2,1 -- output.pdf
Aus einer Datei mit 17 Seiten,löschen first (Erste Seite aus einer Datei mit 16 Seiten löschen) qpdf infile.pdf out.pdf --pages infile.pdf 2-17 --

oder

qpdf 'infile.pdf' --pages . 2-17 -- output.pdf
Aus einer Datei mit 17 Seiten,löschen last (Letzte Seite aus einer Datei mit 16 Seiten löschen) qpdf infile.pdf out.pdf --pages infile.pdf 1-16 --
Aus einer Datei mit 17 Seiten,löschen angegebene Seiten: Nr. 6 und Nr. 10-12 (aus der 17-seitigen Datei Seitennummer 6 löschen und Bereich 10-12) qpdf infile.pdf out.pdf --pages infile.pdf 1-5,7-9,13-17 --
3. Drehen alle Seiten 180 Grad (Alle Seiten um 180 Grad drehen) qpdf in.pdf out.pdf --rotate=+180
Drehen Sie die Seiten Nr. 1 und Nr. 2 90 Grad im Uhrzeigersinn qpdf in.pdf out.pdf --rotate=+90:1-2
Blättern Sie auf Seite 3 um 90 Grad gegen den Uhrzeigersinn qpdf in.pdf out.pdf --rotate=-90:3
Drehen Sie alle PDF-Dateien im aktuellen Verzeichnis nach 90 Grad im Uhrzeigersinn for f in $(ls ./*.pdf); do qpdf $f $f.out --rotate=+90; rm $f; mv $f.out $f; done
4. PDF nach Seite aufteilen, speichern Sie jede Seite in einer separaten PDF-Datei (Seiten aufteilen): infile.pdf -> out-1.pdf, out-2.pdf, ..., out-n.pdf qpdf infile.pdf out.pdf --split-pages
5. PDF nach Seite aufteilen, speichern Sie jede Seite in eine separate PDF-Datei (PDF auf Seiten mit Ausgabedateimaske aufteilen)Angabe der Maske datei: infile.pdf -> out01.pdf, out02.pdf, ..., outNN.pdf (Seiten mit Dateimaske %d teilen) qpdf --split-pages=1 infile.pdf out%d.pdf
6. Konvertieren Sie PDF in JPG platzieren Sie bei einer Pixeldichte von 300 dpi und JPEG-Qualität q=30 (hohe Komprimierung) die Bilder jeder Seite im Ordner „ Bilder", Dateien mit dem Präfix „pg-“ Seitennummerierung pg-01.jpg, pg-02.jpg usw. mkdir -p images && pdftoppm -jpeg -r 300 -jpegopt quality=30 'infile.pdf' images/pg
7. Konvertieren Sie *.jpg-Dateien in PDF-Dateien, ohne sie zusammenzuführen (Stapelkonvertierung von JPG-Dateien in PDF-Dateien ohne Kombination) for f in $(ls images/*.jpg); do convert $f $f.pdf ; done
8. Führen Sie alle PDF-Dateien im Bilderverzeichnis in einer einzigen PDF-Datei „output.pdf“ zusammen. (Fügen Sie alle PDFs im Ordner „images“ zu einer einzigen PDF-Datei zusammen) qpdf --empty --pages ./images/*.pdf -- output.pdf
9. Klemme eine Datei infile.pdf zu komprimiert.pdf (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 out*.PDF-Dateien im aktuellen Verzeichnis mit einem Befehl (Komprimieren Sie alle PDF-Dateien im aktuellen Ordner erneut und legen Sie das Ergebnis im Ordner „komprimiert“) ab. Platzieren Sie das Ergebnis im komprimierten Verzeichnis.

Siehe. siehe oben.
mkdir -p compressed && for f in $(ls *.pdf); do gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=./compressed/$f $f; done
11. Führen Sie mit einem Befehl eine starke Komprimierung der Datei „infile.pdf“ durch (Ultrakomprimierung der PDF-Datei durchführen) 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, tun Umnummerierung in Ordnung und in Dateien speichern JPG mit JPEG-Qualität q=50 (hohe Komprimierung), legen Sie die Bilder im Ordner „ Bilder" 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. Reduzieren Sie die JPG-Auflösung auf 700 x 525 und wenden Sie automatische Ebenen an helligkeit (Autolevels), ein wenig schärfen (schärfen), tun Umnummerierung in Ordnung und in Dateien speichern JPG mit JPEG-Qualität q=50 (hohe Komprimierung), legen Sie die Bilder im Ordner „ Bilder" 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-Komprimierungsverhältnis auf 40 erhöhen (starke Komprimierung), Dateien unter Originalnamen speichern (Dateien überschreiben)" mogrify -auto-level -quality 40% *.jpg
15. IN EINER AKTION: Komprimieren Sie alle *.PDF-Dateien in *PDF mit folgenden Parametern: Auflösung 150 ppi, Q=37 %, Anwenden von Autolevels. Legen Sie das Ergebnis im Ordner „out“ ab. (Komprimieren Sie alle PDF-Dateien mit einer Aktion unter Anwendung automatischer Ebenen und legen Sie das Ergebnis im selben Ordner mit dem Namen out*.pdf ab.) mkdir out && 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 Quelldateien „*.PDF“ in *.PDF mit folgenden Parametern: Auflösung 120 ppi, Q=30 %, in Schwarzweiß konvertieren, automatische Helligkeitsstufen anwenden und um 15 % schärfen. Legen Sie das Ergebnis im Ordner „out“ ab. (Komprimieren Sie alle PDF-Dateien *.pdf mit einer Aktion, mit automatischer Korrektur und Schärfung, und legen Sie das Ergebnis im selben Ordner mit den Namen out*.pdf ab) shopt -s nocaseglob && mkdir out && 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: Scans [markieren]dunkler[/markieren] – alle Dateien „*.PDF“ mit den Parametern komprimieren: Auflösung 200 ppi, Q=37 %, Anwenden von Autolevels, Farbkonvertierung in Graupalette und Gamma=0,5. Legen Sie das Ergebnis im Ordner „out“ ab. (Komprimieren Sie alle PDF-Dateien *.pdf mit einer Aktion, um sie [markieren]dunkler[/markieren] zu lassen – mit automatischer Tonwertkorrektur, Graustufen und Gamma=0,5, und legen Sie das Ergebnis im selben Ordner mit den Namen out*.pdf ab) shopt -s nocaseglob && mkdir out && for p in $(ls pvk.pdf); do mkdir -p images && pdftoppm -jpeg -r 200 -jpegopt quality=100 $p images/pg && for f in $(ls images/pg-*.jpg); do mogrify -auto-level -gamma 0.5 -colorspace Gray -quality 37% $f; convert $f $f.pdf ; done && qpdf --empty --pages ./images/*.pdf -- './out/'$p && echo $p && echo $p && rm -R images; done
18. IN EINER AKTION: Komprimieren Sie alle Dateien „*.PDF“ mit den Parametern: Auflösung 120 ppi, Q=30 %, wenden Sie automatische Helligkeitsstufen an, legen Sie das Ergebnis im Ordner „komprimiert“ ab (Komprimieren Sie alle PDF-Dateien mit einer Aktion, mit automatischer Korrektur und Schärfung, und legen Sie sie im Ordner „compressed“ ab.) shopt -s nocaseglob && mkdir out && 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 && rm -R images; done

Letzte Änderung: 25.06.2024 – der erste Abschnitt „Vorbereitung“ wurde hinzugefügt.



Verwandte Veröffentlichungen