zoukankan      html  css  js  c++  java
  • PDF文件的二进制流转图片文件的二进制流

    最近有个客户要求将pdf转成图片保存在桶

    首先我们来实现pdf字节流转成img字节流

    第一步:pom.xml中引入:

    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.20</version>
    </dependency>

    第二步:代码实现:

    package com.ulic.gis.util;
    
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.imageio.ImageIO;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.rendering.PDFRenderer;
    
    public class PdfToImageUtil {
        /**
         * dpi越大转换后越清晰,相对转换速度越慢
         */
        private static final Integer DPI = 100;
    
        /**
         * 转换后的图片类型
         */
        private static final String IMG_TYPE = "jpg";
    
        /**
         * PDF转图片
         *
         * @param fileContent PDF文件的二进制流
         * @return 图片文件的二进制流
         */
        public static List<byte[]> pdfToImage(byte[] fileContent) throws IOException {
            List<byte[]> result = new ArrayList<>();
            try (PDDocument document = PDDocument.load(fileContent)) {
                PDFRenderer renderer = new PDFRenderer(document);
                for (int i = 0; i < document.getNumberOfPages(); ++i) {
                    BufferedImage bufferedImage = renderer.renderImageWithDPI(i, DPI);
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
                    ImageIO.write(bufferedImage, IMG_TYPE, out);
                    result.add(out.toByteArray());
                }
            }
            return result;
        }
        /**
         * PDF转图片
         *
         * @param fileContent PDF文件的二进制流
         * @return 图片文件的二进制流
         */
        public static byte[] pdfToImage2(byte[] fileContent) throws IOException {
            byte[] result = null;
            try (PDDocument document = PDDocument.load(fileContent)) {
                PDFRenderer renderer = new PDFRenderer(document);
                BufferedImage bufferedImage = renderer.renderImageWithDPI(0, DPI);
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                ImageIO.write(bufferedImage, IMG_TYPE, out);
                result = out.toByteArray();
            }
            return result;
        }
    }
  • 相关阅读:
    202103226-1 编程作业
    7 20210516-1 团队作业3—需求分析规格说明书
    原型设计作业
    案例分析作业
    202103226-1 编程作业
    阅读——《构建之法》
    第一周学习任务
    牛客app测评报告
    wordcount编程
    准备工作
  • 原文地址:https://www.cnblogs.com/yinyl/p/14197188.html
Copyright © 2011-2022 走看看