El método de Jacob puede resolver este problema, pero como he hecho informes antes, quiero probar diferentes métodos.
Jacob es un puente que conecta Java y Microsoft, y Microsoft analiza todas las resoluciones. POI no es tan auténtico como Microsoft analizado, por lo que si los requisitos son altos, use Jacob.
La idea general es muy simple. Primero convierta PPT en una imagen y luego escriba la imagen en PDF. Convierta imágenes con POI y use ITEX para operar PDF. Sin embargo, el error de este método es que el efecto POI de convertir imágenes no es muy bueno.
Los paquetes importados son: ITEXTPDF-5.1.3.JAR, POI-3.8-20120326.JAR, POI-SCRATCHPAD-3.8-20120326.JAR.
Entonces el código fue publicado:
El código no realiza la unificación de parámetros, escribe dos métodos:
paquete com.zzk.cn; import java.awt.dimension; import java.io.file; import java.io.fileInputStream; import java.io.filenotfoundException; import java.io.fileOutputStream; import java.io.ioException; import java.awt.color; import java.awt.dimension; import java.awt.graphics2d; import java.awt.geom.rectangle2d; import java.awt.image.bufferedImage; importar org.apache.poi.hslf.model.textrun; importar org.apache.poi.hslf.record.slide; importar org.apache.poi.hslf.usermodel.richtextrun; importar org.apache.poi.hslf.usermodel.slideshow; public class pptToImage {public static void main (string [] args) {// lee en el archivo de archivo ppt file = nuevo archivo ("d:/book jvm resumen 7-9.ppt"); dopptToImage (archivo); } public static static boolean dopptToiMage (archivo de archivo) {boolean isPPT = checkFile (archivo); if (! isPpt) {System.out.println ("¡El archivo que especificó no es un documento PPT!"); devolver falso; } try {fileInputStream is = new FileInputStream (archivo); Plaza de diapositivas ppt = nueva presentación de diapositivas (is); is.close (); Dimensión 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 + "página"); if (slide [i] .getNotesSheet ()! = null && slide [i] .getNotesSheet (). getTexTruns ()! = null) {// Obtener la primera nota System.out.println ("notas:" + Slide [i] .getNotesSheet (). GetTextruns () [0] .gettext ()); } 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 ("安安"); // Obtenga la lista de texto 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 (nuevo rectangle2d.float (0, 0, pgsize.width, pgsize.height)); diapositiva [i] .draw (gráficos); // Establezca la ruta de almacenamiento de la imagen y el formato de la imagen (jpeg, png, bmp, etc.), preste atención a la ruta de archivo generada fileOutputStream out = new FileOutputStream ("d:/testimage/pict_" + (i + 1) + ".jpeg"); javax.imageio.imageio.write (img, "jpeg", out); out.close (); } System.out.println ("ok"); devolver verdadero; } catch (FileNotFoundException e) {System.out.println (e); } catch (ioException e) {E.PrintStackTrace (); } return false; } // Función Compruebe si el archivo es PPT Public Static Boolean CheckFile (archivo de archivo) {boolean isPPT = false; Cadena filename = file.getName (); String sufixname = null; if (filename! = null && filename.indexof (".")! = -1) {sufreMName = filename.substring (filename.indexof (".")); if (suffixname.equals (". ppt")) {isPpt = true; } return isPPT; } else {return isPPT; }}}Segundo código:
paquete com.zzk.cn; import java.io.fileOutputStream; import java.io.ioException; import com.ithtpdf.text.document; import com.ithtpdf.text.documentException; import com.ithtpdf.text.image; import com.ithtpdf.text.pdf.pdfwriter; public class imageTopdf {public static void main (string [] args) {system.out.println ("Capítulo 6 Ejemplo 3: Uso de una ruta relativa para html"); // Paso 1: Creación de un documento de documento de documento de documento = nuevo documento (); Pruebe {// paso 2: // Creamos un escritor que escuche al documento // y dirige un PDF-stream a un archivo pdfwriter.getInstance (documento, nuevo fileOutputStream ("d:/test pica.pdf")); // htmlwriter escritor = htmlwriter.getInstance (documento, nuevo FileOutputStream ("Chap0603.html")); // escritor.setImagePath ("../../ images/kerstmis/"); // Paso 3: Abrimos el documento Document.open (); for (int i = 1; i <= 7; i ++) {// Paso 4: Agregamos la imagen de contenido 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 ()); } // Paso 5: Cerramos el documento documento.close (); }} Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.