1. 程式人生 > 其它 >java解析pdf檔案並輸出指定的內容

java解析pdf檔案並輸出指定的內容

技術標籤:javajava

要求

通過解析pdf檔案,輸出發票程式碼,發票號碼,開票日期(YYYYMMDD),校驗碼後六位。
在這裡插入圖片描述

Demo下載地址(包含jar包和測試pdf檔案)

實現

import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class PDFInvoiceExtractor {
    /**
     * @param path pdf檔案的路徑
     * @return  pdf中的文字資訊,但是由於pdf本身格式的問題,導致文字的順序可能會錯亂。
     */
public String parsePDF(String path){ String result = ""; try{ PDDocument document = PDDocument.load(new File(path)); PDFTextStripper stripper = new PDFTextStripper(); stripper.setSortByPosition(true); for (int p = 1; p <= document.
getNumberOfPages(); ++p) { stripper.setStartPage(p); stripper.setEndPage(p); String text = stripper.getText(document); result += text; } }catch(Exception e){ e.printStackTrace(); } return
result; } public static void main(String[] args) { PDFInvoiceExtractor pie = new PDFInvoiceExtractor(); //System.out.println(pie.parsePDF("031001800211-84462201 - 圖書.pdf")); //TODO 這裡開始你們的表演: //對給出的4個pdf檔案進行解析。 //使用String解析上述的文字資訊(即下面的變數s),只輸出發票程式碼,發票號碼,開票日期(YYYYMMDD公示),校驗碼後六位。 String s = pie.parsePDF("76439508 - 技術服務費 阿里雲.pdf"); System.out.println(s); //發票程式碼 System.out.println("發票程式碼:"+s.substring(s.indexOf("發票程式碼")+5).split("[^0-9]")[0]); //發票號碼 System.out.println("發票號碼:"+s.substring(s.indexOf("發票號碼")+5).split("[^0-9]")[0]); //開票日期 System.out.println("開票日期:"+s.substring(s.indexOf("開票日期")+5).split("日")[0].replaceAll("[^0-9]","")); //校驗碼 s=s.replaceAll(" ",""); String jiao= s.substring(s.indexOf("校驗碼")+4).split("[^0-9]")[0]; System.out.println("校驗碼:"+jiao.substring(jiao.length()-6)); } }

寫作不易,既然來了,不妨點個關注,點個贊吧!!!