概述
啥叫办公自动化
非IT专业人员打交道最多的三种文件: Word、Excel、PDF。
办公自动化就是把手工的操作通过编程自动化完成。 这个阶段讲: Word、Excel、PDF文件的读写,图表,简化日常工作。
1、老板让合并100个Excel表格,一顿操作猛如虎,一看工资2500。
2、其实Word、Excel等中的VBA编程、图表、公式玩6了就可以简化很多工作。 这个课程还是站在更专业的角度去编程,而且VBA慢慢也落伍了。
VBA写程序--Basic
使用yzk18-docs
1、Maven中引入yzk18-docs 。
2、看文档研究PDFHelpers的用法。就是对pdfbox的简单封装,没有封装的方法直接参考pdfbox的文档即可。
PDF文档有扫描版和文字版
有限PDF文档中图片中的文字我们使用PDFHelpers.openFile是识别不出来的,我们需要去一些厂商买他们的API接口,来识别。
PDDocument doc =PDFHelpers.openFile("D:\temp\PDF\柏可心宠物食品商业计划书.pdf"); System.out.println(doc.getNumberOfPages());//查找页数 PDPage page=doc.getPage(41);//因为程序是从零开始的,因此我们获取到的页数为42页 String s=PDFHelpers.parseText(page);//识别PDF中的文字 System.out.println(s); PDFHelpers.close(doc);
可能我们读取到的PDF文档中的文字有重复,这是因为PDF与其他Doc等区别。每个文字是独立的,没有前后关系,只是坐标位置不同。
PDF-转Word都是不完美的。
图片输出来
PDDocument doc =PDFHelpers.openFile("D:\temp\PDF\柏可心宠物食品商业计划书.pdf"); System.out.println(doc.getNumberOfPages());//查找页数 PDPage page=doc.getPage(34);//因为程序是从零开始的,因此我们获取到的页数为42页 String s=PDFHelpers.parseText(page);//识别PDF中的文字 System.out.println(s); List<byte[]>images=PDFHelpers.parseImages(page,"png");//解析这一页的图片 //for (byte[] bytes:images) for (int i=0;i<images.size();i++) { byte[] bytes=images.get(i); IOHelpers.writeAllBytes("D:/temp/"+i+".png",bytes);//将图片bytes保存在路径上 } PDFHelpers.close(doc);
3、案例:把一个PDF文件中的文字提取到一个文本文档中,图片保存到同级目录下,文件名用递增序号。
package Part4; import com.yzk18.commons.IOHelpers; import com.yzk18.docs.PDFHelpers; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import java.util.List; public class PDFTest2 { public static void main(String[] args) { PDDocument doc = PDFHelpers.openFile("D:\temp\PDF\柏可心宠物食品商业计划书.pdf");//打开文档 String text=PDFHelpers.parseText(doc);//解析所以文本 IOHelpers.writeAllText("D:\temp\PDF\柏可心宠物食品商业计划书.txt",text);//将解析到的文本text放入路径 int imgNumber=0; for (int i=0;i<doc.getNumberOfPages();i++)//获得总页数 { PDPage page=doc.getPage(i);//挨页遍历,拿到其中的一页 List<byte[]> images=PDFHelpers.parseImages(page,"png");//解析出这一页中的图片 for (byte[] bytes:images)//读取到图片二进制的内容 { IOHelpers.writeAllBytes("D:\temp\图片/"+imgNumber+".png",bytes);//将读取的内容保存到路径中 imgNumber++;//图片的编号 } } PDFHelpers.close(doc); } }
限制 1、有的是纯扫描版文件,全都是图片,无法简单的提取文字,需要调用OCR等功能。有需要的可以先自己研究。 2、一些被加密等PDF文件需要特殊处理 OCR基本功能强大的都要调用付费接口,因为这个很消耗CPU资源。本地的方案识别准确率都不高,这是原理决定的。没有完美的解决方案。
最后
以上就是飘逸冬瓜为你收集整理的Java学习笔记:办公自动化简介及PDF文件分析的全部内容,希望文章能够帮你解决Java学习笔记:办公自动化简介及PDF文件分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复