Dieser Artikel teilt hauptsächlich verwandte Inhalte über Apache POI, das PPT in Bilder konvertieren. Es führt kurz Apache POI ein und der spezifische Inhalt ist wie folgt.
1. Einführung in Apache POI
Apache POI ist eine kostenlose und open-Source-plattformübergreifende Java-API, die in Java geschrieben wurde. Apache POI bietet die Funktion von Java -Programmen zum Lesen und Schreiben von Microsoft Office -Formatarchiven.
Sie können die offizielle offizielle offizielle Website des Dokuments Apache POI anzeigen
Es gibt zwei Möglichkeiten, PPT -Dokumente mit Apache POI zu betreiben:
1. Das Dateiformat-Suffix von PowerPoint '97 (-2007), der POI-HSLF entspricht, ist .ppt .ppt
2. Das Dateiformat-Suffix von PowerPoint 2007 OOXML, der POI-XSLF entspricht
2. JAR -Paket
POI -Betrieb des Büros erfordert ein JAR -Paket:
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
MAVEN -Methode eingeführt:
Die Maven -Methode muss nur zwei einführen, weil sie sich auf mehrere andere verlassen
<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> <version>3.12</version> </dependency>
3. POI-HSLF-Methode
Die POI-HSLF-Methode behandelt Dokumente, die mit dem .PPT-Suffix von PPT enden.
/** * 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 = new Diashow (IS); // den Eingangsstrom in der Zeit schließen is.CLOSE (); Dimension pgSize = ppt.getPageSize (); Slide [] Slide = ppt.getSlides (); für (int i = 0; i <i <). Truns = Slide [i] .Getextruns (); für (int k = 0; k <trunsgth; k ++) {Richtextrun [] rtruns = truns [k] .getrittextruns (); für (int l = 0; rtruns [l] .GetFontIndex (); String name = rtruns [l] .getfontname (); log.info ("Original -Schriftindex- und Schriftart Name:"+index+" -"+name); // den Schriftindex und den Schriftname zurücksetzen, um das generierte Bild zu verhindern rtruns [l] .setFontIndex (1); Img.CreateGraphics (); Graphics.SetPaint (color.white); Graphics.Fill (neu rechteckig 2d.float (0, 0, pgSize.width, pgSize.Height); Folie [i] .Draw (Graphics); // Das Bild wird durch Sting -Absolutepath = imgfile.getabe.getab.Getabse gespeichert. ".jpeg";File jpegFile = new File(absolutePath);// The image path is stored in list.add((i + 1) + ".jpeg");// If the image exists, no if is generated (jpegFile.exists()) {continue;}// Here is the storage path of the image and the format of the image (jpeg, png, bmp, etc.), pay attention to Die Erzeugungsdatei -Path -DateiOutputStream out = new FileOutputStream (jpegFile); ImageIo.Write (IMG, "JPEG", OUT); OUT.CLOSE ();} Log.Error ("PPT konvertiert zum Bild erfolgreich, um zu Bild zurückzutreten;4. POI-XSLF-Methode
Die POI-XSLF-Methode übernimmt Dokumente, die mit dem .PPTX-Suffix von PPT-Dateien enden.
/** * Das Conversion -Suffix des PPT2007 -Dokuments lautet .pptx * @param pptFile ppt Datei * @param imgFile Das Pfadverzeichnis, in dem das Bild gespeichert wird (keine Datei) * @param list die Liste, die den Dateinamen * @return */öffentlich statische Boolean Doppt2007ToMage speichert, Datei -Datei -Datei -Datei -Datei -Listen -Listen -Listen -Listen -Listen -Listen -Listen -Datei (Datei -Datei), listlist 2007ToMage) {Datei -Datei, Datei -Datei, Datei -Datei, Datei -Datei, Listung) {Datei -lilt) {Datei -List. is = null ;try {is = new FileInputStream(pptFile);XMLSlideShow xmlSlideShow = new XMLSlideShow(is);is.close();// Get the size Dimension pgsize = xmlSlideShow.getPageSize();// Get the slide XSLFSlide[] slides = xmlSlideShow.getSlides();for (int i = 0 ; i < slides.length ; i++) {// Solve the garbled problem XSLFShape[] shapes = slides[i].getShapes();for (XSLFShape shape : shapes) {if (shape instanceof XSLFTextShape) {XSLFTextShape sh = (XslfTextSthape) Form; Liste <xslftextParagraph> textParagraphs = sh.getTextParagraphs (); für (xslftextParagrAphs xslfTextParArGraph: textParagraphs) {list <xslftextruns (xslftexagraphs); xslftextrun: textruns) {xslftextrun.setfontfamily ("安");}}}} // Bild erzeugen nach der Größe der Folie bufferedimage img = new bufferedimage (pgSize.width, pgSize.heights, bufferedIms. Img.CreateGraphics (); Graphics.SetPaint (color.white); Graphics.Fill (neuer Rechteck 2D.Float (0, 0, pgSize.width, pgSize.Height); // Die Kerncode -Folien [i] .Draw (Grafiken); // Das Bild, an dem das Bild das Bild absolutiert ist, wird das Bild auf den Punkt versehen. imgFile.getabsolutepath () + "/" + (i + 1) + ".jpeg"; Datei jpegFile = Neue Datei (Absolutepath); // Der Bildpfad wird in list.add ((i + 1) + ".jpeg") gespeichert, wenn das Bild existiert (JPEGFILE. (JPEG, PNG, BMP usw.), achten Sie auf die Erzeugungsdatei -Datei -DateiOutputStream out = new FileOutputStream (jpegFile); // Schreiben Sie in das Bild auf Imageio.write (IMG, "JPEG", OUT OUT OUT.CLOSE ();} log.ERROR. Die Konvertierung zum Bild wurde in das Bild konvertiert! ", E);} Return Falsch;}5. Mögliche Fehler
org.apache.poi.poifs.Filesystem.officexmlFileException: Die gelieferten Daten scheinen im Büro 2007+ XML zu sein. Sie nennen den Teil des POI, der sich mit Ole2 -Office -Dokumenten befasst. Sie müssen einen anderen Teil von POI aufrufen, um diese Daten zu verarbeiten (z. B. XSSF anstelle von HSSF).
Der obige Fehler tritt auf, was bedeutet, dass er nicht in der Korrespondenz verwendet wird, und die zweite Methode sollte verwendet werden, um PPT zu konvertieren.
Manchmal treten Probleme auf, wenn Kernkonvertierungen leicht geändert werden können, da der POI nicht gut gemacht wird und die Bilder manchmal leicht verzerrt sind.
// die kernkernigen Code -Folien [i] .Draw (Grafik);
Zusammenfassen
Bei dem obigen dreht sich alles um Apache Poi, das PPT in den Bildinstanzcode konvertiert. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!