hawkeye101981
Goto Top

PDF splitten nach Ausdruck

Hallo zusammen,

ich suche eine Möglichkeit per Batch eine PDF-Datei "zu zerschneiden" / splitten und zwar wenn ein bestimmter Suchbegriff in dem Dokument auftaucht.

Ich kann leider nicht den Umweg über eine Konvertierung nach TXT nehmen, da ich die erzwungenden Seitenumbrüche in dem Dokument benötige... hier hätte ich ein Tool gefunden.

Habe auch schon überlegt die PDF in PS zu wandeln und dann zu splitten doch da fehlt mir das nötige Tool...

IST_Zustand:
- Eine PDF mit x-Seiten (Anzahl der Seiten = merh als 100)
- Jeweils zum Ende eines "Kapitels" (Ich nenne es jetzt einmal so) erscheint das Wort "Summe".
- Nach dem Wort "Summe" sollen die bisher aufgelaufenen Seiten in ein separates Dokument gespeichert werden
- und das ganz möglchst in einer Kommandozeile damit ich das in Batch packen kann, eine andere Skriptsprache würde auch gehen...

Kennt jemand ein Tool, welches ich entsprechend nutzen kann??

Beste Grüße
Hawkeye

Content-Key: 292194

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

Printed on: April 19, 2024 at 11:04 o'clock

Mitglied: 114757
114757 Jan 04, 2016 at 16:45:17 (UTC)
Goto Top
Die pdftk commandline tools eignen sich hervorragend für solche Aufgaben:
https://www.pdflabs.com/tools/pdftk-server/

Gruß jodel32
Mitglied: 122990
122990 Jan 04, 2016 updated at 20:02:56 (UTC)
Goto Top
Moin,
mit der von jodel32 genannten Toolbox und etwas Powershell ginge das so:
# ------- Variablen
$pdfIN = "D:\test.pdf"  
$folderOUT = 'D:\Ausgabeordner'  
$p2text = 'c:\pdftk\pdftotext.exe'  
$pdftk = 'c:\pdftk\pdftk.exe'  
# -------
& $p2text $pdfIN "$env:TEMP\extract.txt"  
$data = gc "$env:TEMP\extract.txt" | out-string  
$totalpages = ($data -split '\x0C').Count - 1  
$cpage = 1;$cnt = 1
[regex]::matches($data,'(?si)(.*?Summe.*?\x0C)').Captures | %{  
    $pages = [regex]::matches($_.Value, '\x0C').Count  
    & $pdftk $pdfIN cat "$cpage-$($cpage + ($pages-1))" output "$folderOUT\$([System.IO.Path]::GetFileNameWithoutExtension($pdfIN))_part$($cnt.toString().PadLeft(2,'0')).pdf"  
    $cpage += $pages; $cnt++
}
if ($cpage -le $totalpages){
    & $pdftk $pdfIN cat "$cpage-end" output "$folderOUT\$([System.IO.Path]::GetFileNameWithoutExtension($pdfIN))_part$($cnt.toString().PadLeft(2,'0')).pdf"  
}
Gruß grexit
Member: Hawkeye101981
Hawkeye101981 Jan 05, 2016 at 08:10:33 (UTC)
Goto Top
Hallo zusammen,

vielen Dank für die Hilfe. ein Frage habe ich jedoch...

Ich habe nun PDFtk Server installiert, jedoch fehlt mir die pdftotext.exe,
Kann das separat downloaden??

Gruß
Hawk
Mitglied: 122990
122990 Jan 05, 2016 updated at 08:55:35 (UTC)
Goto Top
Zitat von @Hawkeye101981:
Ich habe nun PDFtk Server installiert, jedoch fehlt mir die pdftotext.exe,
Kann das separat downloaden??
Bekommst du hier
ftp://ftp.foolabs.com/pub/xpdf/xpdfbin-win-3.04.zip

