La méthode de Jacob peut résoudre ce problème, mais comme j'ai déjà fait des rapports, je veux essayer différentes méthodes.
Jacob est un pont reliant Java et Microsoft, et toutes les résolutions sont analysées par Microsoft. POI n'est pas aussi authentique que Microsoft analysé, donc si les exigences sont élevées, utilisez Jacob.
L'idée générale est très simple. Convertissez d'abord PPT en une image, puis écrivez l'image en PDF. Convertissez des images à l'aide de POI et utilisez ITEX pour faire fonctionner PDF. Cependant, le bug de cette méthode est que l'effet POI de la conversion d'images n'est pas très bon.
Les packages importés sont: itextpdf-5.1.3.jar, poi-3.8-20120326.jar, poi-scratchpad-3.8-20120326.jar.
Ensuite, le code a été publié:
Le code n'effectue pas l'unification des paramètres, écrivez deux méthodes:
package com.zzk.cn; import java.awt.dimension; Importer java.io.file; import java.io.fileInputStream; import java.io.filenotfoundException; Importer java.io.fileOutputStream; Importer java.io.ioException; import java.awt.color; import java.awt.dimension; import java.awt.graphics2d; import java.awt.geom.rectangle2d; Importer java.awt.image.bufferedImage; import org.apache.poi.hslf.model.textrun; import org.apache.poi.hslf.record.slide; import org.apache.poi.hslf.usermodel.richtextrun; import org.apache.poi.hslf.usermodel.slideshow; classe publique ppttoimage {public static void main (String [] args) {// lire dans le fichier de fichier ppt Fichier = nouveau fichier ("d: / book jvm résumé 7-9.ppt"); doppttoimage (fichier); } public static boolean doppttoimage (fichier de fichier) {boolean isppt = checkFile (fichier); if (! ISPPT) {System.out.println ("Le fichier que vous avez spécifié n'est pas un document PPT!"); retourne false; } try {fileInputStream est = new FileInputStream (fichier); Diaporama ppt = nouveau diaporama (IS); is.close (); Dimension pgsize = ppt.getPageSize (); org.apache.poi.hslf.model.slide [] Slide = ppt.getsLides (); pour (int i = 0; i <slide.length; i ++) {System.out.print ("th" + i + "page."); if (Slide [i] .getNoSSHeet ()! = null && Slide [i] .getNoSTESSHeet (). getTexTruns ()! = null) {// Obtenez le premier note System.out.println ("notes:" + Slide [i] .getNoSSHETHEet (). GetTexTruns () [0] .GetText ()); } Textrun [] Truns = Slide [i] .getTexTruns (); for (int k = 0; k <truns.length; k ++) {richTextrun [] rtruns = truns [k] .getRichTexTruns (); pour (int l = 0; l <rtruns.length; l ++) {rtruns [l] .setfontIndex (1); rtruns [l] .setfontname ("安安"); // Obtenez la liste de texte 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)); Slide [i] .Draw (graphiques); // Définissez le chemin de stockage de l'image et le format de l'image (JPEG, PNG, BMP, etc.), faites attention au chemin de fichier généré FileOutputStream Out = new FileOutputStream ("d: / Tesimage / PICT_" + (i + 1) + ".jpeg"); javax.imageio.imageio.write (img, "jpeg", out); out.close (); } System.out.println ("OK"); Retour Vrai; } catch (filenotfoundException e) {System.out.println (e); } catch (ioException e) {e.printStackTrace (); } return false; } // Fonction Vérifiez si le fichier est ppt public static boolean checkFile (fichier de fichier) {boolean isppt = false; String filename = file.getName (); String suffixName = null; if (filename! = null && filename.indexof (".")! = -1) {suffixName = filename.substring (filename.indexof (".")); if (suffixName.equals (". ppt")) {isppt = true; } return iSPPT; } else {return iSppt; }}}Deuxième code:
package com.zzk.cn; Importer java.io.fileOutputStream; Importer java.io.ioException; import com.ithtpdf.text.Document; import com.ithtpdf.text.DocumentException; import com.ithtpdf.text.image; import com.ithtpdf.text.pdf.pdfwriter; classe publique ImagetOPDF {public static void main (String [] args) {System.out.println ("Chapitre 6 Exemple 3: Utilisation d'un chemin relatif pour HTML"); // Étape 1: Création d'un document de document document = nouveau document (); essayez {// étape 2: // nous créons un écrivain qui écoute le document // et dirige un pdf-stream vers un fichier pdfwriter.getInstance (document, nouveau fileoutputStream ("d: / test picture.pdf")); // htmlwriter writer = htmlwriter.getInstance (document, new FileOutputStream ("chap0603.html")); // writer.setImagePath ("../../ images / kerstmis /"); // Étape 3: Nous ouvrons le document document.open (); pour (int i = 1; i <= 7; i ++) {// étape 4: nous ajoutons du contenu Image jpg = image.getInstance ("d: / testimage / picment _" + i + ". jpeg"); jpg.scalepercent (50); Document.Add (JPG); }} catch (documentException de) {System.err.println (de.getMessage ()); } catch (ioException ioe) {System.err.println (ioe.getMessage ()); } // Étape 5: Nous fermons le document document.close (); }} Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.