Wie dupliziere ich Seiten in PDF-Dateien automatisch?

10

Ich habe viele PDF-Dateien mit jeweils 1 bis 4 Seiten. Ich brauche eine Lösung, die automatisch eine neue Datei für jede dieser Dateien generiert. Die neuen Dateien sollten den Inhalt der Originaldateien zweimal enthalten (dh Seiten 1 bis zum Ende, gefolgt von denselben Seiten in derselben Reihenfolge).

Wie schaffe ich das?

Marc
quelle
3
Bitte klären Sie, wir können Ihre Gedanken nicht lesen. Welche Rechnung? Sie möchten eine neue PDF-Datei erstellen, die jede Seite des Originals zweimal enthält? In welcher Reihenfolge? Möchten Sie Seite 1a gefolgt von Seite 1b oder möchten Sie zuerst alle 4 Seiten und dann wieder alle vier Seiten? Welches Betriebssystem verwenden Sie? Mit welchem ​​Tool erstellen Sie die PDFs?
Terdon

Antworten:

15

Lösung für Windows mit PDFtk (das Sie anscheinend gemäß Ihren Tags verwenden):

Dies führt zu einem PDF mit Seiten 1-Ende, gefolgt von 1-Ende erneut:

pdftk in.pdf cat 1-end 1-end output out.pdf

Wenn Sie möchten, dass jede Seite zusammen dupliziert wird (wie in 1,1,2,2, ...), verwenden Sie die folgende Batchdatei:

@echo off
set pages=
setlocal enabledelayedexpansion
for /f "tokens=2" %%a in ('pdftk in.pdf dump_data ^| find /i "NumberOfPages"') do for /l %%b in (1,1,%%a) do set pages=!pages! %%b %%b
pdftk in.pdf cat!pages! output out.pdf
Karan
quelle
Vielen Dank: "pdftk in.pdf cat 1-end 1-end output out.pdf" macht genau das, was ich brauche. Das einzige, was fehlt, ist eine Schleife, die alle PDF-Dateien aus einem Verzeichnis entnimmt und alle neuen Dateien erstellt. Vielen Dank, dass Sie mir wieder geholfen haben. Ich werde dankbar sein und meine Frau mit der
Marc
@Marc: Die Schleife ist leicht zu erreichen. Gehen Sie einfach in das Verzeichnis mit den PDFs und geben Sie an der Eingabeaufforderung ein for %a in (*.pdf) do @pdftk "%~a" cat 1-end 1-end output "%~na (Duplicated)%~xa". Für jede in.pdf (Name kann alles sein) führt dies zu einer entsprechenden in (duplizierten) .pdf . Genießen Sie Ihr Abendessen und vergessen Sie nicht, die Antwort zu akzeptieren (klicken Sie auf das grüne Häkchen links), wenn es Ihnen geholfen hat!
Karan
unendlich danke dir - du hast mein Leben gerettet! Ich bin sehr sehr dankbar für Ihre Hilfe!
Marc
2

Ich könnte Ihnen eine bessere Lösung geben, wenn Sie die Fragen in meinem Kommentar beantworten, aber um Ihrer Frau willen, hier sind einige Vorschläge.

ImageMagick ist ein plattformübergreifendes Befehlszeilenprogramm zur Bildbearbeitung. Sobald Sie es installiert haben, sollten Sie in der Lage sein, mit seinem convertTool das zu tun, was Sie wollen. Die Details hängen von Ihrem Betriebssystem ab. Ich gehe davon aus, dass Sie zwei Kopien der gesamten Datei möchten, nicht jede Seite wird verdoppelt.

  1. Linux / OSX / Unix usw.

    for n in *pdf; do convert -density 150 "$n" "$n" "$n"; done
    

    Dadurch werden die vorhandenen Dateien überschrieben. Möglicherweise möchten Sie zuerst eine Sicherungskopie erstellen .

  2. Windows. Dies kann leicht falsch sein. Ich verwende kein Windows, kann es also nicht testen, aber die allgemeine Idee sollte ungefähr so ​​sein

    for %f in (*.pdf) do (convert.exe %f %f %f)
    
Terdon
quelle
Ihrer forSchleife fehlt das doneund $nsollte wahrscheinlich in Anführungszeichen gesetzt werden. Vielleicht fehlt mir, wie es convertfunktioniert, aber was macht convertes, wenn Sie dreimal dieselbe Datei übergeben? Ich kann es momentan nicht testen.
Slhck
Danke @slhck, du hast wie immer in beiden Punkten Recht. Das allgemeine Konvertierungsformat ist convert infile1 infile2 ... infileN outfile. Wenn Sie also dieselbe Datei dreimal übergeben, wird sie zweimal als Eingabe verwendet und dann als Ausgabe in dieselbe Datei geschrieben. Dass man ich tat Test :).
Terdon
Oh, cool, dann habe ich auch was gelernt :)
slhck
Klingt gut für mich. Vielen Dank. Der obige Kommentar: Ich habe diesen beim ersten Versuch ausprobiert und er hat perfekt funktioniert, nur die richtige Schleife, nach der ich noch suche ... könnten Sie mir noch einmal helfen? Vielen Dank im Voraus!
Marc
@ Marc sorry, ich bin mir nicht sicher was du meinst. Welcher Kommentar? Welche Schleife? Die Fenster oder die Bash?
Terdon
2

Wenn Sie möchten, dass jede Seite unter Linux zusammen dupliziert wird (wie in 1,1,2,2, ...), führt dieses Skript Folgendes aus:

#!/bin/bash
INPUTFILE=$*
PAGENUM=`pdftk ${INPUTFILE} dump_data | grep NumberOfPages | cut -d : -f 2  | cut -d " " -f 2`
PAGES=`seq 1 ${PAGENUM}`
DUPAGES=`for i in ${PAGES} ; do echo $i $i | tr "\n" " " ; done`
OUTPUT=`basename ${INPUTFILE} .pdf`.dup.pdf
pdftk ${INPUTFILE} cat ${DUPAGES} output ${OUTPUT}
Seegras
quelle
0

Wenn Sie pdftk nicht installiert haben, sondern poppler-utils, verwenden Sie diesen Befehl:

for f in *
do
    pdfjoin $f $f
done

Dies gilt insbesondere für Fedora 21, wo pdftk nicht mehr im Repository verfügbar ist.

Constantin
quelle
0

Einfache Verwendung pdfunite. Dies kann wahrscheinlich mit mehr Skriptkenntnissen weiter vereinfacht werden.

Beachten Sie, dass das letzte Argument die resultierende Datei ist . Wenn Sie das vergessen, wird diese Datei überschrieben.

pdfunite 1.pdf 2.pdf 3.pdf 4.pdf result.pdf
pdfunite result.pdf result.pdf result.pdf 3-times-result.pdf
Keiki
quelle