Este artículo comparte principalmente contenido relacionado sobre Apache POI convertir PPT en imágenes. Presenta brevemente Apache POI, y el contenido específico es el siguiente.
1. Introducción a Apache POI
Apache POI es una API Java de Java Crossplatform de código abierto gratuita y de código abierto escrita en Java. Apache POI proporciona la función de los programas Java para leer y escribir Archivos de formato de Microsoft Office.
Puede ver el documento oficial del sitio web oficial del documento POI POI
Hay dos formas de operar documentos PPT con Apache POI:
1. El sufijo de formato de archivo de PowerPoint '97 (-2007) correspondiente a POI-HSLF es .pPT
2. El sufijo de formato de archivo de PowerPoint 2007 OOXML correspondiente a POI-XSLF es .pPTX
2. Paquete de frasco
La operación POI de la oficina requiere un paquete 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étodo Maven introducido:
El método maven solo necesita introducir dos, porque confían en varios otros
<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. Método POI-HSLF
El método POI-HSLF maneja documentos que terminan con el sufijo .ppt de PPT.
/** * El sufijo de conversión del documento ppt2003 es .ppt * @param pptfile ppt file * @param imgfile El directorio al que se guardará la imagen (no un archivo) * @return */public static boolean doppt2003ToiMage (archivo pptfile, archivo imgfile, lista <cadena> lista) {try {intit {fileininputStream is = newputStream es = nuevo hitputStream es = Nuevo. FileInputStream (pptFile); slideshow ppt = new Slideshow (is); // Cerrar la secuencia de entrada en el tiempo IS.Close (); dimension pgSize = ppt.getPageSize (); slide [] slide = ppt.getSlides (); para (int i = 0; i <slide.length; i ++) {log.info ("th" +i +i +ear +i +ear "Page."); Textrun [] truns = slide [i] .gettextruns (); for (int k = 0; k <truns.length; k ++) {richtextrun [] rtruns = truns [k] .getrichtextruns (); para (int l = 0; l <rtruns.length; l ++) {// el índice original y el índice y el índice original y font. rtruns [l] .getFontIndex (); String name = rtruns [l] .getFontname (); log.info ("índice de fuente original y nombre de fuente:"+index+" -"+name); // reiniciar el índice de fuentes y el nombre de la fuente para evitar la imagen generada aturdida rtruns [l] .setFontIndex (1); rtruns [l] .setFontName ("宋体");}} // Genere la imagen de acuerdo con el tamaño de la diapositiva bufferedImage img = new BufferedImage (pgsize.width, pgsize.height, bufferedimage.type_int_int_iN img.createGraphics (); Graphics.setPaint (color.white); gráfico.fill (nuevo rectangle2d.float (0, 0, pgsize.width, pgsize.height)); slide [i] .draw (gráficos); // La imagen está guardada por string absolutepath = imgfile.getabsolutepath () ".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 La ruta de archivo de generación FileOutputStream Out = new FileOutputStream (jpegFile); imageIO.Write (img, "jpeg", out); out.close ();} log.error ("ppt converted a imagen con éxito!"); return true;} Catch (excepción e) {log.error ("Exception cuando se encuentra a Image a Image a Image", E);}4. Método POI-XSLF
El método POI-XSLF maneja documentos que terminan con el sufijo .pptx de archivos PPT.
/** * El sufijo de conversión del documento ppt2007 es .pptx * @param pptfile ppt file * @param imgfile El directorio de ruta al que se guardará la imagen (no un archivo) * @param Lista de lista que almacena la lista de archivos * @return */public static boolean doppt2007toimage (archivo pptfile, archivo iMgfile, list> list> list> {stread> {list> {stiveNin. is = null; try {is = new FileInputStream (pptFile); xmlslideshow xmlslideshow = new XmlSlidesHow (is); is.close (); // Obtener el tamaño dimensiones pgSize = xmlslideshow.getPageSize (); // Obtener el portaobjetos xslfslide [] Slides = xmlslideshow (); = 0; sh.getteTtparabraphs (); for (xslftextparabraph xslftextparagraph: textparabraphs) {list <xslftextrun> textruns = xslftextparagraph.gettextruns (); for (xslftextrun xslftExtrun: textruns) {xslftextrun.setfontfamily ("安");}}}} // Generar imagen de acuerdo con el tamaño de la diapositiva 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)); // Las esclusas de código más básicas [i] .Draw (gráficos); // La ruta a la que la imagen se almacenará en cadena absolutepath = imgfile.getabsolutePath () + "/" + (i + 1) + ".jpeg"; file jpegFile = nuevo archivo (absolutaPath); // La ruta de imagen se almacena en list.add ((i + 1) + ".jpeg"); // si la imagen existe, si (jpegfile.ejists ()) {continúa;} /// (JPEG, PNG, BMP, etc.), preste atención a la ruta del archivo de generación fileOutputPutSt out = new FileOutputStream (JPEGFile); // Escriba a la imagen a ImageIO.Write (img, "jpeg", out); out.close ();} log.error ("PPT Convertido a Image Succesly!"); ocurrió cuando la conversión a la imagen se convirtió a imagen! ", e);} return false;}5. Posibles errores
org.apache.poi.poifs.filesystem.OfficExmlFileException: los datos suministrados parecen estar en la oficina 2007+ XML. Estás llamando a la parte de POI que trata con los documentos de la oficina de Ole2. Debe llamar a una parte diferente de POI para procesar estos datos (por ejemplo, XSSF en lugar de HSSF)
El error anterior ocurre, lo que significa que no se usa en correspondencia, y el segundo método debe usarse para convertir PPT.
A veces se producen problemas cuando las conversiones centrales se cambian fácilmente porque el POI no se hace bien y las imágenes a veces se distorsionan fácilmente.
// Las diapositivas de código más básicas [i] .Draw (gráficos);
Resumir
Lo anterior trata sobre Apache POI convertir PPT en el código de instancia de imagen. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!