Delphi 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 텍스트의 실례는 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.