去年一年偷了下懒, 博客写了一点就没写了, 还好一些大的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 相关操作的更多相关文章

  1. Selenium2+python自动化40-cookie相关操作

    前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录. 登录后换账号登录时候,也可作为后置条件去删除cookie ...

  2. 强大的pdf文件操作小工具——PDFtk的小白用法 【转载】

    转载出处https://www.cnblogs.com/basterdaidai/p/6204518.html 前言 作为程序员,大家都知道的,总是会被技术小白问各种跟编程没什么关系的硬件.软件问题. ...

  3. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  4. 从零自学Hadoop(21):HBase数据模型相关操作下

    阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  5. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  6. Liunx下的有关于tomcat的相关操作 && Liunx 常用指令

    先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...

  7. pip的相关操作

    >Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...

  8. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  9. php对二维数组进行相关操作(排序、转换、去空白等)

    php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04   这篇文章主要介绍了php对二维数组进行相关操作,包括php对 ...

随机推荐

  1. 大数据学习——MapReduce学习——字符统计WordCount

    操作背景 jdk的版本为1.8以上 ubuntu12 hadoop2.5伪分布 安装 Hadoop-Eclipse-Plugin 要在 Eclipse 上编译和运行 MapReduce 程序,需要安装 ...

  2. [WC2015]未来程序(提交答案)

    sub1:ans=a*b%c,龟速乘即可. #include <stdio.h> #include <stdlib.h> unsigned long long a, b, c, ...

  3. Web 自动化

    自动化:由机器设备代替人为自动完成指定目标的过程 自动化测试:由程序代替人为去验证程序功能的过程 为什么要进行自动化测试? 解决-回归测试 压力测试 兼容性测试 提高测试效率,保证产品质量 什么阶段开 ...

  4. MySQL主从及读写分离配置

    <<MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,B也会跟着写数据,两者数据实时同步>> MySQL主从是基于binlo ...

  5. Automatic Setup of a Humanoid

    The humanoid animation option in Unity 4 makes it possible to retarget the same animations to differ ...

  6. JacksonUtil

    package org.linlinjava.litemall.core.util; import com.fasterxml.jackson.core.type.TypeReference; imp ...

  7. 打不开gitHub的解决方法

    因为Github是国外网站,所以经常会遇到打不开的问题,并且有时能打开但是网速好慢 解决这个问题的方法是 : 在C:\Windows\System32\Drivers\etc下找到hosts文件,用记 ...

  8. <c:if >标签的坑!!

    <c:if test="${trans.Transition}"> <input id="${trans.nextnode}" type=&q ...

  9. MOOC(11)- 获取cookie后存到json中

    获取cookie后转成字典格式 把字典格式cookie存到json数据中 需要在表格中写好关键字,判断是否写cookie.是否读cookie 在需要用cookie的时候根据键去json中取值 # 1. ...

  10. jenkins-自定义工作空间目录