国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Delphi > 正文

Delphi提取PDF文本實例

2020-01-31 20:50:21
字體:
供稿:網(wǎng)友

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

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

環(huán)境要求:java運行環(huán)境

pdfBox應(yīng)用包:pdfbox-app-2.0.6.jar

這里使用了DOS命令行來解析,然后調(diào)用解析結(jié)果。

首先是執(zhí)行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);//設(shè)置允許繼承,否則在NT和2000下無法取得輸出結(jié)果 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;//使用指定的句柄作為標(biāo)準(zhǔn)輸入輸出的文件句柄,使用指定的顯示方式 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;

然后調(diào)用顯示:

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文本實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林網(wǎng)。

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

圖片精選

主站蜘蛛池模板: 高碑店市| 察哈| 喀什市| 德阳市| 浪卡子县| 甘孜县| 中宁县| 共和县| 普陀区| 京山县| 衡山县| 富源县| 三台县| 平罗县| 宜阳县| 长治市| 河源市| 建瓯市| 辽中县| 黄大仙区| 万州区| 霞浦县| 高青县| 赤壁市| 惠水县| 麟游县| 出国| 新巴尔虎左旗| 孟连| 东港市| 塔城市| 石景山区| 金山区| 罗平县| 泰顺县| 施甸县| 景洪市| 洛川县| 永靖县| 若羌县| 托里县|