minicoop
Goto Top

pdf dokumente per script durchsuchen und umbenennen

Hallo,

ich habe da einen gedankengang und möchte von euch wissen, ob ich diesen so durchziehen kann:

ich habe in einem verzeichnis diverse pdf dokumente.
die pdfs haben unterschiedliche namen, wahlweise fangen diese mit img an, manchmal einfach eine nummer, je nachdem von welchem scanner sie eingescannt worden sind.
gewünscht ist eigentlich dass die pdf's eindeutig sind, und zwar mit der nummer welche im pdf als barcode hinterlegt sind.
es handelt sich hierbei um einen kleinen barcode,
welche auch mit klarschrift nochmal angedruckt ist.
diese fängt immer mit "09-0" an.

nun habe ich mir überlegt,
ich wandel das pdf um in txt, suche die zeile mit 09-0,
merke mir die nächsten zwanzig stellen und benenne anschliessend das ursprungspdf um.

so würde ich mal anfangen:

rem StartPfad ohne abschließenden \ angeben!
set "Quellverzeichnis=c:\xpdf\in"
set "Quelldatei=*.pdf"
set "Dateimaske=*.txt"
set "Pufferverzeichnis=c:\xpdf\work"
set "Zielverzeichnis=c:\xpdf\out"

set "SuchString=09-0"

for %%i in (%Quellverzeichnis%\%Quelldatei%) do "c:\windows\xpdf\pdftotext.exe -layout %%i %Pufferverzeichnis%"

somit würden meine pdfs in txt dateien umgewandelt werden.

nun müsste ich doch mit dem findstr weiterarbeiten können, oder ?

wie kann ich dem sagen dass er mir, wenn er "09-0" gefunden hat, die nächsten zwanzig stellen merken soll bzw die ursprungspdf umbennen soll?

Gruss
Nedim

Content-ID: 122010

Url: https://administrator.de/forum/pdf-dokumente-per-script-durchsuchen-und-umbenennen-122010.html

Ausgedruckt am: 24.12.2024 um 14:12 Uhr

60730
60730 04.08.2009 um 17:19:23 Uhr
Goto Top
Servus,

ich habe da einen gedankengang und möchte von euch wissen, ob ich diesen so durchziehen kann:

"Theoretisch" ja face-wink

die pdfs haben unterschiedliche namen, wahlweise fangen diese mit img an, manchmal einfach eine nummer, je nachdem von welchem scanner sie eingescannt worden sind.

Womit wir (edit du) /edit praktisch erstmal rausfinden müssten, ob denn tatsächlich aus dem Bild, das im pdf steckt auch tatsächlich ein lesbarer Text wird.

Ansonsten (echter Text im PDF) ist das kein allzugroßes Ding.
Gruß
miniversum
miniversum 04.08.2009 um 18:57:30 Uhr
Goto Top
Wie sieht den die betreffende Zeile der Textdatei aus?
Du kannst auch mal versuchen folgendes in der cmd einzugeben (als test)
findstr "09-0" irgendeine.pdf
Kann gut sein das es direkt mit der pdf geht und du die garncith umwandeln brauchst.
Wenn das schema dieser Ausgabe bekannt ist kann man weiter arbeiten. Solange tappen alle im dunkeln.
60730
60730 04.08.2009 um 21:24:02 Uhr
Goto Top
@miniversum,

nee das mit findstr "09-0" irgendeine.pdf wird garantiert nicht funktionieren.
(Ist wohl schopn etwas länger her, dass du die letzte gerenderte PDF mit Notepad aufgemacht hast)
%PDF-1.3
%âãÏÓ
342 0 obj
<< 
/Linearized 1 
/O 344 
/H [ 969 442 ] 
/L 485923 
/E 12520 
/N 66 
/T 478964 
>> 
endobj
                                                      xref
342 27 
0000000016 00000 n
0000000891 00000 n
0000001411 00000 n
0000001646 00000 n
0000001796 00000 n
0000001906 00000 n
0000001947 00000 n
0000002052 00000 n
0000002075 00000 n
0000003464 00000 n
0000003486 00000 n
0000004532 00000 n
0000004554 00000 n
0000005552 00000 n
0000005574 00000 n
0000006652 00000 n
0000006674 00000 n
0000007674 00000 n
0000007696 00000 n
0000008739 00000 n
0000008761 00000 n
0000009789 00000 n
0000009812 00000 n
0000011191 00000 n
0000012272 00000 n
0000000969 00000 n
0000001389 00000 n
trailer
<<
/Size 369
/Info 341 0 R 
/Root 343 0 R 
/Prev 478953 
/ID[<27f4468fd94b33c4e26451a625f15bce><27f4468fd94b33c4e26451a625f15bce>]
>>
startxref
0
%%EOF
    
