stoppel70
Goto Top

Batch Teil des Dateinamens einer pdf-Datei als Titel der pdf-Datei zuweisen

Hallo zusammen,
ich möchte gerne einen Teil des Namens einer pdf-Datei selbiger als Titel zuweisen. Tiel ist, anhand des Titels sortieren können.

Der Name der pdfs folgt konsequent einer Schablone etwa in der Art:
bwa_arg_df_2_xyz_A_2.pdf
wobei der Abschnitt 'xyz' zum Titel der pdf gemacht werden soll.

in
Batch Teile des Dateinamen auslesen
ist eine einigermaßen vergleichbare Aufgabe gelöst, wo ein Abschnitt aus dem Dateinamen als Verzeichnisname verwendet wird.

auf
http://compgroups.net/comp.text.pdf/batch-update-pdf-titles-from-text-f ...
wird pdftk für das update des pdf-Titels verwendet, allerdings muß zuvor eine Steuerdatei gebastelt werden, die alten und neuen Dateinamen beinhaltet.
(Mir scheint, dass in der Zeile
"for "/F "tokens=1,2 delims= " %%j in (this.dat) do (
" die Zeichen "1," ein falsches Ergebnis verursachen und entfallen müssen.)

der token "xyz" müßte also mit InfoValue: %%j in eine this.info geschrieben werden und anschließend mit pdftk zugewiesen werden.

Alternativ zum Durch-Arbeiten eines ganzen Verzeichnisses fände ich das Auslösen des Befehl via Explorer/rechte Maustaste noch eleganter.

Kann mir da jemand weiterhelfen?

Schönen Dank schon mal!

Stoppel

Content-Key: 183815

Url: https://administrator.de/contentid/183815

Printed on: May 9, 2024 at 04:05 o'clock

Member: bastla
bastla Apr 19, 2012, updated at Oct 18, 2012 at 16:50:42 (UTC)
Goto Top
Hallo stoppel70 und willkommen im Forum!

Etwa so:
@echo off & setlocal
for /f "tokens=5 delims=_" %%i in ("%~1") do (  
    echo InfoKey: Title
    echo InfoValue: %%i
)>%temp%\this.info 
move %1 %temp%\PDF.tmp
pdftk %temp%\PDF.tmp update_info %temp%\this.info output "%~1"  
Dieser Batch lässt sich per Drag & Drop oder zB im "SendTo"-Ordner verwenden - zum Erstellen eines Kontextmenüeintrages siehe da ...

Grüße
bastla
Member: stoppel70
stoppel70 Apr 19, 2012 at 21:05:22 (UTC)
Goto Top
Gut, Bastla, danke schon mal (-:

ich werde das morgen gleich mal austesten.

Kurze Frage noch: wodurch regelst du, welcher Abschnitt des Dateinamens verarbeitet wird?
Den muß ich für meinen Bedarf mglw. noch anpassen. Ich vermute es ist der ..."tokens=5"...?!

Außerdem scheinst du eine Steuerdatei zu schreiben... Die sollte wieder gelöscht werden face-wink

Gruß
Stoppel
Member: bastla
bastla Apr 19, 2012 at 21:11:52 (UTC)
Goto Top
Hallo stoppel70!
Kurze Frage noch: wodurch regelst du, welcher Abschnitt des Dateinamens verarbeitet wird?
Den muß ich für meinen Bedarf mglw. noch anpassen. Ich vermute es ist der ..."tokens=5"...?!
So isses ...
Die sollte wieder gelöscht werden face-wink
Mach nur (obwohl: ob die im Temp-Ordner herumliegt oder nicht - und beim nächsten Mal wird sie ohnehin überschrieben); abgesehen davon sind es zwei Dateien ... face-wink

Grüße
bastla
Member: stoppel70
stoppel70 Apr 21, 2012 at 14:21:10 (UTC)
Goto Top
Hallo bastla,
so, jetzt hatte ich in Ruhe Zeit, das mal auszutesten. Leider funktioniert hier was noch nicht. Der richtige Titel wird leider nicht geschrieben.

Es landen die richtigen Dateien im temp-Verzeichnis und deren Inhalt passt auch (die this.info hat die korrekten Parameter und die pdf.tmp ist eigentlich eine pdf)

Ich habe mal versucht, das Original als .pdf zu verschieben und nicht wie vorgeschlagen als .tmp (Zeile 6). Vielleicht mag ja pdftk keine .tmp-Dateien verarbeiten. Das bringt keinen Erfolg.

Hast du eine Idee, wo es hakt?

Gruß
stoppel70
Member: bastla
bastla Apr 21, 2012 at 14:36:04 (UTC)
Goto Top
Hallo stoppel70!
Ich habe mal versucht, das Original als .pdf zu verschieben und nicht wie vorgeschlagen als .tmp (Zeile 6). Vielleicht mag ja pdftk keine .tmp-Dateien verarbeiten.
Bei meinen Tests war das kein Problem.
Hast du eine Idee, wo es hakt?
Wo hat Du die "pdftk.exe" gespeichert? Falls der Ordner nicht in der %path%-Liste enthalten ist, in der letzten Zeile anstatt nur "pdftk" auch den vollen Pfad angeben ...

Zur Fehlersuche solltest Du außerdem in Zeile 1 "echo on" verwenden und den Batch aus der CMD-Shell starten (oder noch "pause" als Zeile 8 hinzufügen).

Grüße
bastla
Member: stoppel70
stoppel70 Apr 22, 2012 at 18:56:41 (UTC)
Goto Top
Hallo Bastla,
ich habe nochmal ein bisschen rum probiert und folgendes festgestellt:
- im Explorer bekomme ich einen falsches Titel angezeigt (auch in der Statusleiste und wenn ich auf den Dateinamen zeige)
- im aktuellen Reader ebenso
- im Acrobat Reader 4.0 wird der RICHTIGE Titel dargestellt

Vermute mal, dass es sich um ein Versionsproblem von pdftk handeln könnte. Ich arbeite mit Version 1.44 und habe sie gemäß
http://www.pdflabs.com/docs/install-pdftk/
'installiert'.

Zu deinen Hinweisen:
ich habe die Ergänzungen übernommen, bekomme aber im cmd-Fenster keine Fehlermeldung.
Aber: nach dem Abarbeiten haben die pdfs ein neues Speicherdatum!

Gruß
stoppel70
Member: bastla
bastla Apr 22, 2012 at 19:06:03 (UTC)
Goto Top
Hallo stoppel70!
Vermute mal, dass es sich um ein Versionsproblem von pdftk handeln könnte.
Das könnte sein - ich habe mit 1.41 (erfolgreich) getestet - wenn Du das nachvollziehen möchtest, findest Du hier den Download ...

Grüße
bastla
Member: stoppel70
stoppel70 Apr 22, 2012 at 19:11:25 (UTC)
Goto Top
Du antwortest schneller, als ich den win7-Rechner booten kann... habe da nochmal nachgesehen: hier bekomme ich gar nichts angezeigt face-sad

Gruß
stoppel

PS
werde gezwungenermaßen face-wink gleich nochmal den XP-Rechner anschmeissen und mit deiner anderen Version testen.
Member: stoppel70
stoppel70 Apr 22, 2012 at 19:24:55 (UTC)
Goto Top
So,
next one: auch Version 1.41 bringt keinen Erfolg.

Allerdings habe ich mal manuell den Titel gelöscht. Und siehe da: plötzlich klappt's.

Noch eine Anmerkung:
ich habe die Testdateien mit pdfcreator erstellt, das arbeitet mit Ghostscript 9.05. Beim Ausdruck kann ich Titel und Co eintragen, hier lösche ich dann alle vorgeschlagenen Einträge.
Member: bastla
bastla Apr 22, 2012 at 19:49:31 (UTC)
Goto Top
Hallo stoppel70!

Habe jetzt auch nochmal mit verschiedenen PDF (Version 1.3 bis 1.6), mit unterschiedlichen Programmen erstellt, getestest - wie es scheint, hat "pdftk" öfter Probleme damit, einen vorhandenen Titel zu ersetzen ... face-sad

Grüße
bastla
Member: stoppel70
stoppel70 Apr 22, 2012 at 19:51:32 (UTC)
Goto Top
Hallo nochmal,
eine andere Sache, die mir bei einem anderen Programm, das die Infos in einer pdf aufbereitet, im Gedächtnis geblieben ist: dort konnte man die neuen Infos "anhängen" oder überschreiben. In dem Sinn, dass etwas nicht endgültig ist. Leider finde ich das Programm auf die Schnelle nicht.

Schreiben wir ständig einen Wert, der in den aktuellen Programmen nicht eindeutig ist, für Acrobat 4.0 aber schon? Schließlich wird der Wert ja geschrieben, nur nicht angezeigt...!
Member: stoppel70
stoppel70 Apr 22, 2012 at 19:57:55 (UTC)
Goto Top
Zitat von @bastla:
scheint, hat "pdftk" öfter Probleme damit, einen vorhandenen Titel zu ersetzen ... face-sad

Ja genau, schließlich bekomme ich, wenn ich den Wert beim Druckendialog von pdfcreator lösche, im Ergebnis zwei Klammern ohne Inhalt angezeigt. Auch wird also etwas geschrieben, das nicht ersetzt werden kann.

Das alles steht allerdings im Widerspruch zu
http://www.lagotzki.de/pdftk/
wo uns mitgeteilt wird, dass gerade ein Aktualisieren möglich sein soll. und "update_info" scheint ja auch auf Aktualisieren hinzudeuten...

Gruß
stoppel
Member: bastla
bastla Apr 22, 2012 at 20:01:40 (UTC)
Goto Top
Hallo stoppel70!

Gute Frage - Antwort habe ich allerdings leider auch keine; aber vielleicht wirst Du ja noch fündig ...

Grüße
bastla
Member: stoppel70
stoppel70 Apr 22, 2012 at 20:17:49 (UTC)
Goto Top
Hallo bastla,
vielleicht sollten wir erst mal die Metadaten entfernen und dann neu schreiben?

http://www.marshalgraham.com/2011/04/removing-pdf-metadata-with-pdf-too ...
schildert, wie das gehen soll. Ich habe es mal getestet und in deinem Skript hinter info_value den Parameter gelöscht: die this.info hat dann auch keinen Wert mehr! An der pdf ändert sich weiterhin nur das Speicherdatum.

Gruß
Stoppel
Member: bastla
bastla Apr 22, 2012 at 20:22:08 (UTC)
Goto Top
Hallo stoppel70!

Dort (bei der Überlegung und der verlinkten Seite face-wink) war ich vorhin auch schon - es ist aber eigentlich logisch, dass, wenn kein neuer Titel eingefügt wird, auch das Überschreiben des Titels mit "Nichts" (mit dem gleichen Programm) nicht funktioniert ...

Grüße
bastla
Member: stoppel70
stoppel70 Apr 22, 2012 at 20:39:34 (UTC)
Goto Top
Zitat von @bastla:
Dort (bei der Überlegung und der verlinkten Seite face-wink) war ich vorhin auch schon -

*grins*

ja, das war mir auch durch den Kopf gegangen, aber wenn einer schon ein so aufwendiges Tutorial schreibt, dann hat er das ja erfolgreich getestet.
Ich habe zwischenzeitlich auch mal diverse andere Versionen von pdftk getestet, ebenfalls ohne Erfolg.

ALLERDINGS
läßt sich der Titel mit deinem Tool ändern, wenn sie mit pdf-Writer geschrieben wurde.(pdf-Version 1.2)!!!

Grüße
stoppel70
Member: stoppel70
stoppel70 Apr 24, 2012 at 19:25:39 (UTC)
Goto Top
Hallo mal wieder,
nachdem pdftk mit Ghostscript-basierten pdf-Dateien scheinbar nicht klar kommt, habe ich nach einer Alternative gesucht und auch gefunden:
http://www.becyhome.de/download_ger.htm#becypdfmetaedit

Mit nachfolgendem Skript funktioniert das Ganze per Drag&Drop wie beabsichtigt; auch die sendto-Methode klappt.

@echo off & setlocal
for /f "tokens=5 delims=_" %%i in ("%~1") do (  
    echo [Info]
    echo Title="%%i"  
)>%temp%\this.ini
C:\Programme\BeCyPDFMetaEdit\BeCyPDFMetaEdit.com "%~1" -X 1 -tf %temp%\this.ini  

Das Argument '-X 1' scheint nötig zu sein um zunächst die XMP-Metadaten zu eleminieren, genaueres unter Punkt 1.3 der Hilfe zu becypdfmetaedit.

Wer's eleganter möchte, wird den PATH anpassen und evtl. die this.ini löschen lassen. Was noch nicht funktioniert ist, mehrere Dateien auf einmal abarbeiten zu lassen.

Grüße, stoppel70
Member: stoppel70
stoppel70 Apr 27, 2012 at 21:34:42 (UTC)
Goto Top
so, ich denke das Thema ist dann gelöst:

@echo off & setlocal
:Loop
if "%~1"=="" goto :eof  
for /f "tokens=5 delims=_" %%i in ("%~1") do (  
    echo [Info]
    echo Title="%%i"  
)>%temp%\this.ini
"C:\Program Files (x86)\BeCyPDFMetaEdit\BeCyPDFMetaEdit.com" %1 -X 1 -tf %temp%\this.ini  
shift
goto :Loop

Der Batch wird in das sendto Verzeichnis (im Explorer 'shell:sendto') gelegt und kann jetzt auch mit mehreren markierten pdf-Dateien ausgelöst werden.