欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文詳解如何使用Java獲取PDF頁面信息

 更新時間:2025年07月15日 16:08:46   作者:nuclear2011  
了解 PDF 頁面屬性是我們在處理文檔、內(nèi)容提取、打印設(shè)置或頁面重組等任務(wù)時不可或缺的一環(huán),下面我們就來看看如何使用Java語言獲取這些信息吧

引言

了解 PDF 頁面屬性是我們在處理文檔、內(nèi)容提取、打印設(shè)置或頁面重組等任務(wù)時不可或缺的一環(huán)。PDF 文件可能包含多個頁面,而這些頁面可能具有不同的寬高、旋轉(zhuǎn)角度、方向模式甚至自定義標(biāo)簽和邊框信息。

本文將介紹如何使用 Java 讀取 PDF 頁面信息,包括:

  • 獲取 PDF 頁數(shù)
  • 獲取頁面尺寸(寬高)
  • 獲取頁面旋轉(zhuǎn)角度
  • 判斷頁面方向(橫向 / 縱向)
  • 獲取頁面標(biāo)簽
  • 獲取頁面邊框信息(MediaBox、CropBox 等)

一、安裝和引入PDF處理庫

要在 Java 中獲取 PDF 頁面信息,可使用 Spire.PDF for Java 庫。它支持加載、解析、編輯和導(dǎo)出 PDF 文件。

引入依賴

1. Maven項目

如果你使用 Maven 構(gòu)建項目,可在 pom.xml 中添加如下依賴:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>

<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.pdf</artifactId>
    <version>11.7.0</version>
</dependency>

2. 非Maven項目

對于非 Maven 項目,你可以前往 官網(wǎng) 下載 jar 包并手動導(dǎo)入項目。

二、獲取 PDF 頁數(shù)

了解 PDF 的總頁數(shù)是處理文檔的第一步,它可以幫助我們執(zhí)行分頁提取、范圍打印或頁面遍歷等操作。

實現(xiàn)步驟:

  • 創(chuàng)建 PdfDocument 對象;
  • 使用 PdfDocument.loadFromFile() 方法打開 PDF 文檔;
  • 調(diào)用 PdfDocument.getPages().getCount() 獲取頁數(shù)。

示例代碼:

import com.spire.pdf.*;

public class GetPageCount {
public static void main(String[] args) {
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("測試.pdf");

        int pageCount = pdf.getPages().getCount();
        System.out.println("該 PDF 共 " + pageCount + " 頁。");

        pdf.close();
    }
}

三、獲取頁面尺寸(寬高)

頁面的尺寸決定了內(nèi)容的排版范圍,不同的 PDF 頁面可能采用不同的紙張標(biāo)準(zhǔn),如 A4、Letter 或自定義大小。

實現(xiàn)步驟:

  • 打開 PDF 文檔;
  • 使用PdfDocument.getPages().get()方法獲取指定頁面(通過索引);
  • 調(diào)用 PdfPageBase.getSize().getWidth() 和 PdfPageBase.getSize().getHeight() 方法獲取寬高信息;
  • 輸出尺寸數(shù)據(jù)。

示例代碼:

import com.spire.pdf.*;

public class GetPageSize {
    public static void main(String[] args) {
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("測試.pdf");

        PdfPageBase page = pdf.getPages().get(0); // 獲取第一頁
        double width = page.getSize().getWidth();
        double height = page.getSize().getHeight();

        System.out.printf("第一頁尺寸為:%.2f x %.2f pt%n", width, height);

        pdf.close();
    }
}

注意,頁面尺寸默認(rèn)單位為 pt(磅),1 英寸 = 72 磅。如果你需要將尺寸轉(zhuǎn)換為英寸、像素、厘米或毫米進(jìn)行打印適配或前端渲染,可以使用 PdfUnitConvertor 類進(jìn)行單位轉(zhuǎn)換:

float pointValue = 595.0f; // 示例:A4 寬度為 595 pt

PdfUnitConvertor converter = new PdfUnitConvertor();

float inch = converter.convertUnits(pointValue, PdfGraphicsUnit.Point, PdfGraphicsUnit.Inch);
float pixel = converter.convertUnits(pointValue, PdfGraphicsUnit.Point, PdfGraphicsUnit.Pixel);
float mm = converter.convertUnits(pointValue, PdfGraphicsUnit.Point, PdfGraphicsUnit.Millimeter);
float cm = converter.convertUnits(pointValue, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter);

System.out.printf("595 pt 對應(yīng):%.2f 英寸,%.2f 像素,%.2f 毫米,%.2f 厘米%n", inch, pixel, mm, cm);

四、獲取頁面旋轉(zhuǎn)角度

頁面旋轉(zhuǎn)信息可以幫助我們判斷是否需要在程序中進(jìn)行角度還原或頁面調(diào)整,避免內(nèi)容呈現(xiàn)異常。

