เครดิตรูปภาพ: รูปภาพ Pixland / Pixland / Getty
การอ่านไฟล์ PDF ใน Java ไม่ใช่เรื่องยากโดยใช้ไลบรารีที่พร้อมใช้งาน การอ่านไฟล์ PDF ช่วยให้คุณสามารถเขียนโปรแกรม Java ที่สามารถประมวลผลข้อความในไฟล์เหล่านั้นได้ ทางเลือกหนึ่งสำหรับการอ่านไฟล์ PDF คือไลบรารี PDFBox แบบโอเพ่นซอร์สฟรีที่พร้อมใช้งานจาก Apache แพลตฟอร์มการพัฒนา Eclipse Java ทำให้งานนี้ง่ายขึ้นและจัดการไลบรารีที่คุณจะดาวน์โหลด คุณต้องคุ้นเคยกับการเขียนโปรแกรม Java เพื่อใช้ประโยชน์จากไลบรารี Java เหล่านี้
รวบรวมห้องสมุดที่จำเป็น
ขั้นตอนที่ 1
ดาวน์โหลด Java JDK จากเว็บไซต์ของ Sun นี่คือไฟล์ปฏิบัติการซึ่งคุณสามารถติดตั้งบนระบบของคุณได้โดยการเรียกใช้ มีเวอร์ชันสำหรับ Windows, Mac และ Linux คลิกที่ปุ่มสีแดง "ดาวน์โหลด" บันทึกไฟล์ชื่อ "jdk-6uxx-windows-xxx.exe" เมื่อได้รับแจ้ง บันทึกไฟล์นี้แล้วดับเบิลคลิกเพื่อเปิดตัวติดตั้ง Java
วิดีโอประจำวันนี้
ขั้นตอนที่ 2
ดาวน์โหลดระบบการพัฒนา Eclipse และคลายซิปลงในไดเร็กทอรีระดับบนสุด เลือก "Eclipse IDE สำหรับนักพัฒนา Java" การดำเนินการนี้จะเริ่มการดาวน์โหลด "eclipse-java-galileo-SR2-win32.zip" ดับเบิลคลิกที่ไฟล์เพื่อคลายซิปหลังจากการดาวน์โหลดเสร็จสิ้น เลือกตำแหน่งไดเรกทอรีราก "C:" เพื่อคลายซิป Eclipse
ขั้นตอนที่ 3
เริ่ม Eclipse โดยดับเบิลคลิกที่ "eclipse.exe" ในไดเร็กทอรีที่คุณเพิ่งสร้างขึ้นโดยการคลายซิปไฟล์ eclipse zip ในระบบ Eclipse ให้สร้างโปรเจ็กต์ชื่อ "PrintPdf" เลือก "ไฟล์" จากนั้นเลือก "ใหม่" จากนั้นเลือก "โครงการ Java" พิมพ์ชื่อโครงการ "PrintPdf" ในกล่องโต้ตอบที่ปรากฏขึ้น ตรวจสอบให้แน่ใจว่าได้เลือกปุ่มตัวเลือกที่ระบุว่า "สร้างโฟลเดอร์แยกสำหรับไฟล์ต้นฉบับและไฟล์คลาส" คลิก "เสร็จสิ้น"
ขั้นตอนที่ 4
สร้างโฟลเดอร์ "lib" ในโครงการ "PrintPdf" ของคุณ คลิกขวาที่โปรเจ็กต์ "PrintPdf" แล้วเลือก "ใหม่" จากนั้นเลือก "โฟลเดอร์" ป้อนชื่อ "lib" และคลิกที่ "เสร็จสิ้น"
ขั้นตอนที่ 5
ดาวน์โหลด Apache "PDFBox.jar" จากเว็บไซต์ Apache และคัดลอกลงในไดเร็กทอรี lib ที่คุณเพิ่งสร้างขึ้น ในหน้าเว็บเดียวกัน ให้ดาวน์โหลดไฟล์ "fontbox-nn.jar" และไฟล์ "jempbox-nn.jar" ในแต่ละกรณี เมื่อคุณคลิกที่ไฟล์ jar นั้น ระบบจะนำคุณไปยังหน้าที่คุณสามารถเลือกเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่งที่สามารถจัดเตรียมไฟล์นี้ได้ เลือกแต่ละไฟล์แล้วดาวน์โหลดไฟล์ jar แต่ละไฟล์ คัดลอกไฟล์ jar แต่ละไฟล์ลงในไดเร็กทอรี lib ที่คุณเพิ่งสร้างขึ้น
ขั้นตอนที่ 6
ดาวน์โหลดแพ็คเกจ Apache log4j.jar ในลักษณะเดียวกันและคัดลอกไฟล์ log4j.jar ลงในไดเร็กทอรี ไลบรารี Apache PDFBox ใช้ไลบรารีการบันทึก Apache นี้ ดังนั้นต้องมีไฟล์นี้
ขั้นตอนที่ 7
ดาวน์โหลดแพ็คเกจ Apache Commons Discovery เป็นไฟล์ zip ดับเบิลคลิกที่ไฟล์ zip เลือก "commons-discovery-nn.jar" และแตกไฟล์ลงในไดเร็กทอรี lib
ขั้นตอนที่ 8
ใน Eclipse คลิกที่ไดเร็กทอรี "lib" แล้วกด "F5" ตรวจสอบให้แน่ใจว่าไฟล์ jar ทั้งหมดที่คุณเพิ่มแสดงขึ้น
ขั้นตอนที่ 9
คลิกขวาที่โปรเจ็กต์ PrintPDF แล้วเลือก "คุณสมบัติ" เลือก "Java Build Path" และเลือกแท็บ "ไลบรารี" คลิกที่ "เพิ่มไห" และไปที่ไดเร็กทอรี lib ที่คุณเพิ่งสร้างขึ้น และเพิ่ม "commons-logging-nn.jar" "fontbox-nn.jar" "jempbox-nn.jar" "log4j-nn.jar", " และ "pdfbox-nn.jar" คลิกที่ "ตกลง"
เขียนโค้ดเพื่ออ่าน PDF
ขั้นตอนที่ 1
คลิกขวาที่โฟลเดอร์ "src" ของโปรเจ็กต์ "PrintPDF" แล้วเลือก "ใหม่" และ "แพ็คเกจ" สร้างแพ็คเกจโดยใช้ชื่อที่มีความหมาย ตัวอย่างเช่น ตั้งชื่อแพ็คเกจว่า "com.pdf.util" คลิก "เสร็จสิ้น"
ขั้นตอนที่ 2
คลิกขวาที่ชื่อแพ็คเกจที่คุณเพิ่งสร้างแล้วเลือก "ใหม่" จากนั้นเลือก "คลาส" สร้างคลาสชื่อ "PDFTextParser" อย่าลืมคลิกช่องทำเครื่องหมาย "public static void main..." เพื่อให้ระบบสร้าง a วิธี "หลัก"
ขั้นตอนที่ 3
แก้ไขเมธอด "main" ในคลาส "PDFTextParser" เพื่อให้มีโค้ดต่อไปนี้:
โมฆะคงที่สาธารณะหลัก (สตริง args []) { PDFTextParser pdf = PDFTextParser ใหม่ ("data/javaPDF.pdf") GO // พิมพ์ผลลัพธ์ System.out.println (pdf.getParsedText ()) GO }
โปรดทราบว่าไฟล์ที่คุณต้องการพิมพ์นั้นสะกดออกมาในตัวสร้างเป็น PDFTextParser ("data/JavaPDF.pdf") อาจเป็นอาร์กิวเมนต์บรรทัดคำสั่งได้อย่างง่ายดาย:
PDFTextParser pdf = PDFTextParser ใหม่ (argv[0])
ไป
หรือเลือกจากอินเทอร์เฟซ GUI
มันสร้างอินสแตนซ์ของคลาส PDFTextParser แล้วเรียกใช้เมธอด "getParsedText"
ขั้นตอนที่ 4
แทรกรหัสต่อไปนี้ใต้บรรทัดระดับบนสุด "คลาสสาธารณะ PDFTextParser" ที่สร้างขึ้นสำหรับคุณ
ตัวแยกวิเคราะห์ PDFParser ส่วนตัว = null GO
// แยกข้อความจากเอกสาร PDF PDFTextParser สาธารณะ (ชื่อไฟล์สตริง) { ไฟล์ไฟล์ = ไฟล์ใหม่ (ชื่อไฟล์)
ไปถ้า (!file.isFile ()) { System.err.println ("ไฟล์ " + ชื่อไฟล์ + " ไม่มีอยู่จริง") GO } // ตั้งค่าอินสแตนซ์ของตัวแยกวิเคราะห์ PDF ลอง { parser = PDFParser ใหม่ (FileInputStream ใหม่ (ไฟล์)) GO } จับ (IOException e) { System.err.println ("ไม่สามารถเปิด PDF พาร์เซอร์ " + e.getMessage ()) GO } } // สตริงสาธารณะ getParsedText () { PDDocument pdDoc = null GO COSDocument cosDoc = null;
สตริง parsedText = null; ไป
ลอง { PDFTextStripper pdfStripper = PDFTextStripper ใหม่ ()
GO parser.parse () GO cosDoc = parser.getDocument () GO pdDoc = PDDocument ใหม่ (cosDoc) GO
// รับรายการของหน้าทั้งหมด รายการ < PDPage> รายการ = pdDoc.getDocumentCatalog().getAllPages()
ไป
//โปรดทราบว่าคุณสามารถพิมพ์หน้าใดก็ได้ที่คุณต้องการ //โดยเลือกค่าต่างๆ ของหน้าเริ่มต้นและหน้าสิ้นสุด pdfStripper.setStartPage (1); /// ความยาว int ตาม = list.size(); //จำนวนหน้าทั้งหมด pdfStripper.setEndPage (ความยาว); // หน้าสุดท้าย // รับข้อความสำหรับหน้าที่แยกวิเคราะห์ข้อความ = pdfStripper.getText (pdDoc)
GO } catch (IOException e) { System.err .println ("เกิดข้อยกเว้นในการแยกวิเคราะห์เอกสาร PDF" + e.getMessage ()) GO } ในที่สุด { ลอง { if (cosDoc != null) cosDoc.close() GO if (pdDoc != null) pdDoc.close() GO } catch (IOException e) { e.printStackTrace() GO } }
ส่งคืน parsedText GO }
ขั้นตอนที่ 5
เรียกใช้โปรแกรม คลิกขวาที่คลาส PDFTextParser แล้วคลิก "เรียกใช้ As" จากนั้นคลิก "โปรแกรม Java" โปรแกรมควรรันและพิมพ์เนื้อหาที่เป็นข้อความของไฟล์ PDF ที่คุณป้อนในโค้ดของคุณ
ระงับข้อความแสดงข้อผิดพลาดในการเริ่มต้น Log4j
ขั้นตอนที่ 1
สร้างไฟล์คอนฟิกูเรชันเพื่อระงับข้อความแสดงข้อผิดพลาดของระบบบันทึก Java log4j ที่สร้างขึ้นเมื่อไม่พบไฟล์คอนฟิกูเรชันเมื่อเริ่มทำงาน คลิกขวาที่โฟลเดอร์ "src" ของโปรเจ็กต์ PrintPDF แล้วเลือก "ใหม่" จากนั้นเลือก "ไฟล์" ตั้งชื่อไฟล์ "log4j.properties" Eclipse จะแสดงหน้าจอว่างสำหรับไฟล์ใหม่นี้
ขั้นตอนที่ 2
วางบรรทัดต่อไปนี้ลงในหน้าจอว่างที่แสดงไฟล์ "log4j.properties"
ขั้นตอนที่ 3
บันทึกไฟล์ "log4j.properties" การมีอยู่ของไฟล์นี้ในไดเร็กทอรี "src" ระดับบนสุดจะระงับข้อความเริ่มต้นของ log4j และข้อความบันทึกที่ไม่สำคัญใดๆ ระบบ log4j จะพิมพ์เฉพาะข้อผิดพลาดที่เกิดขึ้นจริงเท่านั้น
เคล็ดลับ
นอกจากนี้ยังมีแพ็คเกจเชิงพาณิชย์จำนวนหนึ่งที่คุณสามารถใช้เพื่อแยกข้อความจากไฟล์ PDF ได้ แต่มีราคาไม่แพง