http://www.foolabs.com/xpdf/download.html
Member: Hawkeye101981
Hawkeye101981 Jan 05, 2016 at 10:16:23 (UTC)
Goto Top
Hallo zusammen,

habe das tool nun heruntergeladen und das Skript ausgeführt. Jetzt wird mir folgende Fehlermeldung angezeigt:

pdftk.exe : Error: Unexpected range end; expected a page
Bei C:\PDF\Powershell.ps1:13 Zeichen:6

back-to-top& <<<< $pdftk $pdfIN cat "$cpage-$($cpage + ($pages-1))" output "$folderOUT\$([System.IO.Path]::GetFileNameWithoutExtension($pdfIN))_part$($cnt.toString().PadLeft(2,'0')).pdf"

+ CategoryInfo : NotSpecified: (Error: Unexpect...expected a page:String) , RemoteException
+ FullyQualifiedErrorId : NativeCommandError

number or legal keyword, here: 1
Exiting.
Errors encountered. No output created.
Done. Input errors, so no output created.

Kann mir das jemand übersetzen??

Danke im voraus!
Member: Hawkeye101981
Hawkeye101981 Jan 05, 2016 at 10:17:13 (UTC)
Goto Top
pdftk.exe : Error: Unexpected range end; expected a page
Bei C:\PDF\Powershell.ps1:13 Zeichen:6
+     & <<<<  $pdftk $pdfIN cat "$cpage-$($cpage + ($pages-1))" output "$folderOUT\$([System.IO.Path]::GetFileNameWithoutExtension($pdfIN))_part$($cnt.toString().PadLeft(2,'0')).pdf"  
    + CategoryInfo          : NotSpecified: (Error: Unexpect...expected a page:String) , RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
   number or legal keyword, here: 1
   Exiting.
Errors encountered.  No output created.
Done.  Input errors, so no output created.


So sieht es besser aus... face-wink
Mitglied: 122990
122990 Jan 05, 2016 at 10:19:49 (UTC)
Goto Top
Dann wird der Text deiner PDFs wohl nicht extrahiert werden können, schau mal in den Inhalt der Datei extract.txt im Temp-Verzeichnis. Ist diese leer und enthält keinen Text deiner PDF-Datei funktioniert es mit diesen PDFs nicht.
Member: Hawkeye101981
Hawkeye101981 Jan 05, 2016 at 12:46:05 (UTC)
Goto Top
Hallo,

danke für die Rückmeldung. Die Extract.TXT kann ich garnicht finden...

Kann es daran liegen, dass die PDF´s auf einem Linux-System erstellt werden??

Gruß
Hawkeye
Mitglied: 122990
122990 Jan 05, 2016 updated at 12:55:34 (UTC)
Goto Top
Zitat von @Hawkeye101981:
danke für die Rückmeldung. Die Extract.TXT kann ich garnicht finden...
Die liegt im Temp-Verzeichnis von Windows
"%TEMP%\extract.txt"
Wenn nicht hast du die Pfade zur text2pdf nicht richtig eingetragen oder deine PDFs sind buggy.
Mach einfach mal eine Umwandlung eines der PDFs mit "pdftotext.exe" auf der Kommandozeile manuell um zu sehen ob er einen Fehler ausgibt.
Kann es daran liegen, dass die PDF´s auf einem Linux-System erstellt werden??
Könnte, kann alle möglich, weiß ich nicht ohne sie hier zu haben ...
Hier geht es mit meinen Testweise aus Word erstellten PDFs einwandfrei, aber es gibt so viele Varianten bei denen der Text nur als OCR-Layer vorliegt wie z.B. bei manchen Rechnungen der Telekom, dann kann es zu solchen Problemen kommen.
Member: Hawkeye101981
Hawkeye101981 Jan 05, 2016 at 14:57:48 (UTC)
Goto Top
Hmmhh... also selbst pdftk direkt aufgerufen hat mit dem Dokuemtn ein Problem.
Liegt somit am PDF selber... schade für die Mühe!! face-sad