實現(xiàn)步驟:

  • 打開 PDF 文檔;
  • 獲取目標(biāo)頁面;
  • 使用 PdfPageBase.getRotation().getValue() 方法獲取旋轉(zhuǎn)角度;
  • 輸出角度信息。

示例代碼:

import com.spire.pdf.*;

public class GetPageRotation {
    public static void main(String[] args) {
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("測試.pdf");

        PdfPageBase page = pdf.getPages().get(0);
        int rotation = page.getRotation().getValue();

        System.out.println("第一頁旋轉(zhuǎn)角度為:" + rotation + "°");

        pdf.close();
    }
}

五、判斷頁面方向(橫向 / 縱向)

PDF 頁面可分為 Portrait(縱向)和 Landscape(橫向),不同方向適用于不同類型的內(nèi)容展示(如文字或表格)。

實現(xiàn)步驟:

  • 打開 PDF 文檔;
  • 獲取目標(biāo)頁面;
  • 調(diào)用 PdfPageBase.getSize().getWidth() 和 PdfPageBase.getSize().getHeight() 方法獲取頁面的寬高信息;
  • 比較寬度與高度。若寬度 > 高度,則為橫向,否則為縱向;
  • 輸出頁面方向信息。

示例代碼:

import com.spire.pdf.*;

public class GetPageOrientation {
    public static void main(String[] args) {
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("測試.pdf");

        PdfPageBase page = pdf.getPages().get(0);
        double width = page.getSize().getWidth();
        double height = page.getSize().getHeight();

        String orientation = width > height ? "橫向" : "縱向";
        System.out.println("第一頁頁面方向為:" + orientation);

        pdf.close();
    }
}

六、獲取頁面標(biāo)簽

PDF 頁面標(biāo)簽(Page Label)可用于自定義頁碼(如 i, ii, iii, A-1, A-2),對于章節(jié)分隔、目錄定位等功能尤為常見。

實現(xiàn)步驟:

  • 打開 PDF 文檔并獲取目標(biāo)頁面;
  • 使用 PdfPageBase.getPageLabel() 方法獲取目標(biāo)頁的標(biāo)簽文字;
  • 判斷標(biāo)簽文字是否存在。若存在,輸出標(biāo)簽信息,否則輸出“無標(biāo)簽”。

示例代碼:

import com.spire.pdf.*;

public class GetPageLabel {
    public static void main(String[] args) {
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("示例.pdf");

        PdfPageBase page = pdf.getPages().get(0);

        String label = page.getPageLabel();
        String labelText = (label != null && !label.trim().isEmpty()) ? label : "無標(biāo)簽";

        System.out.println("第一頁頁面標(biāo)簽為:" + labelText);

        pdf.close();
    }
}

七、獲取頁面邊框信息

PDF 頁面所定義的邊框不僅用于限制內(nèi)容的顯示范圍,還涵蓋多個與印刷和裁切相關(guān)的區(qū)域。這些邊框各自承擔(dān)不同的功能,例如用于標(biāo)識紙張尺寸、設(shè)置可視區(qū)域、預(yù)留出血位置以及定義裁切和內(nèi)容區(qū)域等。下圖展示了這些邊框在頁面中的分布情況:

邊框類型說明
MediaBox頁面介質(zhì)框,表示紙張的實際物理尺寸范圍
CropBox裁剪框,定義最終用于顯示或打印的區(qū)域
BleedBox出血框,用于印刷時預(yù)留的出血區(qū)域
TrimBox成品框,表示裁剪后的頁面成品大小
ArtBox作品框,限定頁面中有效的內(nèi)容區(qū)域

實現(xiàn)步驟:

  • 打開PDF文檔并獲取目標(biāo)頁面;
  • 分別使用PdfPageBase類的 getMediaBox()、getCropBox()、getBleedBox()、getTrimBox()、getArtBox() 方法獲取各個對應(yīng)的邊框信息;
  • 分別使用 Rectangle2D類的getWidth()、getHeight()、getX()、getY() 方法讀取每個邊框的寬度、高度、以及X和Y坐標(biāo)等屬性值,輸出結(jié)果。

示例代碼:

import com.spire.pdf.*;
import java.awt.geom.Rectangle2D;

