pdftk
ist in der Lage, einen festen Satz von Seiten effizient auszuschneiden. Mit etwas Skriptkleber macht das, was ich will:
number=$(pdfinfo -- "$file" 2> /dev/null | awk '$1 == "Pages:" {print $2}')
count=$((number / pagesper))
filename=${file%.pdf}
counter=0
while [ "$count" -gt "$counter" ]; do
start=$((counter*pagesper + 1));
end=$((start + pagesper - 1));
counterstring=$(printf %04d "$counter")
pdftk "$file" cat "${start}-${end}" output "${filename}_${counterstring}.pdf"
counter=$((counter + 1))
done
Dies setzt voraus, dass Sie die Anzahl der Seiten pro Block $pagesper
und den Dateinamen der Quell-PDF-Datei haben $file
.
Wenn Sie acroread
installiert haben, können Sie auch verwenden
acroread -size a4 -start "$start" -end "$end" -pairs "$file" "${filename}_${counterstring}.ps"
acroread
bietet die Option, -toPostScript
die nützlich sein kann.
Siehe auch
pdfseparate
undpdfunite
vonpoppler-utils
.pdfseparate
teilt die Datei in eine Datei pro Seite auf, was es relativ einfach macht, sie später nach Beliebenpdfunite
manuell oder (halb-) automatisch wieder zusammenzusetzen.Wie bei zsh:
spalten würde
file.pdf
infile-p1-p5.pdf
,file-p6-p10.pdf
...quelle
#!/bin/zsh
als erste Zeile hinzufügen sollte . Und natürlich die Installation von Z Shell ... Diese Details sind für Anfänger möglicherweise nicht offensichtlich.Ich finde Python mit der PyPdf-Bibliothek praktisch für Jobs, die pdftk nicht bequem (oder überhaupt nicht) erledigt.
quelle
Traceback (most recent call last): File "./dividePDF.py", line 23, in <module> if (i + 1) % pages_per_file == 0: flush() File "./dividePDF.py", line 18, in flush output_pdf.write(output_file) UnboundLocalError: local variable 'output_pdf' referenced before assignment
Traceback (most recent call last): File "./dividePDF.py", line 20, in <module> for i in xrange(input_pdf.getNumPages(input_pdf)): TypeError: getNumPages() takes exactly 1 argument (2 given)
Also wechselte ichinput_pdf.getNumPages(input_pdf)
zuinput_pdf.getNumPages()
und bekam den anderen Fehler.Die von Raphael veröffentlichte Lösung ist fehlerhaft: Wenn Sie eine ungerade Anzahl von Seiten haben, werden die letzten einfach ignoriert. Dort ist es eine verbesserte Lösung, die auch mit einer ungeraden Anzahl von Seiten funktioniert. Auch hier wird davon ausgegangen, dass Sie die Anzahl der Seiten pro Block
$pagesper
und den Dateinamen der Quell-PDF-Datei haben$file
.quelle