zoukankan      html  css  js  c++  java
  • 识别pdf格式发票信息

    方案一:(会丢失文件内容排版格式)

    
    

    import java.awt.Rectangle;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.StringWriter;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    
    

    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDPage;
    import org.apache.pdfbox.text.PDFTextStripper;
    import org.apache.pdfbox.text.PDFTextStripperByArea;

    
    

    import com.itextpdf.text.Document;
    import com.itextpdf.text.pdf.PdfCopy;
    import com.itextpdf.text.pdf.PdfDictionary;
    import com.itextpdf.text.pdf.PdfName;
    import com.itextpdf.text.pdf.PdfNumber;
    import com.itextpdf.text.pdf.PdfReader;
    import com.itextpdf.text.pdf.PdfSmartCopy;


    //
    传入文件所在路径即可     public static String readPDF(String filePath){ PDDocument helloDocument = null; String returnTag = ""; // 读文本内容 PDFTextStripper stripper; try { helloDocument=PDDocument.load(new File(filePath)); int pages = helloDocument.getNumberOfPages(); stripper = new PDFTextStripper(); // 设置按顺序输出 stripper.setSortByPosition(true); stripper.setStartPage(1); stripper.setEndPage(pages); String contText=stripper.getText(helloDocument).replaceAll(" ", ""); System.out.println("contText:"+contText);//发票内容 //利用正则 匹配需要验证的信息 Pattern pattern = Pattern.compile("发票号码[::]{1}[0-9]{8}"); Matcher matcher = pattern.matcher(contText); boolean find = matcher.find();//是否包含正则匹配内容 System.out.println("find:"+find); if(find){   returnTag=matcher.group();//与正则相匹配的内容 } helloDocument.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return returnTag; }

    方案二:

    其中所用jar包有:activation-1.1.1.jar  jaxb-api-2.3.0.jar  jaxb-core-2.3.0.jar  jaxb-impl-2.3.0.jar  Spire.Pdf.jar

    import com.spire.pdf.PdfDocument;
    import com.spire.pdf.PdfPageBase;

     public static void readPDF(String filePath){
            //创建PdfDocument实例
            PdfDocument doc = new PdfDocument();
            //加载PDF文件
            doc.loadFromFile("C:\Users\Gean_2016\Desktop\pdf\1 (6).pdf");
            String returnTag = "";
            //创建StringBuilder实例                
            StringBuilder sb = new StringBuilder();   
     
            PdfPageBase page;                
            //遍历PDF页面,获取每个页面的文本并添加到StringBuilder对象
            for(int i= 0;i<doc.getPages().getCount();i++){
                page = doc.getPages().get(i);            
                sb.append(page.extractText(true));
            }
            //已经获取到pdf文件内容
            String contText = sb.toString();
            
            //去除读取内容中的指顶符号字符
            contText=contText.replaceAll(" ", "");
              contText=contText.replaceAll("[\t\n\r]", "");
            contText = contText.replaceAll("[()()¥¥]", "");
            System.out.println(contText);
        }
  • 相关阅读:
    Java基础学习篇---------static
    Java基础学习篇---------this、object的学习
    Java基础学习篇---------String、集合的学习
    Java基础学习篇---------多态
    Java基础学习篇---------继承
    Java基础学习篇---------封装
    Java基础学习篇---------多线程
    Handler主线程和子线程相通信
    Handler的使用
    c# DataGridView操作
  • 原文地址:https://www.cnblogs.com/ljc1212/p/13473642.html
Copyright © 2011-2022 走看看