この記事では、主にPPTを写真に変換するApache POIに関する関連コンテンツを共有しています。 Apache Poiを簡単に紹介し、特定のコンテンツは次のとおりです。
1。ApachePoiの紹介
Apache Poiは、Javaで書かれた無料でオープンソースのクロスプラットフォームJava APIです。 Apache Poiは、Microsoft Officeフォーマットアーカイブを読み書きするためのJavaプログラムの機能を提供します。
公式文書ApachePoi公式ウェブサイトを表示できます
Apache POIでPPTドキュメントを操作する方法は2つあります。
1。POI-HSLFに対応するPowerPoint '97(-2007)のファイル形式の接尾辞は.pptです
2。Poi-XSLFに対応するPowerPoint 2007 OOXMLのファイル形式の接尾辞IS .pptx
2。JARパッケージ
OfficeのPOI操作にはJARパッケージが必要です。
poi-3.12.jarpoi-ooxml-3.12.jarpoi-ooxml-schemas-3.12.jarpoi-scratchpad-3.12.jarxmlbeans-2.6.0.jar
紹介されたMavenメソッド:
Mavenメソッドは、他のいくつかに依存しているため、2つを紹介する必要があります
<Dependency> groupId> org.apache.poi </groupid> <artifactid> poi-ooxml </artifactid> <version> 3.12 </version> </dependency> <dependency> <groupid> org.apache.poi </groupid> <artifactid> poi-scratchpad </artifactid> </</</</>
3。POI-HSLFメソッド
POI-HSLFメソッドは、PPTの.pptサフィックスで終わるドキュメントを処理します。
/** * PPT2003ドキュメントの変換接尾辞は.ppt * @param pptfile ppt file * @param imgfile画像が保存されるディレクトリ(ファイルではありません) * @return */public static boolean doppt2003toimage(ファイルpptfile、file imgfile、<string> lite = new {file file is of {file file int fileinputStream(pptfile); slideshow ppt = new Slideshow(is); //入力ストリームを時間に閉じるis.close(); dimension pgsize = ppt.getPagesize(); slide = ppt.getSlides(); "Page。"); textrun [] truns = slide [i] .getTextruns(); for(int k = 0; k <truns.length; k ++){richtextrun [] rtruns = truns [k] .getrichtextruns(); rtruns [l] .getfontindex(); string name = rtruns [l] .getFontName(); log.info( "元のフォントインデックスとフォント名:"+index+" - "+name); rtruns [l] .setfontindex(1); rtruns [l] .setfontname( "宋体");}} //スライド緩衝液のサイズに従って画像を生成しますimg = new bufferedimage(pgsize.width、pgsize.height.height.type_int_rgbbbbd_rgbbbd); img.creategraphics(); graphics.setpaint(color.white); graphics.fill(new rectangle2d.float.width.width、pgsize.height)); slide [i] .draw(graphics); //画像は、string absolutepath = imgfiletepath + " + imgfiletepath(" ".jpeg"; file jpegfile = new file(absolutepath); //画像パスはlist.add((i + 1) + ".jpeg"); //画像が存在する場合、jpegfile.exists(){){continue;} //ここで画像の保管パスとjpeg bedの保管パスはありません。生成ファイルへのパスへのfileoutputStream out = new fileoutputStream(jpegfile); imageio.write(img、 "jpeg"、out); out.close();} log.error( "ppt resurcefully!");} catch;} catch;4。POI-XSLFメソッド
POI-XSLFメソッドは、PPTファイルの.pptxサフィックスで終わるドキュメントを処理します。
/** * PPT2007ドキュメントの変換サフィックスは.pptx * @param pptfile ppt file * @param imgfile画像が保存されるパスディレクトリ(ファイルではありません) * @paramリストをリストするリスト * @return */public static boolean doppt2007temage(file pptfile、file pptile、file pptile、file pptfile、file pptfile、file pptfile、 is = null; try {is = new fileinputStream(pptfile); xmlslideshow xmlslideshow = new xmlslideshow(is); is.close(); //サイズ寸法= xmlslideshow.getPaseize(); xmlslideshow.getSlides(); for(int i = 0; i <slides.length; i ++){//文字化けの問題を解くxslfshape [] shapes = slides [i] .getshapes(); (xslftextshape)shape; list <xslftextparagraph> textparagraphs = sh.getTextParagraphs(); textruns){xslftextrun.setFontFamily( "安");}}}}} //スライドbufferedimageのサイズに従って画像を生成しますimg = new bufferedimage(pgsize.width、pgsize.height、bufferedimage.type_int_rgb); img.creategraphics(); graphics.setpaint(color.white); graphics.fill(new rectangle2d.float(pgsize.width、pgsize.height)); //最もコアコードスライド[i] .draw(グラフィックス); imgfile.getabsolutepath() + "/" +(i + 1) + ".jpeg"; file jpegfile = new file(absolutepath); //画像パスはlist.add((i + 1) + ".jpeg"); (jpeg、png、bmpなど)、生成ファイルパスfileoutputStream out = new fileoutputStrem(jpegfile); // imageio.write(img、 "jpeg"、out);画像への変換が画像に変換されたとき! "、e);} false;}5。可能なエラー
org.apache.poi.poifs.filesystem.officexmlfileexception:提供されたデータは、2007+ XMLにあるようです。 OLE2 Office Documentsを扱うPOIの一部を呼び出しています。このデータを処理するには、POIの別の部分を呼び出す必要があります(HSSFの代わりにXSSFなど)
上記のエラーが発生します。つまり、対応では使用されず、2番目の方法を使用してPPTを変換する必要があります。
POIがうまくいかず、写真が簡単に歪むことがあるため、コア変換が簡単に変更されると問題が発生する場合があります。
//最もコアコードスライド[i] .draw(グラフィックス);
要約します
上記は、PPTを画像インスタンスコードに変換するApache POIに関するすべてです。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!