a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 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文本實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

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

圖片精選

主站蜘蛛池模板: 日韩一二三区视频 | 美国一级黄色片 | 日韩一二三区 | 久草在线高清 | 久久不色 | 国产综合久久久久久鬼色 | 999在线观看精品免费不卡网站 | 免费一级淫片 | 五月婷在线观看 | av网站久久 | 久久久一区二区三区 | 大黄网站在线观看 | 国产女人爽到高潮免费视频 | 综合久久久久 | 久久久精品综合 | 国产精品视频区 | 成人av免费| 久久99精品久久久 | 33eee在线视频免费观看 | 91精品国产乱码久久久久久久久 | 91av原创| 欧美狠狠操 | 日韩在线不卡视频 | 伊人网网站 | 999久久久| av在线免费网址 | 91视频免费观看入口 | 日本欧美在线观看 | 久久99精品久久久久久 | 亚洲精品在线播放视频 | 国产一区二区三区久久久久久久久 | 亚洲成人自拍 | 亚洲电影免费 | 欧美怡红院视频一区二区三区 | 久久国产精品视频 | 日韩中文一区 | 亚洲国产成人久久综合一区,久久久国产99 | 精品久久久久久久久久久 | 国产一区二区三区在线免费观看 | 欧美国产亚洲一区二区 | 国产91亚洲精品 |