343 0 obj
<< 
/Type /Catalog 
/Pages 334 0 R 
/PageLabels 332 0 R 
>> 
endobj
367 0 obj
<< /S 294 /T 353 /L 470 /Filter /FlateDecode /Length 368 0 R >> 
stream
H‰b```¢“¬<ö¼ bE80>¿ž%vÁ\z{çfß	I——K]¹Ðв]ðøk¥¬êI×—0°Û۽ݵÆ(2¹2bÞ©¶N]˺œÄdg–ékÎ?{ºykÛÙGÙ·»å6¼Ö¶ä]”×[~YQöÅcwóÀóþùéÌ3n¯zþmþúÀÙIñž§ÐÓ.¨÷€XŠÄ¸¥1è0,cÈÚÁÐÀÀø‚ÃAnCýÆïR³9ž€h;ÂÀÖ¹H;8Œ{8˜íÁÀîjÏ Ž¦þ)Ë?üø²¬×£9àÑe—6Ÿ—œKPà\Êfö§ÜãÑ¥N±`®V§…—g¾y%ê2ýô² Ý¢Ná.3½žlz2­]sé…§›:§¨©hôoíÍÀî~j‘@€ ãV¦8
endstream
endobj
368 0 obj
319 
endobj
344 0 obj
<< 
/Type /Page 
/Parent 333 0 R 
/Resources 345 0 R 
/Contents [ 350 0 R 352 0 R 354 0 R 356 0 R 358 0 R 360 0 R 362 0 R 364 0 R ] 
/Rotate 90 
/Thumb 196 0 R 
/MediaBox [ 0 0 595 842 ] 
/CropBox [ 0 0 595 842 ] 
>> 
endobj
345 0 obj
<< 
/ProcSet [ /PDF /Text ] 
/Font << /F2 348 0 R /F4 346 0 R >> 
/ExtGState << /GS1 366 0 R >> 
/ColorSpace << /Cs6 347 0 R >> 
>> 
endobj
346 0 obj
<< 
/Type /Font 
/Subtype /Type1 
/Encoding /WinAnsiEncoding 
/BaseFont /Helvetica-Bold 
>> 
endobj
347 0 obj
[ 
/ICCBased 365 0 R 
]
endobj
348 0 obj
<< 
/Type /Font 
/Subtype /Type1 
/Encoding /WinAnsiEncoding 
/BaseFont /Helvetica 
>> 
endobj
349 0 obj
1309 
endobj
350 0 obj
<< /Filter /FlateDecode /Length 349 0 R >> 
stream

Und das da oben ist ein (Teilstück von einer) gerenderten, kein eingebundenes Bild...
Wenn gescannt - dann nur via OCR Umweg..

Gruß
minicoop
minicoop 05.08.2009 um 10:38:28 Uhr
Goto Top
moin moin,

also mit findstr geht beim pdf mal garnichts.. .hab ich eben doch noch mal ausprobiert.

erst wenn ich die dokumente mit einer hohen auflösung einscanne,
kann ich die in txt umwandlen und in Suchstring ist dort dann auch aufzufinden.
findstr "09-0" 04082009.txt findet dann auch
09-05411-7-29007254

also muss ich jetzt nur noch diesen string mir merken und die ursprungspdf umbenennen,
leider springt hier bei mir gerade kein funken....... face-wink
60730
60730 05.08.2009 um 12:07:41 Uhr
Goto Top
Zitat von @minicoop:
moin moin,

also mit findstr geht beim pdf mal garnichts.. .hab ich eben doch
noch mal ausprobiert.

yupp - aber das war ja klar face-wink

erst wenn ich die dokumente mit einer hohen auflösung einscanne,
kann ich die in txt umwandlen und in Suchstring ist dort dann auch
wie oft genau und an welcher Stelle?
aufzufinden.
findstr "09-0" 04082009.txt findet dann auch
09-05411-7-29007254

also muss ich jetzt nur noch diesen string mir merken und die
ursprungspdf umbenennen,

Moooment mal - vorhin hiess es noch
wie kann ich dem sagen dass er mir, wenn er "09-0" gefunden hat, die nächsten zwanzig stellen merken soll bzw die ursprungspdf umbennen soll?

leider springt hier bei mir gerade kein funken....... face-wink

