我是靠谱客的博主 飘逸冬瓜,最近开发中收集的这篇文章主要介绍Java学习笔记:办公自动化简介及PDF文件分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

啥叫办公自动化

非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文件分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部