羊蹓狼 发表于 2025-3-30 23:14:03

word,ppt,pdf 转图片

@Override
//word
        public Result<List<String>> call(MultipartFile file, String fileName,String bizPath) {
                                InputStream inputStream=null;
                       List<String> imgList= new ArrayList<>();
                try {
                       inputStream= file.getInputStream();
                         Document doc= new Document(inputStream);
                      for (int i = 0; i < doc.getPageCount(); i++) {
                                     Document page = doc.extractPages(i, 1);
                  ByteArrayOutputStream dstStream = new ByteArrayOutputStream();
                                     page.save(dstStream, SaveFormat.PNG);
                                  ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(dstStream.toByteArray());
                                  BufferedImage img = ImageIO.read(byteArrayInputStream);
                                  MultipartFile files = ImageUtil.multipartFile(img, System.currentTimeMillis()+"", "png");
                  //上传minio
                  Result<?> upload = uploadUtil.upload(files, bizPath, false);
                  dstStream.flush();
                  dstStream.close();
                  imgList.add(upload.getMessage());
            }
                } catch (Exception e) {
                    e.printStackTrace();
                }finally {
                        if(inputStream!=null) {
                                  try {
                                                inputStream.close();
                                        } catch (IOException e) {
                                                e.printStackTrace();
                                        }
                        }
                        }
                return Result.OK(imgList);
        }

        @Override
        public Result<List<String>> callPpt(MultipartFile file, String fileName, String bizPath) {
                InputStream        inputStream= null;
                List<String> imgList= new ArrayList<>();
                try {
                        inputStream= file.getInputStream();
                        HSLFSlideShow ppt = new HSLFSlideShow(inputStream);
                        Dimension pgsize = ppt.getPageSize();
                        for (int idx = 0; idx < ppt.getSlides().size(); idx++) {
                                HSLFSlide slide=ppt.getSlides().get(idx);
                                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));
                                slide.draw(graphics);
                                ByteArrayOutputStream dstStream = new ByteArrayOutputStream();
                                boolean png = ImageIO.write(img, "png", dstStream);
                                if(png){
                                        MultipartFile files = ImageUtil.multipartFile(img, System.currentTimeMillis()+"", "png");
                                        Result<?> upload = uploadUtil.upload(files, bizPath, false);
                                        dstStream.flush();
                                        dstStream.close();
                                        imgList.add(upload.getMessage());
                                }
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }finally {
                        if(inputStream!=null) {
                                try {
                                        inputStream.close();
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }
                return Result.OK(imgList);
        }

        @Override
        public Result<List<String>> callPptx(MultipartFile file, String fileName, String bizPath) {
                InputStream        inputStream= null;
                List<String> imgList= new ArrayList<>();
                try {
                        inputStream= file.getInputStream();
                        XMLSlideShow ppt = new XMLSlideShow(inputStream);
                        Dimension pgsize = ppt.getPageSize();
                        for (int idx = 0; idx < ppt.getSlides().size(); idx++) {
                                XSLFSlide slide=ppt.getSlides().get(idx);
                                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));
                                slide.draw(graphics);
                                ByteArrayOutputStream dstStream = new ByteArrayOutputStream();
                                boolean png = ImageIO.write(img, "png", dstStream);
                                if(png){
                                        MultipartFile files = ImageUtil.multipartFile(img, System.currentTimeMillis()+"", "png");
                                        Result<?> upload = uploadUtil.upload(files, bizPath, false);
                                        dstStream.flush();
                                        dstStream.close();
                                        imgList.add(upload.getMessage());
                                }
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }finally {
                        if(inputStream!=null) {
                                try {
                                        inputStream.close();
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }
                return Result.OK(imgList);
        }


        @Override
        public Result<List<String>> callPdf(MultipartFile file, String fileName, String bizPath) {
                InputStream inputStream=null;
                PDDocument doc = null;
                List<String> imgList= new ArrayList<>();
                try {
                        inputStream = file.getInputStream();
                        doc = PDDocument.load(inputStream);
                        PDFRenderer renderer = new PDFRenderer(doc);
                        for (int i = 0; i <doc.getNumberOfPages(); i++) {
                                BufferedImage img = renderer.renderImageWithDPI(i, 100);
                                PDFTextStripper pdfStripper = new PDFTextStripper();
                                pdfStripper.setStartPage(i);
                                pdfStripper.setEndPage(i);
                                ByteArrayOutputStream dstStream = new ByteArrayOutputStream();
                                boolean png = ImageIO.write(img, "png", dstStream);
                                if(png){
                                        MultipartFile files = ImageUtil.multipartFile(img, System.currentTimeMillis()+"", "png");
                                        Result<?> upload = uploadUtil.upload(files, bizPath, false);
                                        dstStream.flush();
                                        dstStream.close();
                                        imgList.add(upload.getMessage());
                                }
                        }
                }catch (Exception e) {
                        e.printStackTrace();
                }finally {
                        if(doc!=null) {
                                try {
                                        doc.close();
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }

                return Result.OK(imgList);
        } maven
!--word转pdf -->
      <dependency>
                   <groupId>com.aspose</groupId>
                   <artifactId>aspose-words</artifactId>
                   <version>15.12.0</version>
                   <scope>system</scope>
                   <systemPath>${project.basedir}/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar</systemPath>
                </dependency>
      <!--ppt转pdf -->
      <dependency>
                   <groupId>com.aspose</groupId>
                   <artifactId>aspose-slides</artifactId>
                   <version>15.9.0</version>
                   <scope>system</scope>
                   <systemPath>${project.basedir}/src/main/resources/lib/aspose.slides-15.9.0.jar</systemPath>
                </dependency>
                <dependency>
                        <groupId>com.aspose</groupId>
                        <artifactId>aspose-words</artifactId>
                        <version>21.1.0</version>
                </dependency>

                <!-- Apache PDFBox -->
                <dependency>
                        <groupId>org.apache.pdfbox</groupId>
                        <artifactId>pdfbox</artifactId>
                        <version>2.0.27</version> <!-- 确保使用最新版本 -->
                </dependency>

                <!-- 如果需要额外的功能,如字体处理,可以添加以下依赖 -->
                <dependency>
                        <groupId>org.apache.pdfbox</groupId>
                        <artifactId>fontbox</artifactId>
                        <version>2.0.27</version> <!-- 确保版本与pdfbox一致 -->
                </dependency>


      <!--excel转pdf -->
      <dependency>
                   <groupId>com.aspose</groupId>
                   <artifactId>aspose-cells</artifactId>
                   <version>8.5.2</version>
                   <scope>system</scope>
                   <systemPath>${project.basedir}/src/main/resources/lib/aspose-cells-8.5.2.jar</systemPath>
                </dependency>
                <!-- https://mvnrepository.com/artifact/com.lowagie/itext -->
                <dependency>
                        <groupId>com.lowagie</groupId>
                        <artifactId>itext</artifactId>
                        <version>2.1.7</version>
                </dependency>
                <dependency>
                        <groupId>commons-fileupload</groupId>
                        <artifactId>commons-fileupload</artifactId>
                        <version>1.3.3</version>
                </dependency> ImageUtil
public static MultipartFile multipartFile(Image image,String fileName,String suffix){
      //创建一个ByteArrayOutputStream
      ByteArrayOutputStream os = new ByteArrayOutputStream();
      //把BufferedImage写入ByteArrayOutputStream
      ImgUtil.write(image, suffix, os);
      //ByteArrayOutputStream转成InputStream
      InputStream input = new ByteArrayInputStream(os.toByteArray());
      //InputStream转成MultipartFile
      try {
            return new MockMultipartFile(fileName, fileName+"."+suffix, ContentType.contentType(suffix), input);
      } catch (IOException e) {
            e.printStackTrace();
      }
      return null;
    }
工具类和jar包找不到的私信

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: word,ppt,pdf 转图片