Geben Sie eine Liste von Dateien als Eingabe für pdftk an

820
Jeff Bauer

Ich habe eine Liste von Dateien, die ich als Eingabe für pdftk angeben muss, damit sie in der angegebenen Reihenfolge verkettet werden. Ich sehe eine Liste der Eingabedateien nicht als Option in der pdftk-Manpage, aber möglicherweise gibt es eine Problemumgehung, um ein ähnliches Ergebnis zu erzielen.

2
Sie möchten also die Werte aus der Liste als Dateinamen und in der Reihenfolge verwenden, in der sie verkettet werden sollen, richtig? Pimp Juice IT vor 6 Jahren 0
@ McDonald's Ja, richtig. Jeff Bauer vor 6 Jahren 0
Nicht sicher, ob es dabei hilft oder nicht, aber schauen Sie sich einige der Antworten hier https://stackoverflow.com/questions/1521462/looping-through-des-content-of-a-file-in-bash an. Wenn es Windows wäre, könnte ich es wahrscheinlich herausfinden, aber ich lerne immer noch die Linux-Welt und habe momentan nichts vor, was ich testen könnte. Pimp Juice IT vor 6 Jahren 0

1 Antwort auf die Frage

3
user3188140

Dies wird im Beispielabschnitt der Manpage beschrieben:

Fügen Sie in1.pdf und in2.pdf ein neues PDF hinzu, out1.pdf:

 pdftk in1.pdf in2.pdf cat output out1.pdf 

oder (mit Griffen):

 pdftk A=in1.pdf B=in2.pdf cat A B output out1.pdf 

oder (unter Verwendung von Platzhaltern):

 pdftk *.pdf cat output combined.pdf 

Natürlich können Sie Shell oder Xargs verwenden, um eine Liste auf die Eingabe-PDF-Argumente zu erweitern ...

Beispiel für concat für alle in files.txt angegebenen Dateien (vorausgesetzt, es gibt keine Probleme mit Leerzeichen in Dateinamen usw.)

pdftk $(cat files.txt) cat output out.pdf 
@ user3188140 Ich habe verschiedene Permutationen der Kombination von xargs und pdftk ohne Erfolg ausprobiert, z. B .: xargs -I {} pdftk {} cat output result.pdf Jeff Bauer vor 6 Jahren 0
@JeffBauer: Sie könnten folgendes verwenden: cat files.txt | xargs | xargs -I {} bash -c "eval pdftk {} cat output out.pdf" - dieses Konstrukt hat jedoch auch Probleme mit Leerzeichen und der Länge der Befehlszeile. user3188140 vor 6 Jahren 0
Durch Hinzufügen des letzten Teils Ihrer Antwort $ (cat files.txt) wird diese zur akzeptierten Antwort. Danke für Ihre Hilfe! Jeff Bauer vor 6 Jahren 0