Befehlszeilenprogramm zum Zuschneiden von PDF-Dateien

101

Ich bin auf der Suche nach einem Open-Source-Befehlszeilentool zum Zuschneiden von PDF-Dateien, wie wir es in Adobe Acrobat Pro tun können. Ich habe PdfTk, ImageMagick, PyPDF und GhostScript ausprobiert - alles bisher ohne Erfolg.

Rakesh
quelle
Können Sie bitte beschreiben, welche Art von Beschneiden Sie mit Adobe Acrobat pro ausführen können? Weil ich es nicht habe und daher nicht sagen kann, wonach du suchst.
Xubuntix
In Adobe Acrobat Pro können wir die Randeinstellungen verwenden, um die PDF-Datei zuzuschneiden. Wir können die Werte für oben, unten, rechts und links zum Zuschneiden bereitstellen
Rakesh,

Antworten:

124

Ich würde vorschlagen, dass Sie sich PDFcrop ansehen .

Wenn Sie ein PDF mit einem linken, oberen, rechten und unteren Rand von 5, 10, 20 und 30 pt (Punkten) zuschneiden möchten, führen Sie den Befehl aus

pdfcrop --margins '5 10 20 30' input.pdf output.pdf

im Terminal. Um tatsächlich etwas wegzuschneiden, verwenden Sie negative Werte im Argument für crop. Zum Beispiel,

pdfcrop --margins '-50 -50 -50 -50' input.pdf output.pdf

Erntet 50 Punkte von links, oben, rechts, unten (in dieser Reihenfolge).

Wenn Sie nur den Befehl ausführen pdfcrop input, wird eine Datei mit dem Titel input-crop.pdf mit null Rändern ausgegeben . Ich finde das sehr praktisch, wenn ich PDF-Illustrationen in Dokumente einbinde.

Mehrere Dateien zuschneiden

Leider kann pdfcrop nicht mehrere Dateien gleichzeitig zuschneiden. Es ist jedoch einfach, ein Skript zu schreiben, das alle PDFs in dem Ordner beschneidet, in dem sich das Skript befindet.

Erstellen Sie eine neue leere Datei und rufen Sie sie auf something.sh. Öffne es mit einem Texteditor und füge folgendes ein:

#!/bin/bash
for FILE in ./*.pdf; do
  pdfcrop "${FILE}"
done

Speichern Sie es und schließen Sie es. Klicken Sie dann mit der rechten Maustaste auf die Datei, wählen Sie Eigenschaften> Berechtigungen und aktivieren Sie das Kontrollkästchen Ausführende Datei als Programm zulassen . Schließen Sie nun den Dialog. Führen Sie das Skript aus, indem Sie darauf doppelklicken und In Terminal ausführen wählen . Außerdem wird jetzt eine neue, randlose, beschnittene Version aller PDFs mit dem Suffix -crop im Ordner gedruckt. Wenn Sie Ränder oder andere Dinge wollen, können Sie natürlich einfach das Skript öffnen und anschließend Argumente hinzufügen pdfcrop.

Rasmus
quelle
Beachten Sie, dass Sie anstelle negativer Ränder auch verwenden können --bbox "<left> <bottom> <right> <top>". Dies ermöglicht es, den Ansatz zu verwenden, um die in meiner Antwort unten beschriebene Erntefläche zu bestimmen .
bluenote10
Gibt es eine Möglichkeit, die Seitenzahl anzugeben (die zugeschnitten werden muss)?
LK
Ich fürchte, es ist alles oder nichts. pdfcrop --helplistet die verfügbaren Optionen auf. Ich kann dort nichts sehen, das die Angabe eines Seitenbereichs ermöglicht.
Rasmus
7
Vergleicht man die Größe der PDFCrop-Ausgabe mit der Eingabe, sieht es so aus, als würde pdfcrop nur die Begrenzungsrahmen ändern. Es werden keine Daten entfernt. Dieser Ansatz wäre daher ungeeignet, um die PDF-Datei zu verkleinern oder Informationen auszublenden.
Init_js
Wie ein Zauber! auch bei den Rändern wird das pdf benötigt!
Jojo
36

Danke für Rasmus, du kannst pdfcrop aus dem Paket texlive-extra-utils installieren:

sudo apt-get install texlive-extra-utils

Anschließend können Sie PDF-Dateien mit dem Befehl pdf crop zuschneiden als:

pdfcrop input.pdf output.pdf

verwenden --helpmehr erstaunliche Parameter zu sehen , wie--margins

pdfcrop --margins 5 input.pdf output.pdf

welche PDF mit 5 bp von jeder Seite der Seite beschneiden

Sarigalin
quelle
1
Das Maß ist bp, was etwas anders ist pt. Siehe tex.stackexchange.com/questions/8260/… .
koppor
2
Bei mir hat pdfcrop die Dateigröße von 300x (von 7MB auf 2GB) aufgeblasen. Ich musste gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdfdanach machen, was die Dateigröße festlegte.
Fiktor
17

Sie können PDF-Dateien auch einfach mit Ghostscript zuschneiden. Ich habe ein kleines Skript geschrieben, um den Prozess zu vereinfachen (inspiriert von dieser Antwort ):

#!/bin/bash

if [ $# -lt 5 ]
then
  echo "Usage: `basename $0` <pdf-file> <x_min> <x_max> <y_min> <y_max>"
  echo "Notes:"
  echo " - all coordinates are absolute; no calculation of width/height necessary"
  echo " - use 'gv' to determine the coordinates"
  exit 65
fi

file="$1"
xmin="$2"
xmax="$3"
ymin="$4"
ymax="$5"

base="${file%.*}"
outfile="${base}_cropped.pdf"

echo "writing to: $outfile"

gs \
  -o $outfile \
  -sDEVICE=pdfwrite \
  -c "[/CropBox [$xmin $ymin $xmax $ymax] /PAGES pdfmark" \
  -f $file

Um die Koordinaten für das Zuschneiden zu bestimmen, verwende ich gv, der die Koordinaten des Mauszeigers mit den gleichen Einheiten wie Ghostscript druckt. Zum Beispiel bestimme ich hier die minimalen Koordinaten für x / y (die Werte in der oberen linken Ecke):

crop1

Nun die maximalen Koordinaten:

crop2

Und zum Schluss starte ich das Skript pdf_crop_by_coordinates.sh test.pdf 45 429 38 419, test_cropped.pdfdas so aussieht:

Ergebnis

Ich habe jedoch keine Ahnung, wie sich die Ghostscript-Lösung pdfcropim Hinblick auf Qualität und Korrektheit verhält.

bluenote10
quelle
15

Wenn ich mit pdftk nichts anfangen kann, wende ich mich als Nächstes PDFjam zu , einem Befehlszeilen-Wrapper für das LaTeX-Paket pdfpages (daher benötigen Sie das auch und eine installierte TeX-Distribution). Für Hilfe zur Verwendung empfehle ich den regulären Hilfebildschirm:

pdfjam --help

Da die Manpage spärlich ist und sich die Webseite auf Beispiele konzentriert.

Zum Zuschneiden eines PDF-Dokuments benötigen Sie folgenden Befehl:

pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf

Dies gibt eine aufgerufene Datei aus input-cropped.pdf. Die Reihenfolge der Ordnungen sollte gelassen werden, unten, rechts, oben, wie pro \includegraphicsvon graphicx .

Um einen Eindruck davon zu bekommen, wie es mit PDFcrop verglichen wird, musste ich kürzlich ein ziemlich ausgefallenes PDF zuschneiden. Mein Original war 675 kB, meine über PDFjam zugeschnittene Version war 1,2 MB groß, während eine über PDFcrop zugeschnittene Version 4,5 MB groß war. Während PDFjam und PDFcrop die eingebetteten Hyperlinks und Lesezeichen entfernt haben, hat PDFjam mit der --keepinfoOption die Dokumenteigenschaften (z. B. Titel, Autor, Betreff) beibehalten.

Alex Ball
quelle
1
Hinweis: Dadurch wird der nicht auf dem Bildschirm angezeigte Inhalt nicht wirklich aus der PDF-Datei entfernt, sondern nur ausgeblendet. Entspricht den Kommentaren von @init_js in der am besten bewerteten Antwort.
Jan Żankowski
3

Dies kann Ihnen helfen.
Dies steht im Einklang mit der neueren Version von Ubuntu und Life. Dies ist Master PDF Editor . Sie können es verwenden, zuschneiden, etwas hinzufügen usw.

Beispiel:
Dies ist vor Das ist vorher Dies ist nach Strg + k Bildbeschreibung hier eingeben

Shamina
quelle
3

Briss ist keine Kommandozeile, aber einen Blick wert.

weberjn
quelle
2

Sie können ein pypdf-Skript von dieser Seite verwenden . Bei der Beantwortung dieser Stapelwechselfrage gibt es jedoch auch viele Optionen.

xubuntix
quelle
Ich kann die Parameter links oben rechts unten nicht ermitteln. sind sie Punkte, Zoll, Zentimeter?
Rakesh
@ Rakesh: Siehe meine Antwort für eine Erklärung der Parameter und wie man sie leicht bestimmt.
bluenote10
2

Das Programm pdfCropMargins ist eine Befehlszeilenanwendung zum automatischen Zuschneiden der Ränder von PDF-Dateien.

Dieses Programm hängt entweder vom Ghostscript-Programm oder vom Programm pdftoppm ab, das auf dem System installiert (und auffindbar) ist. Analysieren Sie die Seitenbilder mit PIL, um Begrenzungsrahmen mit dem Schwellenwert 191 zu finden.

installieren mit

pip pdfCropMargins installieren

Führen Sie mit

pdf-crop-margins -v -s -u deine-datei.pdf

Für Hilfe

pdf-crop-margins -h | Mehr

CharmiChokshi
quelle