JAVA识别电子发票问题汇总

news2024/9/20 20:43:54

之前写的java解析电子发票,上线后出现了一下线上的问题,无法解析发票,对问题做个规整,仅供参考!

1. Pdfbox介绍

pdfbox是一款Apache的开源工具,可以进行对pdf进行操作,如题,转图片也包含在里面,还有添加、删除、编辑pdf页,提取文字等功能。对于基本语法可参考官网,这里不再讲解基础,只列出一些问题。

官网:https://pdfbox.apache.org/

2. 依赖

我们在转化过程中可能会遇到转换缺失等问题,请加上以下依赖:

(1) ERROR: Cannot read JBIG2 image: jbig2-imageio is not installed

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>jbig2-imageio</artifactId>
    <version>3.0.2</version>
</dependency>

 (2)  jpegerror的异常

<dependency>
    <groupId>com.twelvemonkeys.imageio</groupId>
    <artifactId>imageio-jpeg</artifactId>
    <version>3.4.2</version>
</dependency>

(3) Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed

<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-core</artifactId>
    <version>1.4.0</version>
</dependency>

<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-jpeg2000</artifactId>
    <version>1.3.0</version>
</dependency>

3. 常见问题

  • (1)为何我的图片转的那么慢?
    如果您的目标图片是PNG图片,这种图片不易失真,如果PDF本身体积就大,或者图片色彩鲜艳,用ImageIO.write时,可能会消耗1~2秒(看文件本身),并且CPU会消耗的非常高。

  • (2)如何解决上面的问题呢?
    官方提供了两种方法,renderImage和renderImageWithDPI 。前者第二个参数是浮点型,可以放大倍数。后者貌似是按照像素来转化。由于我们公司要求的比较高,前者放大5~7倍,和后者设置DPI为350~400的效果差不过,后者速度更快。

  • (3)生产环境中,为什么和我本地转化出来的图片不同?
    生产环境一般用Linux主机,当然Linux主机也有自己的字体,我们一般开发环境用的是Windows自带的字体文件。

    我们的做法是,直接把Windows下的字体(C:\Windows\Fonts)文件移动到Linux下(可行)。

#cd /usr/share/fonts/   // 进入系统自带的字体目录
#mkdir myfonts  // myfonts 是你自己随便取得文件夹名字
#将字体文件拷贝到这个文件夹下,在cd /usr/share/fonts/目录下执行以下命令
#mkfontscale   
#mkfontdir
#fc-cache -fv           //更新字体缓存
#source /etc/profile    // 执行以下命令让字体生效
#fc-list    // 查看系统中所有得字体,可用于测试是否安装字体成功

https://www.jianshu.com/p/c85017f8577a

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE4C++学习篇(十九)-- 动画蒙太奇初级使用

用一个第三人称的射击案例来简单介绍一下动画蒙太奇的使用&#xff0c;动画蒙太奇的具体介绍这里就不多说了&#xff0c;不知道的小伙伴可以去搜一下了解。 这里介绍角色射击&#xff0c;射击的时候播放一个射击动画。 选中需要创建出动画蒙太奇的动画&#xff0c;点击创建&am…

物理服务器通过U盘安装CentOS 7操作系统

一、制作U盘启动盘 1、使用UltraISO工具打开需要安装的操作系统iso镜像文件&#xff08;我安装的是CentOS-7-x86_64-Minimal-2009.iso&#xff09;&#xff0c;如下图所示 镜像下载地址&#xff1a;centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 2、将该系统镜像…

nginx--官方模块

目录 1.概述 2.Nginx的客户端状态 1.使用 2.目录中选择一个随机主页 3.http内容替换 ​编辑 4.nginx请求限制 5.nginx访问控制 1.基于Ip的访问控制 1.1使用 1.2access_mod.conf 1.3只允许自己ip访问 1.4http_x_forwarded_for 1.5http_access_module局限性 2.基于…

【用python将文件夹下面的文件夹里面的文件全部提取出来,并且放到一个新的文件夹】

文件里面有多个文件&#xff0c;每个文件下面有很多jpg格式的照片&#xff0c;把所有照片提取出来并且放在一个新的文件夹下面。 可以使用Python的os和shutil库来完成这个任务。 比如说&#xff1a;我的faces95文件夹下面有95个文件&#xff0c;每个文件下面有十七到十八个照片…

深拷贝和浅拷贝

目录 一.Java的Cloneable和clone()方法 1.Object类中的clone() 2.实现Cloneable接口的类 3.通过clone()生成对象的特点 二.深拷贝和浅拷贝 1.浅拷贝 2.深拷贝 3.实现深拷贝的两种方法 1.一种是递归的进行拷贝 2.Json字符串的方式进行深拷贝 一.Java的Cloneable和clone…

No.037<软考>《(高项)备考大全》【第21章】项目组合管理

【第21章】项目组合管理1 考试相关2 项目组合管理2.1 项目组合管理、项目集管理、项目管理异同2.2 项目组合管理过程组3 练习题参考答案1 考试相关 选择1分必考 案例概率低&#xff0c;知识点看一遍即可 2 项目组合管理 1、项目组合是将项目、项目集&#xff0c;以及其他方面…

2023年MathorCup数学建模赛题浅析

MathorCup俗称妈杯&#xff0c;是除了美赛国赛外参赛人数首屈一指的比赛&#xff0c;而我们的妈杯今天也如期开赛。今年的妈杯难度&#xff0c;至少在我看来应该是2023年截至目前来讲最难的一场比赛。问题的设置、背景的选取等各个方面都吐露着我要难死你们的想法。难度是恒定的…

