Cet article partage principalement du contenu connexe sur Apache POI convertissant PPT en images. Il introduit brièvement Apache POI, et le contenu spécifique est le suivant.
1. Introduction à Apache POI
Apache POI est une API Java multiplateforme gratuite et open source écrite en Java. Apache POI offre la fonction des programmes Java pour lire et écrire des archives de format Microsoft Office.
Vous pouvez consulter le site officiel du document APACHE POI OFFICIEL
Il existe deux façons de faire fonctionner des documents PPT avec Apache POI:
1. Le suffixe de format de fichier de PowerPoint '97 (-2007) correspondant à POI-HSLF est .ppt
2. Le suffixe de format de fichier de PowerPoint 2007 OOXML correspondant à POI-XSLF est .pptx
2. Package JAR
L'opération de bureau du POI nécessite un package 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
Méthode Maven introduite:
La méthode Maven n'a qu'à en introduire deux, car ils comptent sur plusieurs autres
<dependency> <proupId> org.apache.poi </proupId> <Artifactid> poi-oooxml </ artifactid> <version> 3.12 </ version> </Dependency> <Dependency> <ProupId> org.apache.poi </proupId> <ArtifActid> Poi-scratchpad </ artifactid> <version> 3.12 <version>
3. Méthode POI-HSLF
La méthode POI-HSLF gère les documents se terminant par le suffixe .ppt de ppt.
/ ** * Le suffixe de conversion du document PPT2003 est .ppt * @param pptfile ppt fichier * @param imgfile le répertoire auquel l'image sera enregistrée (pas un fichier) * @return * / public static boolean doppt2003toimage (fichier pptFile, nouveau file FileInputStream (pptFile); diaporama ppt = nouveau diaporama (IS); // fermer le flux d'entrée dans le temps est.close (); dimension pgsize = ppt.getPageSize (); 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 ++) {// l'indice de police d'origine et le nom de police index int rTruns [l] .getFontIndex (); String name = rtruns [l] .getFontName (); log.info ("INDEX FONT et nom de police d'origine:" + index + "-" + name); // réinitialiser l'index de police et le nom de police pour empêcher l'image générée brouillé brouillé rtruns [l] .setfontIndex (1); rtruns [l] .setFontName ("宋体");}} // générer l'image en fonction de la taille de la diapositive bufferedImage img = new butteredImage (pgsize.width, pgsize.height, buffredimage.type_int_rgb); graphics2d graphics = img.creategraphics (); graphics.setpaint (colore.white); graphics.fill (new rectangle2d.float (0, 0, pgsize.width, pgsize.height)); diaporama [i] .Draw (graphics); // l'image est enregistrée par String AbsUtepath = iMgfile.getabsoLepath () + "+ 1) + 1) ".jpeg"; fichier jpegfile = nouveau fichier (Absolutepath); // le chemin d'image est stocké dans list.add ((i + 1) + ".jpeg"); // si l'image existe, non si c'est généré (jpegfile.exists ()) {continuer; au Path de génération File FileOutputStream out = new FileOutputStream (jpegfile); imageo.write (img, "jpeg", out); out.close ();} log.Error ("ppt converti en image avec succès!");4. Méthode POI-XSLF
La méthode POI-XSLF gère les documents se terminant par le suffixe .pptx de fichiers ppt.
/ ** * Le suffixe de conversion du document PPT2007 est .pptx * @param pptfile ppt fichier * @param imgfile le répertoire path auquel l'image sera enregistrée (pas un fichier) * @param liste la liste qui stocke le nom de fichier * @return * / public static boolean dipppt2007toimage (fichier pptfile, fichier imgfile, listing <list) {fileplum (fichier ppptfile, fichier imgfile, lisk> lisk) {lileinputs is = null; try {is = new FileInputStream (pptFile); xmlslideshow xmlslideshow = new xmlslideshow (is); is.close (); // obtenir la dimension de taille pgsize = xmlslideshow.getPageSize (); xmlslideshow.getsLides (); for (int i = 0; i <Slides.length; i ++) {// résoudre le problème brouillé xslfshape [] shapes = Slides [i] .getShapes (); pour (xslfshape forme: Shapes) {if (forme d'instruction xslftexhape) {xslftex forme; list <xslftextParagraph> textParagraphs = sh.getTextParagraphs (); for (xslftextParagraph xslftextParagraph: textParagraphs) {list <xslftextrun> textruns = xslftextparagraph.getTextruns (); for (xslftextrun xslftexTruns: tex {xslftextrun.setfontfamily ("安");}}}} // générer de l'image en fonction de la taille de la diapositive BufferedImage IMG = new BufferedImage (pgsize.width, pgsize.height = img.creategraphics (); graphics.setpaint (colore.white); graphics.fill (new rectangle2d.float (0, 0, pgsize.width, pgsize.height)); // les glissades de code les plus principales [i] .Draw (graphics); // le chemin sur lequel l'image sera stockée de la chaîne absolue absolue =. imgfile.getabsolutepath () + "/" + (i + 1) + ".jpeg"; fichier jpegfile = nouveau fichier (absoluepath); // le chemin d'image est stocké dans list.add ((i + 1) + ".jpeg"); // si l'image existe, if (jpegfile.exists ()) {continuer; (JPEG, PNG, BMP, etc.), faites attention au chemin de génération FileOutputStream Out = new FileOutputStream (jPegfile); // Écrivez à l'image sur imageo.write (img, "jpeg", out); out.close ();} log.Error ("PPT converti à l'image avec succès!"); s'est produit lorsque la conversion en image a été convertie en image! ", e);} return false;}5. Erreurs possibles
org.apache.poi.poifs.filesystem.officexmlfileException: les données fournies semblent être dans l'Office 2007+ xml. Vous appelez la partie de POI qui traite des documents de bureau OLE2. Vous devez appeler une partie différente de POI pour traiter ces données (par exemple XSSF au lieu de HSSF)
L'erreur ci-dessus se produit, ce qui signifie qu'elle n'est pas utilisée dans la correspondance, et la deuxième méthode doit être utilisée pour convertir PPT.
Parfois, les problèmes se produisent lorsque les conversions de base sont facilement modifiées car le POI n'est pas bien fait et que les images sont parfois facilement déformées.
// les diapositives de code les plus principales [i] .Draw (graphiques);
Résumer
Ce qui précède est tout au sujet de la convertissage d'Apache POI en code d'instance d'image. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!