Artikel ini terutama berbagi konten terkait tentang Apache POI mengubah PPT menjadi gambar. Secara singkat memperkenalkan Apache PoI, dan konten spesifiknya adalah sebagai berikut.
1. Pengantar Apache Poi
Apache PoI adalah Java API lintas-platform gratis dan open source yang ditulis di Java. Apache PoI menyediakan fungsi program Java untuk membaca dan menulis arsip format Microsoft Office.
Anda dapat melihat situs web resmi dokumen Apache POI resmi
Ada dua cara untuk mengoperasikan dokumen PPT dengan Apache Poi:
1. Sufiks format file dari powerpoint '97 (-2007) yang sesuai dengan poi-hslf adalah .ppt
2. Format file akhiran PowerPoint 2007 ooxml yang sesuai dengan poi-xslf adalah .pptx
2. Paket JAR
POI Operation of Office Membutuhkan Paket JAR:
poi-3.12.jar poi-ooxml-3.12.jar poi-ooxml-schemas-3.12.jar poi-scratchpad-3.12.jar xmlbeans-2.6.0.jar
Metode Maven Diperkenalkan:
Metode Maven hanya perlu memperkenalkan dua, karena mereka mengandalkan beberapa yang lain
<dependency> <GroupId> org.apache.poi </groupid> <ArTifactId> poi-ooxml </arttifactid> <version> 3.12 </version> </dependency> <dependency> <roupid> org.apache.poi </sroupid> <ArtiFacTID> Poi-scratracpad </Artence.
3. Metode POI-HSLF
Metode POI-HSLF menangani dokumen yang diakhiri dengan akhiran .PPT PPT.
/** * The conversion suffix of the ppt2003 document is .ppt * @param pptFile ppt file* @param imgFile The directory to which the image will be saved (not a file) * @return */public static Boolean doPPT2003toImage(File pptFile,File imgFile,List<String> list) {try {FileInputStream is = new FileInputStream (pptFile); slideshow ppt = slideShow baru (IS); // Tutup aliran input dalam waktu adalah.close (); dimensi pgsize = ppt.getPageSize (); slide [] slide = ppt.getSlides (); untuk (int i = 0; i <slide.length; i ++) {iP i = 0; "Halaman."); Textrun [] truns = slide [i] .gettExtruns (); untuk (int k = 0; k <truns.length; k ++) {richtextrun [] rtruns = name pRun dan. Getrichtextruns (); for (int l = 0; l <rtrunsplength; rtruns [l] .getFontIndex (); string name = rtruns [l] .getFontName (); log.info ("Indeks font asli dan nama font:"+indeks+" -"+nama); // Setel ulang indeks font dan nama font untuk mencegah gambar yang dihasilkan rusak gambar yang dihasilkan dikeluarkan gambar yang dihasilkan dikelir gambar yang dihasilkan dikeluarkan gambar yang dihasilkan rusak gambar gambar yang dihasilkan untuk mencegah gambar yang dihasilkan dikeluarkan gambar yang dihasilkan. rtruns [l] .setFontIndex (1); rtruns [l] .setFontName ("宋体");}} // Hasilkan gambar sesuai dengan ukuran slide bufferedImage img = BufferedImage baru (pgsize.width, pgsize.height, bufferedimage.type_inteRics; img.creategraphics (); graphics.setPaint (color.white); graphics.fill (new rectangle2d.float (0, 0, pgsize.width, pgsize.height)); slide [i] .draw (grafik); // gambar disimpan oleh string absolutepath = iMgfile. .jpeg "; file jpegfile = file baru (absolutePath); // jalur gambar disimpan dalam list.add ((i + 1) +" .jpeg "); // Jika ada gambar, tidak ada jika dihasilkan (jpegfile. the generation file path FileOutputStream out = new FileOutputStream(jpegFile);ImageIO.write(img, "jpeg", out);out.close();}log.error("PPT converted to image successfully!");return true;}catch (Exception e) {log.error("Exception occurred when converting to image!", e);}return false;}4. Metode POI-XSLF
Metode POI-XSLF menangani dokumen yang diakhiri dengan akhiran .pptx file PPT.
/** * Suffix konversi dari dokumen PPT2007 adalah .pptx * @param pptfile ppt file * @param imgfile direktori path yang gambarnya akan disimpan (bukan file) * @param list the list yang menyimpan nama file * @return */public static boolean doppt2007toimage {pipileon {pube pubePileam, public static Boolean doppt2007 is = null; coba {is = new fileInputStream (pptfile); xmlslideshow xmlslideshow = new xmlslideshow (IS); is.close (); // dapatkan dimensi ukuran pgsize = xmlslideshow. xmlslideshow.getslides (); for (int i = 0; i <slide.length; i ++) {// Selesaikan masalah xslfshape [] bentuk = slide [i] .getshapes (); untuk (xslfshape Shape: shapes) {iflfex = xslpext (xslfshape) {shapexlext) {ifslape = xslapex = (Xslftextshape) bentuk; Daftar <xslftextparagraph> TextParagraphs = sh.getTextParagraphs (); for (xslftextParagraph xslftextparagraph: TextParagraphs) {Daftar <xslfTextrun> Textruns = xslftextparagraph.gettExtrun (Textruns = xslftextParagraph.gettExtrun> Textruns = xslftextexparagraf. Textruns) {xslftextrun.setFontFamily ("安");}}}} // Hasilkan gambar sesuai dengan ukuran slide bufferedImage IMG = BufferedImage baru (pgSize.width, pgsize.height, bufferedimage.type_int_rgb); img.creategraphics (); graphics.setPaint (color.white); graphics.fill (new rectangle2d.float (0, 0, pgsize.width, pgsize.height)); // Kode inti yang paling slide [i] .raw (grafik); // Jalan ke mana gambar akan disimpan dalam slide [i] .raw (grafik); imgfile.getAbsolutePath () + "/" + (i + 1) + ".jpeg"; file jpegfile = file baru (absolutePath); // jalur gambar disimpan dalam daftar. (JPEG, PNG, BMP, dll.), Perhatikan jalur file generasi FileOutputStream out = FileOutputStream baru (jpegfile); // Tulis ke gambar ke Imageo.write (img, "jpeg", out); out.close ();} log.error ("ppt dikonversi ke gambar dengan sukses!" terjadi ketika konversi ke gambar dikonversi menjadi gambar! ", e);} return false;}5. Kemungkinan kesalahan
org.apache.poi.poifs.filesystem.OfficexmlfileException: Data yang disediakan tampaknya ada di Office 2007+ XML. Anda memanggil bagian POI yang berkaitan dengan dokumen kantor OLE2. Anda perlu memanggil bagian POI yang berbeda untuk memproses data ini (misalnya XSSF bukan HSSF)
Kesalahan di atas terjadi, yang berarti tidak digunakan dalam korespondensi, dan metode kedua harus digunakan untuk mengonversi PPT.
Kadang -kadang masalah terjadi ketika konversi inti mudah diubah karena POI tidak dilakukan dengan baik dan gambar -gambar terkadang mudah terdistorsi.
// Slide kode inti terbanyak [i] .draw (grafik);
Meringkaskan
Di atas adalah semua tentang Apache PoI mengubah PPT menjadi kode instance gambar. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!