麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

Delphi提取PDF文本實例

2020-01-31 20:50:21
字體:
來源:轉載
供稿:網友

生成PDF的控件很多,但解析的不是太多,pdf Toolkit可以,但測試的第一個復雜的pdf就報告錯誤,并且漢字亂碼,可能使用的版本或使用方法不對。

想起之前使用java調用的Apache名下的pdfBox庫很好用,于是就用下載了pdfBox,使用Delphi來調用pdfBox解析pdf文本。

環境要求:java運行環境

pdfBox應用包:pdfbox-app-2.0.6.jar

這里使用了DOS命令行來解析,然后調用解析結果。

首先是執行DOS命令:

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; StartInfo: TStartupInfo; ProceInfo: TProcessInformation; b: Boolean; sa: TSecurityAttributes; inS: THandleStream; sRet: TStrings;begin Result := ''; FillChar(sa, sizeof(sa), 0);//設置允許繼承,否則在NT和2000下無法取得輸出結果 sa.nLength := sizeof(sa); sa.bInheritHandle := True; sa.lpSecurityDescriptor := nil; b := CreatePipe(HRead, HWrite, @sa, 0); CheckResult(b); FillChar(StartInfo, SizeOf(StartInfo), 0); StartInfo.cb := SizeOf(StartInfo); StartInfo.wShowWindow := SW_HIDE;//使用指定的句柄作為標準輸入輸出的文件句柄,使用指定的顯示方式 StartInfo.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW; StartInfo.hStdError := HWrite; StartInfo.hStdInput := GetStdHandle(STD_INPUT_HANDLE); //HRead; StartInfo.hStdOutput := HWrite; b := CreateProcess(nil, //lpApplicationName: PChar  PChar(CommandLine), //lpCommandLine: PChar  nil, //lpProcessAttributes: PSecurityAttributes  nil, //lpThreadAttributes: PSecurityAttributes  True, //bInheritHandles: BOOL  CREATE_NEW_CONSOLE,  nil,  nil,  StartInfo,  ProceInfo); CheckResult(b); WaitForSingleObject(ProceInfo.hProcess, INFINITE); inS := THandleStream.Create(HRead); if inS.Size > 0 then begin  sRet := TStringList.Create;  sRet.LoadFromStream(inS);  Result := sRet.Text;  sRet.Free; end; inS.Free; CloseHandle(HRead); CloseHandle(HWrite);end;

然后調用顯示:

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 '  +' -encoding utf-8 '+sFile  +' '+txtFileName; AddLog(cmd); Result:=RunDOS(cmd); AddLog(Result); memTxtFile.Lines.LoadFromFile(txtFileName,TUTF8Encoding.Create); FPDFText:=memTxtFile.Text; AddLog(FPDFText);end;

OK,大功告成!

以上這篇Delphi提取PDF文本實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 天天草天天色 | 国产成人精品一区二区视频免费 | a一级黄 | 99精品国产成人一区二区 | 一级网站 | 一区二区国产在线 | 最新国产毛片 | 亚洲精品wwww | 二区三区四区视频 | 久久免费观看一级毛片 | 成人不卡 | 久久精品在线免费观看 | 久久爽精品区穿丝袜 | 亚洲第五色综合网 | 欧美一级精品片在线看 | 黄色欧美精品 | 国内精品久久久久久2021浪潮 | 一边吃奶一边插下面 | 羞羞答答xxdd在线播放 | 亚洲国产综合在线观看 | 国产精品久久久久久久久久东京 | 欧美一级黄色录像片 | 亚洲精久久 | 欧美在线观看黄色 | 欧美a级大胆视频 | 精品一区二区免费视频视频 | 黄色av一区二区三区 | 日本成人一区二区 | 久久www视频 | 亚洲第一成网站 | 欧美一级电影网站 | 欧美成人精品欧美一级乱黄 | 久久色伦理资源站 | 999久久国产 | 欧美性受xxxx人人本视频 | 黄网站在线免费 | 亚洲免费视频大全 | 精品中文字幕视频 | 末成年女av片一区二区 | 99在线热视频 | 看黄在线观看 |