มีการควบคุมมากมายสำหรับการสร้าง PDF แต่ไม่มากจนเกินไปสำหรับการแยกวิเคราะห์ PDF Toolkit สามารถทำได้ แต่ PDF ที่ซับซ้อนครั้งแรกที่ทดสอบจะรายงานข้อผิดพลาดและอักขระภาษาจีนอ่านไม่ออก เวอร์ชันหรือวิธีการใช้งานอาจไม่ถูกต้อง
ฉันจำได้ว่าไลบรารี pdfBox ภายใต้ชื่อ Apache ที่ถูกเรียกโดยใช้ java นั้นมีประโยชน์มาก ดังนั้นฉันจึงดาวน์โหลด pdfBox และใช้ Delphi เพื่อเรียก pdfBox เพื่อแยกวิเคราะห์ข้อความ pdf
ข้อกำหนดด้านสิ่งแวดล้อม: สภาพแวดล้อมการทำงานของ Java
แพ็คเกจแอปพลิเคชัน pdfBox: pdfbox-app-2.0.6.jar
บรรทัดคำสั่ง DOS ถูกใช้ที่นี่เพื่อแยกวิเคราะห์ จากนั้นจึงเรียกผลลัพธ์ที่แยกวิเคราะห์
สิ่งแรกคือการรันคำสั่ง DOS:
ขั้นตอน CheckResult (b: Boolean); เริ่มต้นถ้าไม่ใช่ b ให้เพิ่ม Exception.Create (SysErrorMessage (GetLastError)); end; function RunDOS (const CommandLine: string): string; var HRead, HWrite: StartInfo: TStartupInfo; TProcessInformation; b: บูลีน; sRet: TStrings;begin Result := ''; FillChar(sa, sizeof(sa), 0);//ตั้งค่าให้อนุญาตการสืบทอด มิฉะนั้นจะไม่สามารถรับผลลัพธ์เอาต์พุตภายใต้ NT และ 2000 sa.nLength := sizeof(sa) ; sa .bInheritHandle := True; sa.lpSecurityDescriptor := ไม่มี; CheckResult(b); FillChar(StartInfo, SizeOf(StartInfo), 0); StartInfo.cb := SizeOf(StartInfo); StartInfo.wShowWindow := SW_HIDE;//ใช้ตัวจัดการที่ระบุเป็นตัวจัดการไฟล์อินพุตและเอาต์พุตมาตรฐาน วิธีการแสดงผลที่ระบุ StartInfo.dwFlags := STARTF_USESTDHANDLES หรือ STARTF_USESHOWWINDOW; StartInfo.hStdError := HWrite; StartInfo.hStdInput := GetStdHandle(STD_INPUT_HANDLE); //HRead; StartInfo.hStdOutput := HWrite; ไม่มี //lpProcessAttributes: PSecurityAttributes ไม่มี, //lpThreadAttributes: PSecurityAttributes True, //bInheritHandles: BOOL CREATE_NEW_CONSOLE, ไม่มี, ไม่มี, StartInfo, ProceInfo); WaitForSingleObject (ProceInfo.hProcess, INFINITE); ถ้า inS.Size > 0 จากนั้นเริ่ม sRet := TStringList.Create; sRet.LoadFromStream(inS);
จากนั้นเรียกจอแสดงผล:
ฟังก์ชั่น TfrmPDFTool.GetPDFText (sFile: string): string;var cmd:string; 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:=ExtractFileName(sFile); pdfFileName:=ExtractFileName(sFile); txtFileName:=FAppPath+'Temp/'+pdfFileName+'.txt'; cmd:='java -jar '+FAppPath+'PDFBox/pdfbox-app-2.0. 6.jar ExtractText ' +' -เข้ารหัส utf-8 '+sFile +' '+txtFileName; AddLog(cmd); ผลลัพธ์:=RunDOS(cmd); memTxtFile.Lines.LoadFromFile(txtFileName,TUTF8Encoding.Create); );จบ;
ตกลง คุณทำเสร็จแล้ว!
ตัวอย่างข้างต้นของการแยกข้อความ PDF ด้วย Delphi คือเนื้อหาทั้งหมดที่บรรณาธิการแบ่งปัน ฉันหวังว่ามันจะสามารถให้ข้อมูลอ้างอิงแก่คุณได้ และหวังว่าคุณจะสนับสนุน Wulin.com