ジェイコブの方法はこの問題を解決できますが、以前にレポートを作成したことがあるので、さまざまな方法を試してみたいと思います。
ジェイコブは、JavaとMicrosoftを結ぶ橋であり、すべての解像度はMicrosoftによって解析されます。 POIはMicrosoftが解析したほど本物ではないため、要件が高い場合はJacobを使用してください。
一般的なアイデアは非常に簡単です。最初にPPTを画像に変換し、次に写真をPDFに書き込みます。 POIを使用して写真を変換し、ITEXを使用してPDFを操作します。ただし、この方法のバグは、写真を変換することのPOI効果があまり良くないということです。
インポートされたパッケージは次のとおりです。ITEXTPDF-5.1.3.JAR、POI-3.8-20120326.JAR、POI-SCRATCHPAD-3.8-20120326.jar。
その後、コードが投稿されました。
コードはパラメーター統合を実行せず、2つの方法を書きます。
パッケージ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をインポートします。 Import org.apache.poi.hslf.model.textrun; org.apache.poi.hslf.record.slideをインポートします。 org.apache.poi.hslf.usermodel.richtextrunをインポートします。 import org.apache.poi.hslf.usermodel.slideshow; public class ppttoimage {public static void main(string [] args){// ppt file file = new file( "d:/book jvm summary 7-9.ppt"); doppttoimage(file); } public static boolean doppttoimage(file file){boolean isppt = checkfile(file); if(!isppt){system.out.println( "指定したファイルはPPTドキュメントではありません!"); falseを返します。 } try {fileInputStream is = new FileInputStream(file);スライドショーppt = new Slideshow(is); is.close(); dimension pgsize = ppt.getPagesize(); org.apache.poi.hslf.model.slide [] slide = ppt.getslides(); for(int i = 0; i <slide.length; i ++){system.out.print( "th" + i + "page。"); if(slide [i] .getnotessheet()!= null && slide [i] .getnotessheet()。getTextruns() } textrun [] truns = slide [i] .getTextruns(); for(int k = 0; k <truns.length; k ++){richtextrun [] rtruns = truns [k] .getrichtextruns(); for(int l = 0; l <rtruns.length; l ++){rtruns [l] .setfontindex(1); rtruns [l] .setfontname( "安安"); //テキストリストsystem.out.println(rtruns [l] .getText())を取得します。 }} bufferedimage img = new bufferedimage(pgsize.width、pgsize.height、bufferedimage.type_int_rgb); Graphics2d Graphics = img.creategraphics(); Graphics.setPaint(color.white); Graphics.fill(new Rectangle2d.float(0、0、pgsize.width、pgsize.height));スライド[i] .draw(グラフィックス); //画像のストレージパスと画像の形式(jpeg、png、bmpなど)を設定し、生成されたファイルパスfileoutputStream out = new fileoutputStream( "d:/testimage/pict_" +(i + 1) + ".jpeg"); javax.imageio.imageio.write(img、 "jpeg"、out); out.close(); } system.out.println( "ok"); trueを返します。 } catch(filenotfoundexception e){system.out.println(e); } catch(ioexception e){e.printstacktrace(); } falseを返します。 } //ファイルがpptであるかどうかを確認しますpublic static boolean checkfile(file file){boolean isppt = false;文字列filename = file.getName();文字列suffixname = null; if(filename!= null && filename.indexof( "。")!= -1){suffixname = filename.substring(filename.indexof( "。")); if(suffixname.equals( "。ppt")){isppt = true; } ISPPTを返します。 } else {return isppt; }}}2番目のコード:
パッケージ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をインポートします。 public class imageTopdf {public static void main(string [] args){system.out.println( "第6章例3:HTMLの相対パスの使用"); //ステップ1:document-object document document = new Document()の作成; try {//ステップ2://ドキュメントに耳を傾けるライターを作成し、pdf-streamをファイルpdfwriter.getInstance(document、new fileoutputStream( "d:/test picture.pdf"))に指示するライターを作成します。 // htmlwriter writer = htmlwriter.getInstance(document、new fileoutputStream( "chap0603.html")); // writer.setimagePath( "../// images/kerstmis/"); //ステップ3:document document.open()を開きます。 for(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をもっとサポートすることを願っています。