去年一年偷了下懒, 博客写了一点就没写了, 还好一些大的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. Opencv笔记(二十一)——傅里叶变换

    参考 Numpy 中的傅里叶变换 首先我们看看如何使用 Numpy 进行傅里叶变换.Numpy 中的 FFT 包可以帮助我们实现快速傅里叶变换.函数 np.fft.fft2() 可以对信号进行频率转换 ...

  2. 898B. Proper Nutrition#买啤酒问题(枚举&取余)

    题目出处:http://codeforces.com/problemset/problem/898/B 题目大意:为一个整数能否由另外两个整数个整数合成 #include<iostream> ...

  3. [概率DP]相逢是温厚

    题意 有\(n\)场比赛,他每次等概率地选择一场,选择的比赛可能有没ac过的题,他一定会ac这次比赛中的某一道,并说我好菜啊.如果全ac过了,也会说我好菜啊.求期望说多少次我好菜啊. 注意题目中每场题 ...

  4. ELK_疑难杂症处理

    一.ELK实用知识点总结 1.编码转换问题 这个问题,主要就是中文乱码. input中的codec=>plain转码: codec => plain {charset => &quo ...

  5. A4988驱动42步进电机

    A4988步进电机驱动器驱动控制42步进电机速度,步进电机调速,调节驱动电流       1  A4988步进电机驱动器简介 方便使用,是我们这些用户最想要的,固有的名词和深入介绍在这就不多说了,您可 ...

  6. python-django框架-电商项目-购物车模块开发_20191125

    python-django框架-电商项目-购物车模块开发 商品详情页js代码: 在商品详情页,有加入购物车按钮, 点击加减号可以增加减少,手动输入也可以, 点击加入购物车,就要加过去, 先实现加减的操 ...

  7. prisoners-of-war|

    The Nazi kept those ________ in their concentration camps.  A. prisoner-of-wars  B. prisoner-of-war ...

  8. ospf实验二

    R1,R2,R3为17.1.1.0网段 1. R4先做rip #rip 1 #version 2 #undo sum.. #netwokr 14.0.0.0 实验第四条 标记tag 100 在R4上做 ...

  9. 项目中spring容器加载的问题

    今天做一个项目采用的是传统架构,没有采用分布式,部署时出现了异常,信息是: org.springframework.beans.factory.NoSuchBeanDefinitionExceptio ...

  10. ip获取到城市

    <?phpfunction GetIP() {    if ($_SERVER["HTTP_X_FORWARDED_FOR"])        $ip = $_SERVER[ ...