Este artigo compartilha principalmente o conteúdo relacionado sobre o Apache Poi convertendo o PPT em imagens. Ele apresenta brevemente o Apache POI e o conteúdo específico é o seguinte.
1. Introdução ao Apache Poi
O Apache POI é uma API Java de plataforma cruzada gratuita e de código aberto escrito em Java. O Apache POI fornece a função dos programas Java para ler e escrever arquivos de formato do Microsoft Office.
Você pode ver o site oficial do documento Apache POI
Existem duas maneiras de operar documentos PPT com Apache POI:
1. O sufixo do formato de arquivo do PowerPoint '97 (-2007) correspondente a POI-HSLF é .ppt
2. O Formato do Arquivo Sufixo do PowerPoint 2007 Ooxml correspondente a Poi-Xslf é .pptx
2. Pacote JAR
Operação POI do escritório requer pacote JAR:
poi-3.12.jar poi-ooxml-3.12.jar poi-ooxml-schema-3.12.jar poi-scratchpad-3.12.jar xmlbeans-2.6.0.jar
Método MAVEN Introduzido:
O método maven precisa apenas apresentar dois, porque eles dependem de vários outros
<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
O método POI-HSLF lida com documentos que terminam com o sufixo .ppt de ppt.
/** * O sufixo de conversão do documento ppt2003 é .ppt * @param pptfile ppt arquivo * @param imgfile O diretório para o qual a imagem será salva (não um arquivo) * @return */public static boolean doppt2003toimage (arquivo Pptfile, arquivo imgfile, lista FileInputStream (pptfile); apresentação de slides ppt = nova apresentação de slides (IS); // Fechar o fluxo de entrada no tempo is.close (); dimension pgsize = ppt.getPagesize (); slide [] slide = ppt.getslides (); para (int i = 0; i <".lmen; truns = slide [i] .getTextrUns (); para (int k = 0; k <truns.length; k ++) {richtextrun [] rtrUns = truns [k] .getrichtextruns (); para (int l = 0; rtrUns [l] .getfontIndex (); string name = rtrUns [l] .getFontName (); log.info ("Índice original da fonte e nome da fonte:"+index+" -"+nome); // redefinir o índice da fonte e o nome da fonte para evitar a imagem gerada. rTrUns [l] .setFontIndex (1); rtrUns [l] .SetFontName ("宋体");}}} // gera a imagem de acordo com o tamanho do slide bufferImage img = new bufferImage (pgsize.width, pgsize.Height, bufferImage.Type_Int. img.creategraphics (); graphics.setpaint (color.white); graphics.fill (new Rectangle2d.float (0, 0, pgsize.width, pgSize.Height)); slide [i] .Draw (Graphics); // A imagem é salva por strings); ".jpeg"; arquivo jpegfile = novo arquivo (absolutepath); // o caminho da imagem é armazenado em list.add ((i + 1) + ".jpeg"); // se a imagem existe, não se for gerado (jpegfile.exists ()) {continua; para o arquivo de geração FileOutputputStream Out = new FileOutputStream (jpegfile); imageio.write (img, "jpeg", out); out.close ();} log.error ("ppt convertido para a imagem com sucesso!");4. Método POI-XSLF
O método POI-XSLF lida com documentos que terminam com o sufixo .pptx de arquivos ppt.
/** * O sufixo de conversão do documento PPT2007 é .pptx * @param pptfile ppt arquivo * @param imgfile O diretório de caminho para o qual a imagem será salva (não um arquivo) * @param lista a lista que armazena o nome do arquivo * @return */public static boolean boolean, é = null; try {is = new FileInputStream (pptfile); xmlslideshow xmlslidesHow = new XmlslidesHow (is); is.close (); // obtenha o tamanho da dimensão pgsize = xmlslidesHow.getPagesize (); 0; sh.getTextParagraphs (); para (xslfTextParagraph XslfTextParagraph: textParagraphs) {list <xslftextrun> textrUns = xslfTextParagraph.getTexTrunS (); para (xslftextrun xslftextrun: textruns) {xslftextrun.setfontfamily ("安");}}}} // gerar imagem de acordo com o tamanho do slide bufferedimage img = new bufferiMage (pgsize.width, pgsize.Height, bufferImage.type_int_rgb); img.creategraphics (); graphics.setpaint (color.white); graphics.fill (new Rectangle2d.float (0, 0, pgsize.width, pgsize.Height)); // Os slides de código principal [i] .DRAW (gráficos); o caminho para o qual a imagem será Storel imgfile.getabsolutepath () + "/" + (i + 1) + ".jpeg"; arquivo jpegfile = novo arquivo (absolutepath); // o caminho da imagem é armazenado em list.add (iS sometfile.exists + ".jPeg"); // se a imagem existe, se (jpegfile.exists () (iSt); (JPEG, PNG, BMP, etc.), preste atenção ao caminho do arquivo de geração FileOutputStream Out = new FileOutputStream (jpegfile); // grava na imagem em imageio.write (img, "jpeg", out); out.close ();} log.error ("pttted para conversação bem -sucedida!"); ocorreu quando a conversão em imagem foi convertida em imagem! ", e);} retornar false;}5. Possíveis erros
org.apache.poi.poifs.filesystem.officexmlfileException: Os dados fornecidos parecem estar no Office 2007+ XML. Você está fazendo a parte do POI que lida com documentos do Ole2 Office. Você precisa chamar uma parte diferente do POI para processar esses dados (por exemplo, XSSF em vez de HSSF)
O erro acima ocorre, o que significa que ele não é usado na correspondência e o segundo método deve ser usado para converter o PPT.
Às vezes, os problemas ocorrem quando as conversões principais são facilmente alteradas porque o POI não é bem feito e as imagens às vezes são facilmente distorcidas.
// os slides de código mais centrais [i] .Draw (gráficos);
Resumir
O exposto acima é sobre o Apache Poi convertendo o PPT em código da instância da imagem. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!