Servlet、SpringMVC、SpringBoot整合Thymeleaf汇总

介绍 模板引擎&#xff0c;与JSP、JSTL类似。 好处是&#xff1a;直接写在HTML文件中&#xff0c;服务器可以解析&#xff0c;浏览器也可以解析&#xff0c;实现了动静分离&#xff0c;并未破坏html结构&#xff0c;即使无网络、不通过后端渲染也能在浏览器成功打开&#xff…

kettle——数据清洗(数据表-->文本文件)

实验步骤&#xff1a; 1.数据表&#xff08;图片加分析&#xff0c;创建表的过程和对应的字段及记录&#xff09; ①选择数据库 ②创建表结构 ③插入数据 2.kettle连接模块&#xff08;图片加分析,每个模块实现的功能&#xff09; ①新建“转换”文件,”文件”——>“新建…

JAVA开发运维(Jenkins中踩的坑)

最近尝试通过Jenkins来自动化部署项目&#xff0c;没想到还踩了很多坑。Jenkins部署的基本原理&#xff1a; 通过Jenkins服务器拉取gitlab上的代码进行打包&#xff0c;推送到目标服务器上&#xff0c;并运行启动脚本。 那么Jenkins就要解决三个问题。 1.连接上目标服务器 …

电子行业应如何实施数字工厂管理系统

随着信息技术的快速发展&#xff0c;电子制造企业也正在逐步做好数字化转型&#xff0c;而数字工厂管理系统便是数字化管理中的一个重要系统。数字工厂系统可以帮助电子企业实现生产过程的自动化、智能化和可视化&#xff0c;提高生产效率&#xff0c;降低生产成本&#xff0c;…

2023香港国际创科展开幕,欧科云链受邀参展

4月12日&#xff0c;由香港特区政府、香港贸易发展局主办的首届香港国际创科展&#xff08;InnoEX&#xff09;在香港会展中心开幕&#xff0c;欧科云链&#xff08;01499.HK)作为全球领先的Web3科技企业受邀参展。香港国际创科展现场图 此次创科展上&#xff0c;欧科云链向公众…

【RocketMQ】负载均衡源码分析

RocketMQ在集群模式下&#xff0c;同一个消费组内&#xff0c;一个消息队列同一时间只能分配给组内的某一个消费者&#xff0c;也就是一条消息只能被组内的一个消费者进行消费&#xff0c;为了合理的对消息队列进行分配&#xff0c;于是就有了负载均衡。 接下来以集群模式下的消…

智优ERP的升级版智优E3_ERP,可以自定义列,和自定义打印公司logo

新版的智优E3_ERP系统&#xff0c;新增了许多供自定义的列。 系统能够解决的企业管理问题&#xff1a; 一、日常的出入库管理、收付款管理、往来对账、移动加权平均成本核算、以及相关数据的查询分析&#xff1b; 二、订单的跟单管理&#xff08;包括销售跟单、采购跟单、生产…

ElasticSearch常用查询操作

ES查询 一般我们使用ES最多的就是查询&#xff0c;今天就讲一下ES的查询。这里我是建了一个person的索引。 "person" : {"aliases" : { },"mappings" : {"properties" : {"address" : {"type" : "text"…

[LeetCode周赛复盘] 第 102 场双周赛20230415

[LeetCode周赛复盘] 第 102 场双周赛20230415 一、本周周赛总结二、 6333. 查询网格图中每一列的宽度1. 题目描述2. 思路分析3. 代码实现三、6334. 一个数组所有前缀的分数1. 题目描述2. 思路分析3. 代码实现四、6335. 二叉树的堂兄弟节点 II1. 题目描述2. 思路分析3. 代码实现…

English Learning - L2 第 15 次小组纠音 助动词弱读和重音节奏 2023.4.15 周六

English Learning - L2 第 15 次小组纠音 助动词弱读和重音节奏 2023.4.15 周六共性问题have has /hv/ /hz/ 弱读成 /həv/ /həz/fine left /faɪn/ /left/late changed train /leɪt/ /ʧeɪnʤd/ /treɪn/ 中的 eɪmoment problem time /ˈməʊmənt/ /ˈprɒbləm/ /taɪm…

4.10~4.11学习总结

ER图的学习&#xff1a; 学习了ER图相关知识&#xff0c;并绘制了项目大概的ER图 详细笔记博客&#xff1a;http://t.csdn.cn/YOJxq MySQL的学习&#xff1a; 函数 学习了字符串函数&#xff0c;数值函数&#xff0c;日期函数&#xff0c;流程函数。 约束 作用于表中字段的规则…

改善Instagram客户服务的6个技巧

Instagram仍然是全球前四大社交网络&#xff0c;按用户数量排名。它通过其创新的过滤器、内容创建工具、视频和卷轴选项继续增长并推动流量。这是一个平台&#xff0c;世界顶级名人和有影响力的人可以为全球用户提供有趣和令人印象深刻的内容。 但不仅仅是一个娱乐平台&#xf…

Nestjs实战干货-概况-异常过滤器-Exception filters

异常过滤器 Nest 带有一个内置的异常层&#xff0c;负责处理应用程序中所有未处理的异常。当应用程序代码未处理异常时&#xff0c;该层会捕获该异常&#xff0c;然后自动发送适当的用户友好响应。 开箱即用&#xff0c;此操作由内置的全局异常过滤器执行&#xff0c;该过滤器…