ubuntuusers.de

große Zahl odt/pdf Dokumente - nur erste Seite Export

Status: Gelöst | Ubuntu-Version: Xubuntu 22.04 (Jammy Jellyfish)
Antworten |

fl1tz

Avatar von fl1tz

Anmeldungsdatum:
17. Juli 2009

Beiträge: Zähle...

Wohnort: Berlin

Ich habe eine große Anzahl von Dateien (odt/pdf), die alle jeweils nur auf ihre Seite 1 reduziert werden sollen.

Mit pdftk kann ich das für ein PDF auf diese Weise umsetzen:

1
pdftk text.pdf cat 1 output text_seite1.pdf

Ich brauch das aber für 500 Dokumente. Hat jemand eine hilfreiche Idee?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13212

Wenn die in einem Verzeichnis liegen, geht es mit Shell-Globbing - sonst brauchst Du find.

1
2
3
for f in *.pdf; do
  pdftk "$f" cat 1 output "${f%.*}_seite1.pdf"
done

find

1
2
3
4
5
find dir -type f -name \*.pdf -exec sh -c '
for f; do
  pdftk "$f" cat 1 output "${f%.*}_seite1.pdf"
done
' -- {} +

Zum Ausprobieren kannst Du einfach ein echo vor pdftk setzen.

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1274

Ich bin einfach zu langsam. rklm hat das Prinzip ja bereits beschrieben. Da ich allerdings kein "pdftk" verwende sondern "pdfseparate (aus dem poppler-utils) und für die .odt Dateien "convert" (imagemagick-6.q16: /usr/bin/convert-im6.q16), will ich die Lösung auch noch veröffentlichen.

Die 1-Seiten Dateien werden als .pdf Dateien mit gleicher Ordnerstruktur in einem parallelen Ordner-Zweig mit gleichem Namen (.odt → .odt.pdf) abgelegt:

$ find -type f \( -name "*.pdf" -o -name "*.odt" \) -exec bash -c '
target="../onepage"
dn=$(dirname "$0")
fn=$(basename "$0")
typ=${fn##*.}
mkdir -p "$target/$dn"
if [ "$typ" = "pdf" ]; then
 pdfseparate -l 1 "$0" "$target/$0"
else
 convert "$0" /tmp/$$.pdf 2>&1 >/dev/null
 pdfseparate -l 1 /tmp/$$.pdf "$target/$0.pdf"
fi
' {} \;

fl1tz

(Themenstarter)
Avatar von fl1tz

Anmeldungsdatum:
17. Juli 2009

Beiträge: 84

Wohnort: Berlin

Ups, das ging schnell. - Probiere ich gleich aus. Beides 😉 Rückmeldung kommt.

Großen Dank! Läuft alles. So elegant kann's gehen. Gute Nacht!

Antworten |