切換語言為:簡體

Java讀取PDF頁面內容、新增新頁面、刪除指定頁

  • 爱糖宝
  • 2024-08-04
  • 2065
  • 0
  • 0

最近幫公司寫了好多小指令碼處理Excel和Pdf,在此記錄一下,以備下次使用還能找得到如何實現的,開發過程中主要使用pdfbox實現PDF頁面的新增刪除操作,Maven依賴如下:

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

讀取PDF頁面內容實現步驟

  1. 讀取PDF檔案,建立檔案輸入流。

    String filePath = "D:\\Download\\test.pdf";
    FileInputStream fileInputStream = new FileInputStream(new File(filePath);
    PDDocument document = PDDocument.load(fileInputStream);

  2. 建立PDFTextStripper物件,讀取頁面的文字內容
    使用PDFTextStripper物件需要引入一個Maven依賴

    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>fontbox</artifactId>
        <version>2.0.24</version>
    </dependency>

    建立PDFTextStripper物件,設定要讀取第幾頁到第幾頁的文字內容,下面的示例中讀取第一頁的文字內容

    PDFTextStripper ps = new PDFTextStripper();
    ps.setStartPage(1);
    ps.setEndPage(1);
    String content = ps.getText(document);

新增新的PDF頁面實現步驟

讀取PDF檔案,建立檔案輸入流不做演示,這裏預設已經建立了文件物件PDDocument

  1. 載入字型物件
    因為內容需要指定字型,所以要建立一個字型物件PDType0Font

    PDType0Font font = PDType0Font.load(document, new File("D:\\Download\\ZiTiChuanQiNanAnTi-MianFeiShangYong-2.ttf"));

  2. 建立一個新的頁面新增到document

    PDPage page = new PDPage();
    document.addPage(page);

  3. 建立一個PDF頁面內容操作流,用來向頁面上新增文字內容
    showText()用來在頁面上新增文字內容,但是必須要在語句前後分別呼叫beginText()endText()方法,並且必須呼叫setFont()方法來設定內容的字型,否則執行會出錯!

    PDPageContentStream contentStream=new PDPageContentStream(document, page);
    contentStream.beginText();
    contentStream.newLineAtOffset(25, 700);
    contentStream.setFont(font, 14);
    contentStream.showText("你好");
    contentStream.endText();
    contentStream.close();

  4. 儲存PDF文件物件到指定檔案

    document.save("D:\\Download\\newTest.pdf");

刪除PDF指定頁面實現步驟

刪除檔案比較簡單,只需要呼叫document.removePage(index)方法,傳入要刪除的頁碼即可,刪除後將document物件儲存到指定檔案。這裏建立檔案的步驟不做演示,這裏就預設已經建立了文件物件PDDocument。

document.removePage(i);
document.save("D:\\Download\\newTest.pdf");

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.