public class GetPageBoxes {
    public static void main(String[] args) {
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("測試.pdf");

        PdfPageBase page = pdf.getPages().get(0);

        Rectangle2D mediaBox = page.getMediaBox();
        Rectangle2D cropBox = page.getCropBox();
        Rectangle2D bleedBox = page.getBleedBox();
        Rectangle2D trimBox = page.getTrimBox();
        Rectangle2D artBox = page.getArtBox();

        System.out.printf("MediaBox: 寬 %.2f, 高 %.2f, X %.2f, Y %.2f%n",
                mediaBox.getWidth(), mediaBox.getHeight(), mediaBox.getX(), mediaBox.getY());
        System.out.printf("CropBox: 寬 %.2f, 高 %.2f, X %.2f, Y %.2f%n",
                cropBox.getWidth(), cropBox.getHeight(), cropBox.getX(), cropBox.getY());
        System.out.printf("BleedBox: 寬 %.2f, 高 %.2f, X %.2f, Y %.2f%n",
                bleedBox.getWidth(), bleedBox.getHeight(), bleedBox.getX(), bleedBox.getY());
        System.out.printf("TrimBox: 寬 %.2f, 高 %.2f, X %.2f, Y %.2f%n",
                trimBox.getWidth(), trimBox.getHeight(), trimBox.getX(), trimBox.getY());
        System.out.printf("ArtBox: 寬 %.2f, 高 %.2f, X %.2f, Y %.2f%n",
                artBox.getWidth(), artBox.getHeight(), artBox.getX(), artBox.getY());

        pdf.close();
    }
}

到此這篇關(guān)于一文詳解如何使用Java獲取PDF頁面信息的文章就介紹到這了,更多相關(guān)Java獲取PDF信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java使用jacob將微軟office中word、excel、ppt轉(zhuǎn)成pdf

    Java使用jacob將微軟office中word、excel、ppt轉(zhuǎn)成pdf

    這篇文章主要為大家詳細(xì)介紹了Java使用jacob將微軟office中word、excel、ppt轉(zhuǎn)成pdf,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 關(guān)于實體類中Date屬性格式化@JsonFormat @DateTimeFormat

    關(guān)于實體類中Date屬性格式化@JsonFormat @DateTimeFormat

    這篇文章主要介紹了關(guān)于實體類中Date屬性格式化@JsonFormat @DateTimeFormat問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java實現(xiàn)求小于n的質(zhì)數(shù)的3種方法

    Java實現(xiàn)求小于n的質(zhì)數(shù)的3種方法

    這篇文章主要介紹了Java實現(xiàn)求小于n的質(zhì)數(shù)的3種方法,本文給出了根據(jù)定義去求解、平方根、找規(guī)律三種解法,需要的朋友可以參考下
    2015-03-03
  • SpringBoot2.x 集成 Thymeleaf的詳細(xì)教程

    SpringBoot2.x 集成 Thymeleaf的詳細(xì)教程

    本文主要對SpringBoot2.x集成Thymeleaf及其常用語法進(jìn)行簡單總結(jié),其中SpringBoot使用的2.4.5版本。對SpringBoot2.x 集成 Thymeleaf知識感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • java繪制國際象棋與中國象棋棋盤

    java繪制國際象棋與中國象棋棋盤

    這篇文章主要為大家詳細(xì)介紹了java繪制國際象棋與中國象棋棋盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Java二維數(shù)組與稀疏數(shù)組相互轉(zhuǎn)換實現(xiàn)詳解

    Java二維數(shù)組與稀疏數(shù)組相互轉(zhuǎn)換實現(xiàn)詳解

    在某些應(yīng)用場景中需要大量的二維數(shù)組來進(jìn)行數(shù)據(jù)存儲,但是二維數(shù)組中卻有著大量的無用的位置占據(jù)著內(nèi)存空間,稀疏數(shù)組就是為了優(yōu)化二維數(shù)組,節(jié)省內(nèi)存空間
    2022-09-09
  • Linux下用java -jar運(yùn)行可執(zhí)行jar包的方法教程

    Linux下用java -jar運(yùn)行可執(zhí)行jar包的方法教程

    這篇文章主要給大家介紹了在Linux下用java -jar運(yùn)行可執(zhí)行jar包的方法教程,文中介紹的非常詳細(xì),相信對大家的工作或者學(xué)習(xí)具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • SpringBoot 之啟動流程詳解

    SpringBoot 之啟動流程詳解

    SpringBoot 是一個基于 Spring 框架的快速開發(fā)框架,旨在簡化 Spring 應(yīng)用程序的開發(fā)和部署。在本文中,我們將深入分析 SpringBoot 啟動過程的源代碼,并提供必要的解釋和說明
    2023-04-04
  • Springboot使用異步方法優(yōu)化Service邏輯,提高接口響應(yīng)速度方式

    Springboot使用異步方法優(yōu)化Service邏輯,提高接口響應(yīng)速度方式

    這篇文章主要介紹了Springboot使用異步方法優(yōu)化Service邏輯,提高接口響應(yīng)速度方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Java使用ByteBuffer進(jìn)行多文件合并和拆分的代碼實現(xiàn)

    Java使用ByteBuffer進(jìn)行多文件合并和拆分的代碼實現(xiàn)

    因為驗證證書的需要,需要把證書文件和公鑰給到客戶,考慮到多個文件交互的不便性,所以決定將2個文件合并成一個文件交互給客戶,但是由于是加密文件,采用字符串形式合并后,拆分后文件不可用,本文給大家介紹了Java使用ByteBuffer進(jìn)行多文件合并和拆分,需要的朋友可以參考下
    2024-09-09

最新評論