วิธีการของยาโคบสามารถแก้ปัญหานี้ได้ แต่เนื่องจากฉันได้ทำรายงานมาก่อนฉันจึงต้องการลองใช้วิธีการต่าง ๆ
Jacob เป็นสะพานเชื่อมต่อ Java และ Microsoft และความละเอียดทั้งหมดจะถูกแยกวิเคราะห์โดย Microsoft POI ไม่ได้เป็นของแท้เท่ากับการแยกวิเคราะห์ของ Microsoft ดังนั้นหากข้อกำหนดสูงให้ใช้ยาโคบ
ความคิดทั่วไปนั้นง่ายมาก ก่อนที่จะแปลง PPT เป็นรูปภาพก่อนจากนั้นเขียนรูปภาพเป็น PDF แปลงรูปภาพโดยใช้ POI และใช้ ITEX เพื่อใช้งาน PDF อย่างไรก็ตามข้อผิดพลาดของวิธีนี้คือเอฟเฟกต์ POI ของการแปลงรูปภาพนั้นไม่ค่อยดีนัก
แพ็คเกจที่นำเข้าคือ: ITEXTPDF-5.1.3.JAR, POI-3.8-20120326.JAR, POI-SCRATCHPAD-3.8-20120326.JAR
จากนั้นรหัสถูกโพสต์:
รหัสไม่ดำเนินการรวมพารามิเตอร์เขียนสองวิธี:
แพ็คเกจ com.zzk.cn; นำเข้า Java.awt.Dimension; นำเข้า Java.io.File; นำเข้า Java.io.FileInputStream; นำเข้า java.io.filenotfoundException; นำเข้า Java.io.FileOutputStream; นำเข้า java.io.ioException; นำเข้า Java.awt.Color; นำเข้า Java.awt.Dimension; นำเข้า java.awt.graphics2d; นำเข้า java.awt.geom.rectangle2d; นำเข้า java.awt.image.bufferedimage; นำเข้า org.apache.poi.hslf.model.textrun; นำเข้า org.apache.poi.hslf.record.slide; นำเข้า org.apache.poi.hslf.usermodel.richtextrun; นำเข้า org.apache.poi.hslf.usermodel.slideshow; คลาสสาธารณะ ppttoimage {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// อ่านในไฟล์ไฟล์ไฟล์ ppt = ไฟล์ใหม่ ("d:/หนังสือสรุป JVM 7-9.ppt"); doppttoimage (ไฟล์); } public boolean สาธารณะ doppttoImage (ไฟล์ไฟล์) {boolean isppt = checkFile (ไฟล์); if (! isppt) {system.out.println ("ไฟล์ที่คุณระบุไม่ใช่เอกสาร PPT!"); กลับเท็จ; } ลอง {fileInputStream คือ = ใหม่ FileInputStream (ไฟล์); สไลด์โชว์ ppt = สไลด์โชว์ใหม่ (IS); is.close (); มิติ pgsize = ppt.getPagesize (); org.apache.poi.hslf.model.slide [] slide = ppt.getslides (); สำหรับ (int i = 0; i <slide.length; i ++) {system.out.print ("th" + i + "หน้า"); if (slide [i] .getNotESSHEET ()! = null && slide [i] .getNotEsTheet (). getTextruns ()! = null) {// รับบันทึกแรกของ System.out.println ("หมายเหตุ:" + สไลด์ } textrun [] truns = slide [i] .gettextruns (); สำหรับ (int k = 0; k <truns.length; k ++) {richtextrun [] rtruns = truns [k] .getRichtextruns (); สำหรับ (int l = 0; l <rtruns.length; l ++) {rtruns [l] .setfontindex (1); rtruns [l] .setFontName ("安安"); // รับรายการข้อความ system.out.println (rtruns [l] .getText ()); }} bufferedImage img = bufferedImage ใหม่ (pgsize.width, pgsize.height, bufferedimage.type_int_rgb); Graphics2D graphics = img.createGraphics (); graphics.setPaint (color.white); graphics.fill (ใหม่ rectangle2d.float (0, 0, pgsize.width, pgsize.height)); เลื่อน [i] .Draw (กราฟิก); // ตั้งค่าเส้นทางการจัดเก็บของภาพและรูปแบบของภาพ (jpeg, png, bmp ฯลฯ ) ให้ความสนใจกับไฟล์พา ธ ไฟล์ที่สร้างขึ้น fileoutputStream = ใหม่ fileOutputStream ("d:/testimage/pict_" + (i + 1) + ".jpeg"); javax.imageio.imageio.write (img, "jpeg", ออก); out.close (); } system.out.println ("ตกลง"); กลับมาจริง; } catch (filenotfoundexception e) {system.out.println (e); } catch (ioexception e) {e.printstacktrace (); } return false; } // ฟังก์ชั่นตรวจสอบว่าไฟล์เป็น ppt public public boolean checkfile (ไฟล์ไฟล์) {boolean isppt = false; String filename = file.getName (); สตริง suffixName = null; if (filename! = null && filename.indexof (".")! = -1) {suffixName = filename.substring (filename.indexof (".")); if (suffixName.equals (". ppt")) {isppt = true; } return isppt; } else {return isppt; -รหัสที่สอง:
แพ็คเกจ com.zzk.cn; นำเข้า Java.io.FileOutputStream; นำเข้า java.io.ioException; นำเข้า com.ithtpdf.text.document; นำเข้า com.ithtpdf.text.documentException; นำเข้า com.ithtpdf.text.image; นำเข้า com.ithtpdf.text.pdf.pdfwriter; คลาสสาธารณะ imagetopdf {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.out.println ("บทที่ 6 ตัวอย่างที่ 3: การใช้เส้นทางสัมพัทธ์สำหรับ html"); // ขั้นตอนที่ 1: การสร้างเอกสารเอกสารเอกสารเอกสาร = เอกสารใหม่ (); ลอง {// ขั้นตอนที่ 2: // เราสร้างนักเขียนที่รับฟังเอกสาร // และนำ pdf-stream ไปยังไฟล์ pdfwriter.getInstance (เอกสาร, FileOutputStream ใหม่ ("D:/ทดสอบรูปภาพ PDF")); // htmlWriter writer = htmlWriter.getInstance (เอกสาร, ใหม่ fileOutputStream ("chap0603.html")); // writer.setimagePath ("../../ images/kerstmis/"); // ขั้นตอนที่ 3: เราเปิด document.Open (); สำหรับ (int i = 1; i <= 7; i ++) {// ขั้นตอนที่ 4: เราเพิ่มภาพเนื้อหา jpg = image.getInstance ("d:/testimage/pict _"+i+". jpeg"); jpg.scalepercent (50); document.add (jpg); }} catch (documentException de) {system.err.println (de.getMessage ()); } catch (ioexception ioe) {system.err.println (ioe.getMessage ()); } // ขั้นตอนที่ 5: เราปิด document document.close (); - ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น