تشترك هذه المقالة بشكل أساسي في محتوى Apache POI تحويل PPT إلى صور. يقدم بإيجاز Apache POI ، والمحتوى المحدد كما يلي.
1. مقدمة إلى Apache POI
Apache POI هي واجهة برمجة تطبيقات مجانية ومفتوحة المصدر Java API مكتوبة في Java. يوفر Apache POI وظيفة برامج Java لقراءة وكتابة محفوظات Microsoft Office Format.
يمكنك عرض موقع المستند الرسمي Apache POI الرسمي
هناك طريقتان لتشغيل مستندات PPT مع Apache POI:
1.
2. لاحقة تنسيق الملف من PowerPoint 2007 OOXML المقابلة لـ PO-XSLF IS .PPTX
2. حزمة جرة
يتطلب تشغيل Office POI حزمة جرة:
POI-3.12.JAR POI-OOXML-33
تم تقديم طريقة Maven:
تحتاج طريقة Maven فقط إلى تقديم اثنين ، لأنها تعتمد على العديد من الآخرين
<Rependency> <roupEd> org.apache.poi </rougiD> <StifactId> poi-ooxml </shintifactid> <splection> 3.12 </splement
3. طريقة POI-HSLF
تعالج طريقة POI-HSLF المستندات التي تنتهي مع لاحقة .ppt من PPT.
/** * لاحقة التحويل الخاصة بوثيقة PPT2003 هي .ppt * param pptfile ppt file * param imgfile الدليل الذي سيتم حفظ الصورة إليه (وليس ملفًا) * regurn */public static boolean doppt2003toimage (ملف pptfile ، ملف imgfile fileInputStream (pptfile) ؛ عرض الشرائح ppt = عرض شرائح جديد (IS) ؛ // أغلق دفق الإدخال في الوقت المناسب. "صفحة.") ؛ textrun [] truns = slide [i] .getTexTruns () ؛ for (int k = 0 ؛ k <truns.length ؛ k ++) {richtextrun [] rtruns = truns [k]. rtruns [l] .getFontIndex () ؛ اسم السلسلة = rtruns [l] .getfontname () rtruns [l] .setFontIndex (1) ؛ rtruns [l] .SetFontName ("宋体") ؛}} // قم بإنشاء الصورة وفقًا لحجم الشريحة bufferedimage img = new BufferedImage (pgsize.width img.creategraphics () ؛ graphics.setpaint (color.white) ؛ graphics.fill (new rectangle2d.float (0 ، 0 ، pgsize.width ، pgsize.height)) ؛ slide [i] .draw (graphics) ؛ ".jpeg" ؛ file jpegfile = ملف جديد (AbsolutePath) ؛ // يتم تخزين مسار الصورة في list.add ((i + 1) + ".jpeg") ؛ fileOutputStream ، مسار ملف الجيل = fileOutputStream (jpegfile) ؛ imageio.write (img ، "jpeg" ، out) ؛ out.close () ؛} log.Eror ("ppt تم تحويله إلى الصورة بنجاح!") ؛4. طريقة PO-XSLF
تعالج طريقة PO-XSLF المستندات التي تنتهي مع لاحقة .PPTX لملفات PPT.
/** * لاحقة التحويل لمستند PPT2007 هي .pptx * param pptfile ppt file * param imgfile دليل المسار الذي سيتم حفظ الصورة إليه (وليس ملفًا) IS = NULL ؛ حاول {iS = جديد fileInputStream (pptfile) ؛ xmlslideshow xmlslideshow = new xmlslideshow (is) ؛ iS.Close () ؛ // الحصول على البعد الحجم pgsize = xmlslideshow.getPagesize (// الحصول على slide xslide =] xmlslideshow.getsslides () ؛ for (int i = 0 ؛ i <slides.length ؛ i ++) {// حل المشكلة المشوهة xslfshape [] (xslftextshape) الشكل ؛ قائمة <xslftextparagraph> textparagraphs = sh.gettextparagraphs () ؛ لـ (xslftextparagraph xslftextparagraph: textparagraphs) Xslftextrun: Textruns) {xslftextrun.setfontfamily ("安") ؛}}} // إنشاء صورة وفقًا لحجم الشريحة bufferedimage img = new BufferedImage (pgsize.width.hight. img.creategraphics () ؛ graphics.setpaint (color.white) ؛ graphics.fill (new rectangle2d.float (0 ، 0 ، pgsize.width ، pgsize.hight) (i + 1) + ".jpeg" ؛ file jpegfile = ملف جديد (AbsolutPath) ؛ // يتم تخزين مسار الصورة في list.add ((i + 1) + ".jpeg") ؛ // إذا كانت الصورة موجودة ، ملف fileOutputStream Out = جديد fileOutputStream (jpegfile) ؛ // اكتب إلى الصورة إلى imageio.write (img ، "jpeg" ، out) ؛ out.close () ؛} log.error ("تم تحويل ppt إلى الصورة بنجاح!) خطأ شنيع؛}5. الأخطاء المحتملة
org.apache.poi.poifs.filesystem.officexmlfileException: يبدو أن البيانات المقدمة في Office 2007+ XML. أنت تتصل بجزء من POI الذي يتعامل مع وثائق مكتب OLE2. تحتاج إلى استدعاء جزء مختلف من POI لمعالجة هذه البيانات (مثل XSSF بدلاً من HSSF)
يحدث الخطأ أعلاه ، مما يعني أنه لا يتم استخدامه في المراسلات ، ويجب استخدام الطريقة الثانية لتحويل PPT.
في بعض الأحيان تحدث المشكلات عند تغيير التحويلات الأساسية بسهولة لأن POI لا يتم بشكل جيد وأحيانًا تكون الصور مشوهة بسهولة.
// شريحة رمز أساسية [i] .draw (الرسومات) ؛
لخص
ما سبق هو كل شيء عن Apache POI تحويل PPT إلى رمز مثيل الصورة. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!