pdf seitenweise nach Keyword durchsuchen und drucken
-
Guten Morgen,
im Maschinenbaustudium hatte ich zwar alle Punkte in der C++ Klausur, jetzt stehe ich aber trotzdem ganz schön dumm da, wenn es etwas spezieller wird
Leider hat mich die Suche nicht weiter gebracht, daher möchte ich hier direkt um Hilfe bitte.Ich möchte eine Anwendung schreiben, die einen Ordner ständig überwacht.
Sobald ein neues pdf im Ordner liegt:
1. Seitenzahl des pdfs ermitteln
2. Jede Seite nach einem bestimmten Schlüsselwort durchsuchen
3. Wenn Keyword1 dann Seite1 auf Drucker1 drucken, wenn Keyword2 dann Seite1 auf Drucker2 drucken usw….Die Überwachung des Ordners wird nicht das Problem sein, mir fehlt eher die Herangehensweise an diese Sache mit dem pdf.
Wie macht man sowas in C++?
Ich bin schon über diverse Schlagworte wie pdf-library und activeX-Control gestolpert aber so richtig komm ich da nicht weiter. Evtl. steige ich als Anfänger da auch nicht ganz so durch auf Anhieb.Vielen Dank für eine kleine Starthilfe.
Gruß
Hoinabauer
-
Puh, das ist ja auch gleich eine etwas schwierigere Aufgabe.
Bezüglich pdf kenne ich nur poppler, das wird von Programmen wie Okular genutzt. Allerdings ist die Doku recht grauenhaft. Aber es gibt ja SO und ich habe für dich gefunden, mit Beispiel: https://stackoverflow.com/questions/2732178/extracting-text-from-pdf-with-poppler-c
Und neue Datei finden: das ist ja auch wieder stark betriebssystemabhängig. Unter Linux würde ich da mal nach
inotify
gucken.
-
Vielen Dank, das sieht schon mal gut aus. Ich hab mir jetzt dieses Poppler Zip mal heruntergeladen.
Ich habe bisher keine Erfahrungen mit dem Integrieren von fremdem Biliotheken. Wie genau muss ich vorgehen?
Ich benutze den Compiler Dev C++
Müssen alle Dateien in des Lib-Verzeichnis von Dev C++ oder wie läuft das ab.
-
Hallo
ganz ehrlich, für diese Aufgaben bietet es sich sehr an Python zu vewenden. Dort kannst du das Modul PyPDF2 installieren und importieren. Damit kannst du deine gewünschten Aufgaben in wenigen Zeilen Code erfüllen. Zum Beispiel
import PyPDF2 pdfObj = open('deinePDFdatei.pdf', 'rb') pdfReader = PyPDF2.PdfFileReader(pdfObj) pdfReader.numPages pageObj = pdfReader.getPage(0) pageObj.extractText()
Beispielsweise steht jetzt die Gesamtzahl der Seiten im Attribut numPages. Mit getPage() sprichst du einzelne Seiten an und extractText() gibt einen String mit dem Text zurück.
Grüße
-
Danke für den Tipp. Dein Beispielcode verursacht bei mir folgenden Fehler:
An was könnte das liegen? Das PyPDF2 Modul habe ich denke ich richtig installiert. Mit "setup.py"
Danke
pdfReader = PyPDF2.PdfFileReader(pdfFileObj) AttributeError: module 'PyPDF2' has no attribute 'PdfFileReader'
-
Habs geschafft.
Modul war nicht richtig installiert.
Hier eine super Anleitung:
https://www.youtube.com/watch?v=ddpYVA-7wq4
-
Da ist mir
pip3 install PyPDF2
deutlich lieber als den Krebs aus dem Video...