"funk" mal sowohl eine (nur bis zum 09 Ansatz) eine umgestrickte PDF und das, was gewünscht ist.

Gruß
minicoop
minicoop 05.08.2009 um 12:27:17 Uhr
Goto Top
der string ist nur einmal auf der ersten seite drin, direkt unter dem barcode.
---
die nächsten zwanzig stellen waren doch ein wenig zu viel... der gesamte string ist nur 19 stellig.
die zw###g waren "geschätzt" face-wink

wenn ich im dos fenster ein findstr durchführe, zeigt er mir den kompletten string
an; ich wusste nur nicht ob ich mit dem ergebnis auch arbeiten kann oder nicht.
manchmal kam es auch vor dass mir die nächste zeile auch angezeigt wurde.

ich habe aber vorhin folgendes festgestellt:
wenn der String
09-05411-7-29007254 lautet, wird er beim umwandeln von pdf in txt anscheinend
manchmal in 09-05411-7-2900725 4
also mit lücke umgewandelt.
tja, das ist nicht gut...
die ganzen umwandlungen gestern waren ohne probleme, und heute sind auf einmal lücken drin..

also muss ich jetzt doch hingehen und ein barcode erkennungsprogramm suchen...
und das über kommandozeile...

es kennt nicht zufällig jemand so eines ?

merde....
60730
60730 05.08.2009 um 12:46:15 Uhr
Goto Top
Zitat von @minicoop:
der string ist nur einmal auf der ersten seite drin, direkt unter dem
barcode.

perfekt

ich habe aber vorhin folgendes festgestellt:
wenn der String
09-05411-7-29007254 lautet, wird er beim umwandeln von pdf in txt
anscheinend
manchmal in 09-05411-7-2900725 4
also mit lücke umgewandelt.
tja, das ist nicht gut...
warum? - wenn kein Leerzeichen dahinter ist - steht dann was anderes - eigentlich nicht ?

rem StartPfad ohne abschließenden \ angeben!
set "Quellverzeichnis=C:\script\pdf2txt"  
set "Quelldatei=*.pdf"  
set "Pufferverzeichnis=C:\script\pdf2txt\buffer"  

set "SuchString=-09"  

for %%i in (%Quellverzeichnis%\%Quelldatei%) do (C:\script\pdf2txt\pdftotext.exe -layout %%i 
findstr  "%SuchString%" "%Quellverzeichnis%\%%~ni.txt">%Pufferverzeichnis%\info.log  
)

for /f "Tokens=1,2" %%a in (%Pufferverzeichnis%\info.log) do ren "%Quellverzeichnis%\*.pdf" %%a%%b.pdf  

So läuft das - aber da ich vorher "blind" deine ganzen Parameter übernommen habe - die pdftotext.exe gar nicht kennt - mußte das Script in die Hose gehen....
Gruß
miniversum
miniversum 05.08.2009 um 12:49:26 Uhr
Goto Top
Zitat von @60730:
@miniversum,

nee das mit findstr "09-0" irgendeine.pdf wird garantiert nicht funktionieren.
(Ist wohl schopn etwas länger her, dass du die letzte gerenderte PDF mit Notepad aufgemacht hast)

So pauschal würd ich das jetzt nicht sagen das es GARANTIERT nicht geht. Ich schrieb ja das es je nach dem geht, je nach dem wie si eerzeugt wurde, bzw. womit.
Ichhabe hier z.B. einige Test-Protokolle die automatisch von einer Softwar im pdf-Format erzeugt werden. Diese kann man per findstr durchsuchen. Das sieht dann in der cmd so aus:
P:\>findstr "PASS" Bericht.pdf  
( PASS ) Tj
minicoop
minicoop 13.08.2009 um 14:22:37 Uhr
Goto Top
Hallo,

bin leider erst heute dazu gekommen...
das passt soweit mit den pfaden..
allerdings scheint beim findstr noch ein fehler zu sein..
Es kommt eine Meldung:
Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters ist ungültig: %~nI.txt" >%Pufferverzeichnis%\info.log

sehe aber nicht wo der fehler ist..
60730
60730 13.08.2009 um 18:25:29 Uhr
Goto Top
Servus,

Zitat von @minicoop:
Hallo,

bin leider erst heute dazu gekommen...
das passt soweit mit den pfaden..

Sorry - aber ich hab mir das jetzt auch mal durchgekaut und nein - passt nicht....

sehe aber nicht wo der fehler ist..

Den einen sehe ich auch nicht - aber die vielen anderen schon face-wink

nimm die editierte Version und passe Sie an deine Bedürfnisse an.

Gruß