O método de Jacob pode resolver esse problema, mas como já fiz relatórios antes, quero experimentar métodos diferentes.
Jacob é uma ponte que conecta Java e Microsoft, e todas as resoluções são analisadas pela Microsoft. O POI não é tão autêntico quanto o Microsoft analisado; portanto, se os requisitos forem altos, use o Jacob.
A ideia geral é muito simples. Primeiro converta o PPT em uma imagem e depois escreva a imagem para PDF. Converta imagens usando POI e use o ITEX para operar PDF. No entanto, o bug desse método é que o efeito POI da conversão de imagens não é muito bom.
Os pacotes importados são: ITEXTPDF-5.1.3.JAR, POI-3.8-20120326.JAR, POI-SCRATCHPAD-3.8-20120326.JAR.
Então o código foi publicado:
O código não executa a unificação de parâmetros, escreva dois métodos:
pacote com.zzk.cn; importar java.awt.dimension; importar java.io.file; importar java.io.fileInputStream; importar java.io.filenotfoundException; importar java.io.fileOutputStream; importar java.io.ioException; importar java.awt.color; importar java.awt.dimension; importar java.awt.graphics2d; importar java.awt.geom.rectangle2d; importar java.awt.image.bufferiMage; 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; classe pública ppttoimage {public static void main (string [] args) {// leia no arquivo de arquivo ppt file = new arquivo ("d:/book jvm resumo 7-9.ppt"); doppttoimage (arquivo); } public static boolean doppttoImage (arquivo de arquivo) {boolean isppt = checkFile (arquivo); if (! isppt) {System.out.println ("O arquivo que você especificou não é um documento ppt!"); retornar falso; } tente {fileInputStream is = new FileInputStream (FILE); Apresentação de slides ppt = nova apresentação de slides (IS); is.close (); Dimension 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] .getNoTheet ()! = null && slide [i] .getNoTheet (). getTextrUns ()! = null) {// obtenha a primeira nota System.out.println ("Notas:" + slide [i] .getNoTHeet (). } 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 ("安安"); // obtenha o sistema de lista de texto System.out.println (rtrUns [l] .getText ()); }} BufferImage img = new bufferImage (pgsize.width, pgsize.Height, bufferImage.type_int_rgb); Graphics2D Graphics = img.creategraphics (); Graphics.setPaint (color.white); Graphics.fill (novo Rectangle2d.float (0, 0, pgsize.width, pgsize.Height)); slide [i] .draw (gráficos); // Defina o caminho de armazenamento da imagem e o formato da imagem (JPEG, PNG, BMP, etc.), preste atenção ao caminho do arquivo gerado FileOutputStream Out = new FileOutputStream ("d:/testimage/pict_" + (i + 1) + ".jpeg"); javax.imageio.imageio.write (img, "jpeg", out); out.Close (); } System.out.println ("ok"); retornar true; } catch (filenotfoundException e) {System.out.println (e); } catch (ioexception e) {e.printStackTrace (); } retornar false; } // Função Verifique se o arquivo é ppt String filename = file.getName (); String sufixName = null; if (nome do arquivo! = null && filename.indexof (".")! = -1) {sufixName = filename.substring (filename.indexOf (".")); if (suffixName.equals (". ppt")) {isppt = true; } retornar ISPPT; } else {return isppt; }}}Segundo código:
pacote com.zzk.cn; importar java.io.fileOutputStream; importar java.io.ioException; importação com.ithtpdf.text.document; import com.ithtpdf.text.documentException; importação com.ithtpdf.text.image; import com.ithtpdf.text.pdf.pdfwriter; public class ImageTeTOPDF {public static void main (String [] args) {System.out.println ("Capítulo 6 Exemplo 3: Usando um caminho relativo para html"); // Etapa 1: Criação de um documento de documento-objeto = new Document (); tente {// Etapa 2: // Criamos um escritor que ouve o documento // e direciona um pdf-stream para um arquivo pdfwriter.getInstance (document, new FileOutputStream ("d:/test picture.pdf"); // htmlwriter writer = htmlwriter.getInstance (documento, new FileOutputStream ("CHAP0603.html")); // writer.setImagePath ("../../ imagens/kerstmis/"); // Etapa 3: abrimos o documento document.open (); para (int i = 1; i <= 7; i ++) {// Etapa 4: adicionamos imagem de conteúdo jpg = image.getInstance ("d:/testimage/pict _"+i+". jpeg"); jpg.scaleprent (50); document.add (jpg); }} catch (documentException de) {System.err.println (de.getMessage ()); } catch (ioexception ioe) {System.err.println (ioe.getMessage ()); } // Etapa 5: Fechamos o documento Document.Close (); }} O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.