識別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);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM