国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 荥经县| 黄梅县| 鄄城县| 同德县| 固阳县| 星座| 赤峰市| 武清区| 洪江市| 姜堰市| 海盐县| 手机| 建昌县| 江陵县| 云梦县| 太康县| 襄城县| 西乌珠穆沁旗| 马龙县| 贺兰县| 德格县| 长治市| 托克逊县| 蒲江县| 台南县| 淳安县| 盐边县| 通许县| 开江县| 临桂县| 得荣县| 潜山县| 香河县| 奇台县| 策勒县| 东至县| 阳信县| 炉霍县| 江口县| 双柏县| 迭部县|