PDF 相关操作
去年一年偷了下懒, 博客写了一点就没写了, 还好一些大的flag完成了. 花了半年的空余时间, 培养了一门兴趣爱好. 自己在为人处世上还是不够圆滑啊, 也难怪. 自己当初选择走技术这条路的初衷希望以后都能一直坚持. 知世故而不世故.
这两天公司业务有关PDF查找, PDF读取这些功能操作, 在网上看了一些资料, 花了一天左右试了三种方法, 想着记录记录, 以后工作中可能会用的上.在网上看了三种方式, apache pdfbox, itext, spire pdf.
spire pdf 有具体是半开源的java 类库, 是由国内的一个团队开发维护的. 有免费版, 付费版. 免费版是完全免费的,没有红色的警告信息。但是免费版存在篇幅限制. 并且免费版也没有付费版稳定,功能没有付费版强大。免费版有10页的页数输出限制, 在输出结果文档时只能输出前10页, 将PDF文档转换为图片, word, HTML, xps等格式时, 仅支持转换前10页,如超出限制, 可升级到商业版, 我们仅对免费版进行不定期维护. 其中不管是免费还是付费版 都不支持OCR识别图片获取图片中的文字, 无法直接操作线上文件,比如给个线上的url进行加载,这样不行. 但是操作本地或项目里的ok. 其中的功能点用图片替换PDF中的图片, 读取查找PDF, PDF中某些字段高亮显示等. 具体可见 https://www.e-iceblue.cn/Introduce/Spire-PDF-JAVA.html
itext 功能操作点也还是挺多的, 例如word, Excel, PDF等. 前年年底上家公司有导出表格, Excel转word 功能. 记得就是用itext实现的, 本来代码是拷贝到 u 盘中的, 结果u 盘被同事用了一次就坏了. 这其中的相关代码就不能展现出来了.
Apache PDFbox是一个开源的、基于Java的、支持PDF文档生成的工具库,它可以用于创建新的PDF文档,修改现有的PDF文档,还可以从PDF文档中提取所需的内容。Apache PDFBox还包含了数个命令行工具。
官网地址:https://pdfbox.apache.org/index.html 我这两天试了试进不去. 说起来这两天就连maven 下载jar 也很慢, 下载不了, 不知道是不是疫情影响. Apache PDFbox 在网上有许多文章博客的. 虽然官网跟相关api文档下载不了, 看不了. 但是我想有这些文章博客也还是ok的
代码. (一般我博客上的代码都是可以直接复用的)
public static void main(String[] args) throws Exception {
// File pdfFile = new File("C:\\\\Users\\\\沐白\\\\Desktop\\\\上高县劲松金刚石工具厂.PDF");
String path = "http://123.com/上高县劲松金刚石工具厂.PDF";
String ssContent = "";
URL url = new URL(path);
//想要读取的url地址
URLConnection conn = url.openConnection();
PDDocument document = null;
ArrayList<String> list = new ArrayList<>(); try
{
// 方式一:
InputStream input = conn.getInputStream();
//加载 pdf 文档
PDFParser parser = new PDFParser(new RandomAccessBuffer(input));
parser.parse();
document = parser.getPDDocument(); // 方式二:
// document= PDDocument.load(pdfFile); // 获取页码
int pages = document.getNumberOfPages(); // 读文本内容
PDFTextStripper stripper=new PDFTextStripper();
// 设置按顺序输出
stripper.setSortByPosition(true);
stripper.setStartPage(1);
stripper.setEndPage(pages);
String content = stripper.getText(document); String str = "";
int state = 0;
BufferedReader bre = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(content.getBytes(Charset.forName("utf8"))), Charset.forName("utf8")));
while ((str = bre.readLine())!= null)
{
if(str.contains(ssContent)){
list.add(str);
}
}
}catch(Exception e){
e.printStackTrace();
} }
其中需要到的 pdfbox jar , fontbox jar 可以观看我另一篇随笔, 小工具. 其中有许多实用的线上小工具, 当然了是我个人而言
PDF 相关操作的更多相关文章
- Selenium2+python自动化40-cookie相关操作
前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录. 登录后换账号登录时候,也可作为后置条件去删除cookie ...
- 强大的pdf文件操作小工具——PDFtk的小白用法 【转载】
转载出处https://www.cnblogs.com/basterdaidai/p/6204518.html 前言 作为程序员,大家都知道的,总是会被技术小白问各种跟编程没什么关系的硬件.软件问题. ...
- 从零自学Hadoop(20):HBase数据模型相关操作上
阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 从零自学Hadoop(21):HBase数据模型相关操作下
阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 理解CSV文件以及ABAP中的相关操作
在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...
- Liunx下的有关于tomcat的相关操作 && Liunx 常用指令
先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...
- pip的相关操作
>Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- php对二维数组进行相关操作(排序、转换、去空白等)
php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04 这篇文章主要介绍了php对二维数组进行相关操作,包括php对 ...
随机推荐
- eclipse导入项目报错解决方法
1.导入项目之前,请确认工作空间编码已设置为utf-8:window->Preferences->General->Wrokspace->Text file encoding- ...
- EXAM-2018-08-21
EXAM-2018-08-21 自己真的是菜的恐怖 D:Fence Building 欧拉公式:V-E+F=2 在平面中:V为顶点个数,E为边数,F为区域数 在简单几何体中:V为顶点个数,E为边数,F ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题
1. 在matlab的m函数很可能遇到原函数[a,b] = func(a); 这样的两个输出参数. 2. 在观察C#生成后定义中我们发现: public MWArray HP(); public MW ...
- 2018 ACM-ICPC 宁夏 H.Fight Against Monsters(贪心)
It is my great honour to introduce myself to you here. My name is Aloysius Benjy Cobweb Dartagnan Eg ...
- 迅为IMX6Q开发板提供原理图_底板PCB_驱动程序源码_芯片和LCD数据手册_开发板环境_使用手册
迅为IMX6开发板: Android4.4/6.0系统 Linux + Qt5.7系统 Ubuntu12.04系统 部分案例:HMI:3D打印机:医疗设备:工控机:触控一体机:车载终端 核心板 ...
- A component required a bean named xxx that could not be found. Action: Consider defining
0 环境 系统:win10 1 正文 https://stackoverflow.com/questions/44474367/field-in-com-xxx-required-a-bean-of- ...
- UUID与时间戳
/** * 32位去除'-'的UUID */ public static String getUUID() { String uuid = java.util.UUID.randomUUID().to ...
- Caused by: java.io.FileNotFoundException: class path resource [../../resources/config/spring.xml] cannot be opened because it does not exist
在尝试使用Spring的Test的时候遇到了这个错误 原来的代码: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loca ...
- Java面试题1-附答案
List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1.ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高 ...
- Horizon公司环境