icepdf转换pdf文件转图片高清且字体不乱码且盖章贴图可转

采用ICEpdf针对pdf转图片

目前,项目中有个需求,针对票据中pdf文字进行转换图片,进行前端展示。百度、谷歌一大堆ICEpdf 版本,几乎都是乱码,文字不识别而告终。在此笔记。当时脑子转不过弯,老是觉得最新版本ICEpdf 6.2.1 ,ICEpdf 6.2.2 ,ICEpdf 5.1.3,ICEpdf 6.1.2 ,花了好多的豆豆,后来心想做出来才是主要的,不然时间消耗,项目耽搁。后来使用的是 ICEpdf-6.1.1 比较靠谱。告诉自己:做出来最好的效果就好。

后期拓展思考:根据此效果,针对pdf转图片,图片进行OCR文字处理,可以对票据识别是一个方向,可以好好开拓,开发票据识别功能。

需求如下:

- pdf图片情况如下

增值税普通发票: 这个是中文最多的,且转换图片要求文件不能变成“口”,未识别的效果
在这里插入图片描述
已打印发票: 中间有个“已打印”图片字眼,然后网上各种转图片的居然都不支持了,还要ICEpdf支持
在这里插入图片描述

代码展示:

package com.bos4cloud.common.icepdf;

import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

import lombok.extern.slf4j.Slf4j;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.util.GraphicsRenderingHints;

/**
 * @author: Luckly
 * @Description: pdf 转单张高清图片
 * @Date 2019-05-27
 * @Modified By:
 */
@Slf4j
public class IcePdf {
    /**
     *
     * @param pdfPath D://upFiles//bill//PT-011001900321-18675195.pdf
     * @param pngPath D://upFiles//bill//
     * @param imgName PT-011001900321-18675195
     */
    public static void pdf2Pic(String pdfPath, String pngPath,String imgName) {
        log.info("IcePdf pdfPath : {},  pngPath : {} ,  imgName : {} ", pdfPath,pngPath,imgName);
        Document document = new Document();
        document.setFile(pdfPath);
        //缩放比例
        float scale = 2.5f;
        //旋转角度
        float rotation = 0f;
        //for循环在pdf文件资料中使用,目前税票就固定一张,所有就注释了
        //for (int i = 0; i < document.getNumberOfPages(); i++) {
            BufferedImage image = (BufferedImage)
                    document.getPageImage(0, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation, scale);
            RenderedImage rendImage = image;
            try {
                imgName = imgName + ".png";
                File file = new File(pngPath + File.separator + imgName);
                ImageIO.write(rendImage, "png", file);
            } catch (IOException e) {
                e.printStackTrace();
            }
            image.flush();
        //}
        document.dispose();
        log.info("======================pdf2Pic 完成============================");
    }

    public static void main(String[] args) {
        String filePath = "D:\\upFiles\\bill\\PT-011001900321-18675195.pdf";
        pdf2Pic(filePath, "D:\\upFiles\\bill", "PT-011001900321-18675195");

        String filePath2 = "D:\\upFiles\\bill\\YDY-011001900332-18675195.pdf";
        pdf2Pic(filePath2, "D:\\upFiles\\bill", "YDY-011001900332-18675195");
    }
}
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掘金者说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值