Seite 1 von 1

Tabellen aus PDF auslesen.

Verfasst: 15.11.2020 09:17
von tft
Hallo,

Ich habe mir ein Programm geschrieben, um die Konto Daten von meinem Karten Anbieter, der diese als PDF zustellt. Zu bearbeiten. Ich kopiere die Daten vom PDF mit Copy in die Zwischen Ablage und verwende diese dann, um mit einem festgelegten Muster die Daten zu Analysieren . Leider geht dabei natürlich die Tabellen Formatierung verloren. So das ich diese ziemlich umständlich wieder in eine Tabellen Vorm wandeln muss. Von dem aussortieren der nicht benötigten Daten mal ganz zu schweigen.
Aber es funktioniert schon ganz gut. Jetzt suche ich einen Weg, die Tabellen Elemente direkt aus dem PFD Dokument zu übernehmen. Hat jemand schonmal sowas gemacht und kann mir ein paar Tips, oder sogar einen Code Schnipsel empfehlen.
Jemand ne Idee?

Gruss TFT

Re: Tabellen aus PDF auslesen.

Verfasst: 15.11.2020 19:19
von ccode_new
Hallo tft,

Kannst du mit reinen Textinformationen wieder eine Tabelle herstellen?

Code: Alles auswählen

Define pdfCopyString.s
pdfCopyString = GetClipboardText()
Debug ( EscapeString(pdfCopyString) )
Ich kann dir leider auch noch nicht weiterhelfen.

An die Community:

Kann man, mit STRG+C ins Clipboard kopierten Rohdaten, eine "formatiert" kopierte Tabelle, aus einer PDF-Datei einlesen?
Wie kann man so etwas bewerkstelligen?

GetClipboardData() ?

Re: Tabellen aus PDF auslesen.

Verfasst: 16.11.2020 10:33
von tft
Hallo,

genau ... kann man nämlich nicht. Es werden keine Formatirungs Daten mit copiert. Sondern lediglich zwischen den Text Elementen ein Space eingefügt. Es gibt zwar programme die Tabellen Daten aus einem PDF Extrahieren können. Aber das will ich mir nicht kaufen. Es gibt ja hier auch ein PDF Modul das PDF erzeugen kann. Aber eben nicht Tabellen Daten auslesen.
Zumindestens weis ich nicht wie.

Gruss TFT

Re: Tabellen aus PDF auslesen.

Verfasst: 16.11.2020 16:06
von juergenkulow
Hallo TFT,

hast Du Deine PDF-Datei schon in eine besser lesbare SVG-Datei umgewandelt?

Gruß
Jürgen Kulow

Re: Tabellen aus PDF auslesen.

Verfasst: 16.11.2020 20:58
von ccode_new
juergenkulow hat geschrieben:hast Du Deine PDF-Datei schon in eine besser lesbare SVG-Datei umgewandelt?
Das ist doch Murks, da kann man auch gleich in HTML umwandeln.

Aber das Problem ist:

Man kopiere z.B. eine Tabelle aus einer PDF-Datei und füge diese in ein beliebiges Office-Programm ein.
(Auch Chrome-Office geht)
Dabei wird die kopierte Tabelle auch in seiner vollen "Tabelligkeit" angezeigt.

Aber mit GetClipboardText() gehen da unter PureBasic wahrscheinlich diverse zusätzliche Informationen flöten.

Re: Tabellen aus PDF auslesen.

Verfasst: 17.11.2020 21:06
von tft
Man kopiere z.B. eine Tabelle aus einer PDF-Datei und füge diese in ein beliebiges Office-Programm ein.
(Auch Chrome-Office geht)
Dabei wird die kopierte Tabelle auch in seiner vollen "Tabelligkeit" angezeigt.
eben nicht, das ist ja das Problem. Und der SVG Converter den ich probiert habe, kann keine Tabellen mit Konvertieren.

Re: Tabellen aus PDF auslesen.

Verfasst: 18.11.2020 07:13
von DarkDragon
Es gibt nicht die eine Zwischenablage. PureBasics GetClipboardText holt nur Plaintext ab. Vielleicht hilft das hier weiter, da steht auch was zu Rich Text:

https://docs.microsoft.com/en-us/window ... rd-formats

EnumClipboardFormats ...

Re: Tabellen aus PDF auslesen.

Verfasst: 19.11.2020 00:55
von juergenkulow
Hallo tft,

lleider weiß ich nicht genug über Deine Tabelle in der PDF-Datei. Vielleicht kann PDF zu CSV | Zamzar - Kostenlose online Dateikonvertierung oder PDF in CSV Umwandeln (Online & Kostenlos) — Convertio das Problem Online lösen. Oder PDF-Howto oder peepdf bringen Licht in das Dunkel der PDF Tabellen. Eine mit PdfVectorOutput unter Linux oder MacOs erstelle Tabelle könnte vielleicht helfen oder eine von persönlichen Daten befreite PDF im Data Format:

Code: Alles auswählen

; Erzeuge PDF DataSection aus IncludeBinary PDF-Datei.
EingabeGroesse=?PDFEnd-?PDFStart
Encoded$ = Base64Encoder(?PDFStart,EingabeGroesse)
Laenge=Len(Encoded$)
Debug "Datasection"
Debug "  Data.i "+Str(Laenge)+","+Str(EingabeGroesse)
For i=1 To Laenge Step 64
  Debug "  Data.s "+Chr(34)+Mid(Encoded$,i,64)+Chr(34)
Next ;i 
Debug "EndDataSection"
Debug "Read.i Laenge"
Debug "Read.i AusgabeGroesse"
Debug "For i=1 To Laenge Step 64" 
Debug "  Read.s EncodedLine.s"
Debug "  Encoded.s+EncodedLine"
Debug "Next ;i"
Debug "*PDFDecoded=AllocateMemory(AusgabeGroesse)"
Debug "Base64Decoder(Encoded,*PDFDecoded,AusgabeGroesse)"
Debug "ShowMemoryViewer(*PDFDecoded,AusgabeGroesse)"
DataSection
  PDFStart:
  IncludeBinary "/mnt/TabAAAPDF.pdf" ; <-- Bitte anpassen. 
  PDFEnd:
EndDataSection

Re: Tabellen aus PDF auslesen.

Verfasst: 19.11.2020 12:46
von tft
Hallo,

danke für diese Wertvolle Info. Ich wusste nicht das man die Daten erst durch den Decoder schicken muss.
Auch die Webseite die du genannt hast ist sehr hilfreich.

Gruss TFT

Re: Tabellen aus PDF auslesen.

Verfasst: 23.11.2020 15:10
von tft
Hallo,

da ich selber wertschätze wenn man mir hilft. So könnte für den einen oder anderen diese Lösung interessant sein.

http://www.xpdfreader.com/

Es ist OpenSource und von der Comandozeile aus funktioniert es schon mal nicht schlecht.

Gruss TFT