PDF Text in C++ importieren



  • Moin,
    ich habe eine Frage bezüglich dem öffnen und lesen von Dateien in C++. Ich möchte gerne ein PDF öffnen lassen und den Text aus dem PDF ausgeben.
    Bis jetzt versuche ich das mit folgendem Code:

    #include <iostream>
    #include <fstream>
    using namespace std;
    int main(){
    	char dateiname[39] = "C:\\Users\\User\\Documents\\Test\\test.pdf";
    	ifstream datei;
    	datei.open(dateiname);
    
    	if (datei) {
    		char c;
    	while (datei.get(c)) {
    		cout << c;
    	}
    		cout << endl;
    		datei.close();
    	}
    	else {
    		cerr << dateiname << " kann nicht geoeffnet werden!" << endl;
    	}
    	return 0;
    }
    
    

    Wenn ich diesen Code ausführe, dann wird nur ein langer undefinierbarer Text ausgegeben. Hier ein ausschnitt:

    %PDF-1.6
    %├ñ├╝├Â├ƒ
    2 0 obj
    <</Length 3 0 R/Filter/FlateDecode>>
    stream
    x£-╩╗
    ┬@►Fß~×Ô»àî3ôlv▬û-♦-Ê♣♠RêØù.É4¥¥érÓ½Ä░ÔM♦bÄT↕[N­A┘G┼■áÕǧw|█_t
    J#;r¯╣xA▄q╝(È►¤k§mØU▒ªU·f⌂åvïë╬A3═°É8↑©
    

    Eigentlich steht in diesem PDF aber nur Hallo (zum Testen)
    Weiß jemand, woran das liegt, bzw. was es für eine bessere Methode gibt?
    Viele Grüße
    Oscar

    PS: Ich benutze Windows 10 (x86) und Visual Studio



  • PDF ist kein Textformat, du kannst nicht einfach die Datei öffnen, Daten lesen und erwarten, dass du den Inhalt im Textformat bekommst. PDF benutzt eine Dokument-Beschreibungssprache, die festlegt, wie welche Elemente wo angezeigt werden (hat entfernt Ähnlichkeit mit HTML).
    Du kannst jetzt selbst einen PDF Parser programmieren (nur für Profis mit viel Zeit, nicht zum empfehlen), oder du benutzt eine Bibliothek, die das für dich macht. Ich habe sowas selbst noch nie benutzt, da musst du mal die Suchmaschine deiner Wahl befragen.

    Edit:
    Du bist hier auch im falschen Unterforum unterwegs, ist das wirklich ein MFC Projekt oder Standard-C++?



  • Lies dir mal https://de.wikipedia.org/wiki/Portable_Document_Format durch. Im PDF ist u.a. auch die Seitengröße und alles mögliche andere gespeichert, damit das Dokument eben überall gleich aussieht.

    Es gibt Tools wie pdftotext, die dir den reinen Text extrahieren können. Wenn der Text aber z.B. als Bild im PDF gespeichert ist, geht das damit nicht.



  • Dieser Beitrag wurde gelöscht!


  • @Oscarbu sagte in PDF Text in C++ importieren:

    Wenn ich diesen Code ausführe, dann wird nur ein langer undefinierbarer Text ausgegeben. Hier ein ausschnitt:

    YMMD! thx! 😂 +1



  • https://github.com/galkahana/PDF-Writer
    Diese Lib kann den Text der PDF wieder ausgeben. Bzw das meiste was da irgendwie drin steht. Allerdings musst du dir das Resultat davon selbst noch zurecht parsen, da dort noch einiges mehr als nur Text herauskommt.


Anmelden zum Antworten