Delphi PDF 텍스트 추출 인스턴스

PDF를 생성하는 컨트롤러는 매우 많지만 해석이 많지 않습니다. pdf Toolkit은 할 수 있지만 테스트의 첫 번째 복잡한 pdf는 오류를 보고하고 한자 난호로 사용할 수 있는 버전이나 사용 방법이 틀렸습니다.
이전에 자바에서 호출한 아파치 이름의 pdfBox 라이브러리가 사용하기 좋았던 것을 떠올리여 pdfBox를 다운로드하고 델파이를 사용하여 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;
오케이, 대박!
상기 델파이 추출 PDF 텍스트의 실례는 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기