Ich habe ein paar E-Books von Originalen gescannt. Sie sind so formatiert, dass eine einzelne PDF-Seite zwei tatsächliche Seiten enthält : eine links und eine rechts.
Ich möchte jede PDF-Seite programmgesteuert in zwei Teile aufteilen, sodass die linken 50% der PDF-Seite 1 zu Seite 1 und die rechte zu Seite 2 usw. für alle Seiten werden.
Kennt jemand ein Befehlszeilenprogramm oder ein Skript, das dabei helfen könnte?
Ausgabe von pdfimages -list -f 1 -l 1 file.pdf
:
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 1921 1561 rgb 3 8 jpeg no 643 0 200 200 200K 2.3%
1 1 stencil 1 1 - 1 1 image no [inline] 0.692 2 - -
1 2 stencil 1 1 - 1 1 image no [inline] 0.722 0.650 - -
1 3 stencil 1 1 - 1 1 image no [inline] 3 3 - -
Zweites PDF:
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 456 625 gray 1 8 jpx yes 251 0 72 72 11.7K 4.2%
pdf
image-manipulation
Philip Kirkbride
quelle
quelle
Antworten:
Dies sollte funktionieren, es benötigt
pdftk
Tool (undghostscript
).Ein einfacher Fall:
Erster Schritt: In einzelne Seiten aufteilen
Dadurch werden Dateien erstellt
pg_0001.pdf, pg_0002.pdf, ... pg_NNNN.pdf
, eine für jede Seite. Es werden auchdoc_data.txt
Seitenabmessungen erstellt.Schritt zwei: Erstellen Sie linke und rechte halbe Seiten
Schritt 3: Führen Sie links und rechts zusammen, um eine
newfile.pdf
einzelne Seite als PDF zu erstellen .Ein allgemeinerer Fall:
Im obigen Beispiel wird davon ausgegangen, dass alle Seiten gleich groß sind. Die
doc_data.txt
Datei enthält die Größe für jede geteilte Seite. Wenn der Befehlgrep PageMediaDimensions <doc_data.txt | sort | uniq | wc -l
Gibt nicht 1 zurück, dann haben die Seiten unterschiedliche Abmessungen und in Schritt 2 ist eine zusätzliche Logik erforderlich .
Wenn die Aufteilung nicht genau 50:50 beträgt, wird eine bessere Formel als
w2=$(( pw / 2 ))
im obigen Beispiel benötigt.Dieses zweite Beispiel zeigt, wie mit diesem allgemeineren Fall umgegangen wird.
Erster Schritt: Teilen Sie mit
pdftk
wie zuvorSchritt 2: Erstellen Sie nun drei Dateien, die die Breite und Höhe jeder Seite und einen Standardwert für den Bruchteil der Teilung enthalten, den die linke Seite verwendet.
Die Datei
lfrac.txt
kann von Hand bearbeitet werden, wenn Informationen zum Teilen verschiedener Seiten verfügbar sind.Schritt 3: Erstellen Sie nun linke und rechte geteilte Seiten mit den verschiedenen Seitengrößen und (falls bearbeitet) verschiedenen Bruchstellen für die Teilung.
Schritt 4: Dies ist der gleiche Zusammenführungsschritt wie im vorherigen, einfacheren Beispiel.
quelle
pdfseparate clpdf.pdf pg_%04d.pdf
undpdfunite $(cat fl) newfile.pdf
Sie können Ihre Auswahl an Tools erweitern, indem Sie das PDF wie folgt in PostScript konvertieren und dann pstops verwenden . Ich habe angenommen, wir beginnen mit einer A4-Porträtseite, die zwei Seiten zeigt, wie sie möglicherweise aus einem offenen Buch gescannt wurden, wobei der Rücken horizontal durch die Mitte verläuft:
Natürlich können Sie die Werte in der folgenden Lösung an Ihren genauen Fall anpassen.
Sie können dieses PDF mit
pdf2ps
(das Teil des Ghostscript-Pakets ist) in PostScript konvertieren . Dann kann das Werkzeugpstops
aus Paket psutils verwendet werden, um die Seite nach rechts (im Uhrzeigersinn) um die untere linke Ecke zu drehen, neu zu skalieren und das Ergebnis nach oben zu verschieben, sodass nur die untere Hälfte eine ganze Seite bedeckt:Eine zweite Seite kann aus derselben Originalseite durch eine ähnliche Drehung, Skalierung und Übersetzung erstellt werden. Das Ergebnis kann wieder in PDF konvertiert werden. Ein einzelner Befehl kann jede Seite auf zwei neue Seiten zeichnen:
Die Syntax wird in der Manpage erklärt. Hier müssen wir
R
nach rechts drehen, @ 1.2 skalieren, (x, y), um das Ergebnis zu verschieben. Das Komma (,) erzeugt 2 Seiten von jeder Originalseite.Beachten Sie, dass dies die Größe des resultierenden PDFs verdoppelt, da jede Seite zweimal vollständig gezeichnet wird, obwohl Sie jedes Mal nur die Hälfte davon sehen.
quelle
Sie wollen
Libpoppler
, genauer gesagt daspdfimages
Werkzeug darin. Es ist freie Software, wird die Bilder aus dem PDF extrahieren. Wenn die PDF-Datei gescannte Bilder enthält, sind diese nicht immer um einige Grad versetzt. Wenn die Seite zwei Bilder enthält, eines für jede gescannte Seite, wird es einfach. Wenn nicht, müssen Sie sie manuell ausschneiden (verschmutzen) oder ImageMagick verwenden, um sie zu teilen.http://poppler.freedesktop.org/
http://en.wikipedia.org/wiki/Pdfimages
Entnommen aus dem Stackoverflow .
quelle
Vielleicht möchten Sie sich Folgendes ansehen
imagemagick
:quelle
Ich schlage PDFjam und sein Tochter-Skript PDFjoin vor. Zuerst die linke Seite zuschneiden und als left.pdf speichern und dann die rechte Seite zuschneiden und als right.pdf speichern und dann einzelne Seiten der beiden Dateien zusammenführen. Sie können die Beispiele auf der Seite als Inspiration lesen. Wenn Ihnen das zu einfach ist, können Sie die Ghostscript-Route wählen, aber dann müssen Sie einige Pixel rechnen, externe Seiten zählen und einen letzten Concat usw. durchführen.
Gehen Sie nicht den JPG-Weg - Sie werden verrückte Dateien aufblähen und Artefakte erzeugen.
quelle
PDFcreator verfügt über ein COM-Plugin, mit dem Sie möglicherweise kommunizieren können. Sie benötigen jedoch die "Plus" -Version, die 10 US-Dollar pro Jahr kostet.
quelle