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> и перейти в его конец перед тегом </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) = Ausgabe.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 -- Ausgabe.pdf

oder

qpdf --empty --pages Eingabe.pdf 5-7,12 -- Ausgabe.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 -- Ausgabe.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 – Ausgabe.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 für f in $(ls ./*.pdf); do qpdf $f $f.out --rotate=+90; rm$f; mv $f.out $f; erledigt
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) für f in $(ls images/*.jpg); konvertieren Sie $f $f.pdf ; erledigt
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 komprimiert && für f in $(ls out*.pdf); do gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=./compressed/$f $f; erledigt
11. Führen Sie mit einem Befehl eine starke Komprimierung einer PDF-Datei 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); konvertieren Sie $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 Bilder && i=1 ; für f in $(ls *.jpg); konvertieren Sie -resize 25% -quality 50 $f ./images/img$i.jpg ; sei i=i+1; erledigt
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 Bilder && i=1 ; für f in $(ls *.jpg); konvertieren -resize 700x525 -auto-level -unsharp 0.65x0.65+1+0.9+0.04 -quality 50 $f ./images/img$i.jpg ; sei i=i+1; erledigt
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 outPDF mit folgenden Parametern: Auflösung 150 ppi, Q=37 %, automatische Helligkeitsanpassung(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.) für 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; $f $f.pdf konvertieren; done && qpdf --empty --pages ./images/*.pdf -- 'out'$p && echo $p && echo $p && rm -R images; erledigt
16. IN EINER AKTION: Komprimieren Sie alle Dateien „*.PDF“ in outPDF mit folgenden Parametern: Auflösung 120 ppi, Q=30 %, in Schwarzweiß konvertieren, automatische Helligkeitsstufen anwenden und um 15 % schärfen.(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 && 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 grey -auto-level -sharpen 15% -quality 30% $f; $f $f.pdf konvertieren; done && qpdf --empty --pages ./images/*.pdf -- 'out'$p && echo $p && rm -R images; erledigt
17. IN EINER AKTION: Scans [markieren]dunkler[/markieren] – alle Dateien „*.PDF“ in outPDF mit den Parametern komprimieren: Auflösung 200 ppi, Q=37 %, Anwenden von Autolevels, Farbkonvertierung in Graupalette und Gamma=0,5(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 && für 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; $f $f.pdf konvertieren; done && qpdf --empty --pages ./images/*.pdf -- 'out'$p && echo $p && echo $p && rm -R images; erledigt
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.) mkdir komprimiert && shopt -s nocaseglob && für 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; $f $f.pdf konvertieren; done && qpdf --empty --pages ./images/*.pdf -- './compressed/'$p && echo $p && rm -R images; erledigt

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



Verwandte Veröffentlichungen