Es gibt viele Steuerelemente zum Generieren von PDFs, aber nicht viele zum Parsen, aber das erste getestete komplexe PDF meldet einen Fehler und die chinesischen Zeichen sind möglicherweise falsch.
Ich erinnerte mich, dass die pdfBox-Bibliothek unter dem Namen Apache, die mit Java aufgerufen wurde, sehr nützlich war, also habe ich pdfBox heruntergeladen und mit Delphi pdfBox aufgerufen, um den PDF-Text zu analysieren.
Umgebungsanforderungen: Java-Laufumgebung
pdfBox-Anwendungspaket: pdfbox-app-2.0.6.jar
Hier wird die DOS-Befehlszeile zum Parsen verwendet und dann werden die analysierten Ergebnisse aufgerufen.
Die erste besteht darin, den DOS-Befehl auszuführen:
procedure CheckResult(b: Boolean);begin if not b then raise Exception.Create(SysErrorMessage(GetLastError));end;function RunDOS(const CommandLine: string): string;var HRead, HWrite: THandle; TProcessInformation; b: Boolean; sa: TSecurityAttributes; sRet: TStrings;begin Result := ''; FillChar(sa, sizeof(sa), 0);//Legen Sie fest, um Vererbung zuzulassen, sonst kann das Ausgabeergebnis nicht unter NT und 2000 sa.nLength := sizeof(sa) erhalten werden ; sa .bInheritHandle := True; sa.lpSecurityDescriptor := nil b := CreatePipe(HRead, HWrite, @sa, 0); CheckResult(b); FillChar(StartInfo, SizeOf(StartInfo), 0); StartInfo.cb := SizeOf(StartInfo);//Verwenden Sie das angegebene Handle als Standard-Eingabe- und Ausgabedatei-Handle die angegebene Anzeigemethode StartInfo.dwFlags := STARTF_USESTDHANDLES oder STARTF_USESHOWWINDOW; StartInfo.hStdError := HWrite; StartInfo.hStdInput := GetStdHandle(STD_INPUT_HANDLE); //HRead; StartInfo.hStdOutput := HWrite; b := CreateProcess(nil, //lpApplicationName: PChar(CommandLine), //lpCommandLine: PChar nil, //lpProcessAttributes: PSecurityAttributes nil, //lpThreadAttributes: PSecurityAttributes True, //bInheritHandles: BOOL CREATE_NEW_CONSOLE, nil, nil, StartInfo, ProceInfo); inS := THandleStream.Create(HRead); Wenn inS.Size > 0 then begin sRet := sRet.LoadStream(inS); Result := sRet.Free; closeHandle(HWrite);
Rufen Sie dann die Anzeige auf:
function TfrmPDFTool.GetPDFText(sFile: string): string;var cmd:string; pdfFilePath,pdfFileName,txtFileName:String;begin //java -jar pdfbox-app-2.0.6.jar ExtractText -encoding utf-8 e:// temp//test.pdf e://temp//testiii.txt pdfFilePath:=ExtractFilePath(sFile); pdfFileName:=ExtractFileName(sFile); txtFileName:=FAppPath+'Temp/'+pdfFileName+'.txt'; cmd:='java -jar '+FAppPath+'PDFBox/pdfbox-app-2.0. 6.jar ExtractText ' +' -Kodierung utf-8 '+sFile +' '+txtFileName; AddLog(cmd); );Ende;
OK, du bist fertig!
Das obige Beispiel zum Extrahieren von PDF-Text mit Delphi ist der gesamte vom Herausgeber geteilte Inhalt. Ich hoffe, dass es Ihnen eine Referenz geben kann, und ich hoffe, dass Sie Wulin.com unterstützen.