学习记录:PDF转图片

学习记录:PDF转图片

怕忘记,所以记录一下


第一步:添加依赖
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.8</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox -->
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>fontbox</artifactId>
    <version>2.0.8</version>
</dependency>
第二步:代码开始
private final String UPLOAD_FILE = "uploadFile/file/";

/**
* 根据页码生成图片
*startPage:起始页
*endPage:结束页
*/
@RequestMapping("pdf2Img")
public String pdf2Img(MultipartFile file, Integer startPage, Integer endPage) {
    if (!file.isEmpty()) {
        String saveFileName = file.getOriginalFilename();
        //getAbsolutePath() = session.getServletContext().getRealPath("");
        String newFileName = getAbsolutePath() + File.separator + UPLOAD_FILE + saveFileName;

        File newFile = new File(newFileName);
        if (!newFile.exists()) {
            newFile.mkdirs();
        }
        PDDocument pdDocument;
        // OutputStream outputStream = null;
        try {
            String rootPath = newFile.getParent();
            int dot = newFile.getName().lastIndexOf(".");
            // 获取图片文件名
            String imagPdfName = newFile.getName().substring(0, dot);
            // 保存图片的文件地址
            String rootPath1 = request.getServletContext().getRealPath("uploadFile/pdf2Imag");
            File rootFile = new File(rootPath1);
            if (!rootFile.exists()) {
                rootFile.mkdirs();
            }
            file.transferTo(newFile);

            InputStream inputStream = new FileInputStream(newFile);
            pdDocument = PDDocument.load(inputStream);
            PDFRenderer renderer = new PDFRenderer(pdDocument);
            PdfReader reader = new PdfReader(newFileName);//读取pdf文件
            int pages = reader.getNumberOfPages();//pdf的总页数
            StringBuffer buffer = null;
            int j;
            if (null == startPage && null == endPage) {
                j = 0;
            } else {
                j = startPage - 1;
                pages = endPage;
            }
            //放获取的图片地址
            List<String> resultList = new TreeList<String>();
            for (int i = j; i < pages; i++) {
                String imagePath = rootPath1 + File.separator + imagPdfName;
                String image = imagePath + "_" + i + ".jpg";
                // 服务器地址 + 图片地址
                String absolutPath = agentService.getServerPath() + "uploadFile/pdf2Imag/" + imagPdfName + "_" + i + ".jpg";
                resultList.add(absolutPath);
                buffer = new StringBuffer();
                buffer.append(image);
                File imgFile = new File(buffer.toString());
                BufferedImage bufferedImage = renderer.renderImageWithDPI(i, 300);
                ImageIO.write(bufferedImage, "jpg", imgFile);
            }
            reader.close();
            inputStream.close();
            pdDocument.close();
            loger.debug("pdf转图片成功");
            return CommUtil.toJson(resultList);
        } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
        }
    }
    return null;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值