Ich habe eine Reihe von PDF-Dateien, die zwei "echte" Seiten zu einer einzigen PDF-Seite enthalten. Ich würde diese gerne halbieren und jede Hälfte auf eine separate Seite legen. Im Wesentlichen brauche ich etwas, das genau das Gegenteil von pdfnup
(oder psnup
) tut . Wie kann dieses Kunststück erreicht werden?
Plattform ist Linux, Open Source bevorzugt; Da ich einen großen Haufen davon habe, um etwas zu tun, das per Skript geschrieben werden kann (im Gegensatz zu einer GUI), wäre es schön, wenn ich ihm einfach eine Liste davon geben und es wegkauen lassen könnte.
Auch ein bereits vorhandenes Skript ist nicht die einzige Option. Wenn es Beispielcode gibt, mit dem PDFs auf ähnliche Weise mit einer Bibliothek eines Drittanbieters bearbeitet werden können, kann ich ihn wahrscheinlich dazu zwingen, das zu tun, was ich will.
quelle
Antworten:
Sie können dies mit Hilfe von Ghostscript lösen.
pdftk
allein kann das nicht (nach bestem Wissen). Ich gebe Ihnen die Befehlszeilenschritte, um dies manuell zu tun. Es ist einfach, dies als Prozedur zu skripten, auch mit unterschiedlichen Parametern für Seitengrößen und Seitenzahlen. Aber du hast gesagt, dass du das selbst machen kannst ;-)Wie man das mit Hilfe von Ghostscript löst ...
... und zum Spaß habe ich es kürzlich nicht mit einer Eingabedatei mit "Double-Up" -Seiten gemacht, sondern mit einer mit "Treble-Ups". Sie können die Antwort für diesen Fall hier lesen .
Ihr Fall ist noch einfacher. Sie scheinen etwas Ähnliches zu haben:
Sie möchten 1 PDF mit 4 Seiten erstellen, von denen jede die Größe von 421 pt x 595 pt hat.
Erster Schritt
Extrahieren wir zunächst die linken Abschnitte von jeder der Eingabeseiten:
Was haben diese Parameter bewirkt?
Erstens wissen, dass in PDF 1 Zoll == 72 Punkte . Dann ist der Rest:
-o ...............:
Benennt die Ausgabedatei. Implizit auch verwendet-dBATCH -dNOPAUSE -dSAFER
.-sDEVICE=pdfwrite :
Wir wollen PDF als Ausgabeformat.-g................:
Legt die Größe des Ausgabemediums in Pixel fest. Die Standardauflösung von pdfwrite beträgt 720 dpi. Multiplizieren Sie daher mit 10, um eine Übereinstimmung für PageOffset zu erhalten.-c "..............:
Fordert Ghostscript auf, das angegebene PostScript-Code-Snippet direkt vor der Haupteingabedatei zu verarbeiten (worauf folgt-f
).<</PageOffset ....:
Legt die Verschiebung des Seitenbilds auf dem Medium fest. (Für linke Seiten hat die Verschiebung nach natürlich[0 0]
keine wirkliche Auswirkung.)-f ...............:
Verarbeiten Sie diese Eingabedatei.Welches Ergebnis hat der letzte Befehl erzielt?
Dieses:
Zweiter Schritt
Als nächstes die richtigen Abschnitte:
Beachten Sie den negativen Versatz, da wir die Seite nach links verschieben, während der Anzeigebereich stationär bleibt.
Ergebnis:
Letzter Schritt
Jetzt kombinieren wir die Seiten in einer Datei. Wir könnten das auch mit Ghostscript machen, aber wir werden
pdftk
stattdessen verwenden, weil es für diesen Job schneller ist:Erledigt. Hier ist das gewünschte Ergebnis. 4 verschiedene Seiten im Format 421x595 pt.
Ergebnis:
quelle
421
->-421
). ;-)Es gibt ein Tool pdfposter, mit dem PDFs mit mehreren Seiten für eine Eingabeseite erstellt werden können (Kacheln oder Schneiden der Seiten). Es ähnelt dem Tool
poster
, das dasselbe für PostScript-Dateien ausführt.quelle
Nach viel mehr Suche (es scheint, dass "PDF-Schnittseiten" eine weitaus bessere Suche sind) habe ich ein kleines Skript gefunden,
unpnup
dasposter
PDF / PS-Konvertierung verwendet undpdftk
genau das tut, was ich brauche. Es ist ein bisschen weit weg, aber es ist den anderen Methoden, die ich gefunden habe (wie etwa der Verwendung von Imagemagick), weit überlegen, weil es die Seiten nicht rastert, bevor sie ausgespuckt werden.Für den Fall, dass mobileread aus irgendeinem Grund nicht mehr funktioniert, lautet der Kern des Skripts (lizenziert unter der GPLv2 oder höher von Harald Hackenberg
<hackenberggmx.at>
) wie folgt:quelle
PDF => EPS => PDF
Weg und geht den sichererenPDF => PDF => PDF
Weg.Ich fand die Antwort von Kurt Pfeifle für meine ähnliche Situation sehr hilfreich. Ich dachte, ich könnte meine Modifikation der Lösung mit anderen teilen ...
Ich hatte auch ein gescanntes PDF mit 2 Seiten pro Blatt. Es handelte sich um einen 11 x 8,5 (Zoll) großen Scan einer Broschüre mit Sattelheftung, die beim ursprünglichen Scannen noch geheftet war. PDF-Seite 2 = Seiten 2 und 3 usw. Dies liest sich gut auf dem Bildschirm, aber Sie können es nicht drucken und dann heften, um weitere Kopien der Broschüre zu erstellen.
Ich musste in der Lage sein, dies auf einem Duplexkopierer zu drucken. dh machen Sie es ZURÜCK in ein "auferlegtes" PDF, das zum Drucken bereit ist. Mit Kurts Lösung habe ich diesen (hämmernden) "Einzeiler" gemacht, um ihn wieder in halbe Seiten umzuwandeln, und zwar in der richtigen Seitenreihenfolge. Es funktioniert für jede HÖHE und BREITE sowie für jede Anzahl von Seiten. In meinem Fall hatte ich eine 40-seitige Broschüre (20 gescannte Seiten im PDF).
Sie müssen nur die ersten Parameter in diesem Befehl ändern, um HEIGHT und WIDTH sowie ORIG_FILE_PATH anzugeben. Der Rest des Befehls berechnet die verschiedenen Größen und ruft gs zweimal und dann pdftk auf. Es werden sogar die Seiten in Ihrem Scan gezählt und dann die richtige Sortierspezifikation erstellt (für das von mir angegebene Szenario).
Es gibt einige Fortschritte darüber aus, was es tut, was so aussehen wird:
Als nächstes "drucken" Sie die bestellte.pdf-Datei auf einer benutzerdefinierten Seitengröße, die genau der Größe entspricht, die Sie benötigen (in meinem Beispiel 5,5 x 8,5), um die für eine gedruckte Broschüre benötigte Seitenerstellung zu erhalten, und senden sie an eine "Broschürenerstellung" "(in meinem Fall habe ich Christoph Vogelbuschs Create Booklet for Mac von http://download.cnet.com/Create-Booklet/3000-2088_4-86349.html verwendet ).
Das resultierende PDF-Dokument hat jetzt wieder die ursprüngliche Seitengröße von 11 x 8,5 mit 2 Seiten pro Blatt. Die Reihenfolge ist jedoch so, dass Sie es doppelseitig, mit kurzer Kante und als Voila drucken können! Sie erhalten einen Ausdruck, den Sie fotokopieren und falten und satteln können, um die Originalbroschüre zu reproduzieren, ohne das Original jemals auseinander zu nehmen (oder sogar unbedingt zu sehen).
Hoffe das hilft jemandem!
-c
quelle
Basierend auf der obigen Antwort von piptas :
Unter Windows funktionierte das Aufteilen von PDF-Dokumenten im Letter-Format mit einem einzelnen Titelbild am Anfang sehr gut (beachten Sie die Verwendung von [-612 0] im zweiten Schritt; ein positiver Wert erzeugte leere Seiten, weil er in die falsche Richtung verschoben wurde .)
gswin32c -o left-sections.pdf -sDEVICE=pdfwrite -dFirstPage=2 -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f input.pdf
Beachten Sie die Verwendung,
-dFirstPage=2
die gs anweist, mit der Verarbeitung zu beginnen, auf Seite 2.gswin32c -o right-sections.pdf -sDEVICE=pdfwrite -dFirstPage=2 -g6120x7920 -c "<</PageOffset [-612 0]>> setpagedevice" -f input.pdf
Dadurch wird auf die gleiche Weise die Datei "Rechte Abschnitte.pdf" erstellt. Und jetzt das Titelbild:
gswin32c -o cover.pdf -sDEVICE=pdfwrite -dLastPage=1 -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f input.pdf
Als Nächstes habe ich den linken und den rechten Abschnitt in separate PDF-Dateien in einem neuen Verzeichnis aufgeteilt, da ich nicht mit pdftk mithilfe der manuellen Seiteneingabe zusammenführen wollte.
Dann füge ich die PDFs in diesem Verzeichnis alphabetisch (und zum Glück heißt das, dass sie in der richtigen Reihenfolge sortiert sind!) Zusammen und starte das Ergebnis erneut durch Ghostscript, um "Warnung: Generationsnummer außerhalb des 0..65535-Bereichs, vorausgesetzt 0. " Von pdftk erzeugte Fehler, die in meinem Ghostscript "itext-paulo-155 (itextpdf.sf.net-lawagie.com)" genannt wurden - es kam auch vor, dass ich die Dateigröße halbierte. Bei einem 4,5-MB-Original betrug das Ergebnis von pdftk 6,7 MB, und die Wiederaufbereitung von gswin32c reduzierte dies auf 3,2 MB.
Und wir sind fertig! Sie können die Ordner input_file, cover.pdf, input_temp.pdf, right_sections.pdf und left_sections.pdf löschen. ;-)
quelle
Wenn Sie nur die PDFs auf der linken Seite in einem Dokument und die PDFs auf der rechten Seite in einem Dokument ausgeben müssen, ist das folgende Skript auf der Grundlage der Antwort von Kurt Pfeifle ausreichend (funktioniert für jede Höhe und Größe) Breite):
dann führe es so aus:
quelle