Java開發(fā)之將PDF轉(zhuǎn)換為多種圖片格式的方法指南
引言
在實際開發(fā)中,PDF 文件廣泛用于存儲合同、報告、發(fā)票以及技術(shù)文檔。然而,有時我們需要將 PDF 轉(zhuǎn)換為圖片格式,以便在網(wǎng)頁上顯示、生成縮略圖、進行圖像處理或打印。例如:
- 在網(wǎng)頁或系統(tǒng)中展示 PDF 頁面預(yù)覽;
- 將發(fā)票或報表轉(zhuǎn)換為 PNG/JPG 方便打印或嵌入其他文檔;
- 對 PDF 頁面進行 OCR 或圖像處理。
借助編程方式批量處理 PDF 轉(zhuǎn)圖片,能夠大幅提高效率,保證輸出一致性。本文將詳細介紹如何使用 Java 將 PDF 轉(zhuǎn)換為 PNG、JPG、TIFF 以及 SVG 格式,同時給出完整示例代碼和解析。
環(huán)境準備
引入 Spire.PDF for Java
Spire.PDF for Java 是一個功能強大的 PDF 操作庫,支持 PDF 的讀取、編輯、轉(zhuǎn)換等多種功能。
如果項目使用 Maven,可以在 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>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>11.8.3</version>
</dependency>
</dependencies>
非 Maven 項目可直接下載 JAR 包并導(dǎo)入項目。引入完成后即可使用 import com.spire.pdf.* 操作 PDF 文檔。
PDF 轉(zhuǎn) PNG / JPG
使用場景及說明:
當我們需要在網(wǎng)頁或系統(tǒng)中展示 PDF 頁面預(yù)覽,或者生成報表、發(fā)票等文檔的縮略圖、便于打印或嵌入到其他文檔中時,通常會選擇將 PDF 轉(zhuǎn)為位圖格式(如 PNG 或 JPG)。PNG 支持透明背景,適合網(wǎng)頁顯示;JPG 壓縮率高,適合打印或存儲大量圖像。以下示例展示如何將 PDF 的每一頁轉(zhuǎn)換為高分辨率圖片,并保存為單獨文件。
import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfImageType;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PDFtoImage {
public static void main(String[] args)throws IOException {
// 實例化 PdfDocument
PdfDocument pdf = new PdfDocument();
// 加載 PDF 文檔
pdf.loadFromFile("示例文檔.pdf");
// 遍歷 PDF 每一頁
for (int i = 0; i < pdf.getPages().getCount(); i++) {
// 將頁面保存為 Bitmap 圖片,并設(shè)置水平和垂直分辨率
BufferedImage image = pdf.saveAsImage(i, PdfImageType.Bitmap, 500, 500);
// 保存為 PNG 文件
File file = new File(String.format("轉(zhuǎn)換圖片-%d.png", i));
ImageIO.write(image, "PNG", file);
}
// 關(guān)閉文檔
pdf.close();
}
}
說明:
PdfDocument pdf = new PdfDocument();:創(chuàng)建 PDF 文檔對象。pdf.loadFromFile("示例文檔.pdf");:加載待處理 PDF。pdf.saveAsImage(i, PdfImageType.Bitmap, 500, 500);:將第 i 頁轉(zhuǎn)換為 Bitmap 圖像,并設(shè)置 500×500 DPI。ImageIO.write(image, "PNG", file);:將 BufferedImage 保存為 PNG 文件。將"PNG"改為"JPEG"即可生成 JPG 圖片。
PDF 轉(zhuǎn) SVG
使用場景及說明:
如果希望在網(wǎng)頁或應(yīng)用程序中展示矢量預(yù)覽,而不失真,SVG 是最佳選擇。與位圖不同,矢量圖可以任意縮放,保證清晰度。使用 PDF 轉(zhuǎn) SVG 可以直接將 PDF 頁面轉(zhuǎn)換為可嵌入 HTML 的矢量圖,適合需要動態(tài)縮放或進行前端渲染的場景。
import com.spire.pdf.*;
public class PDFToSVG {
public static void main(String[] args) {
// 創(chuàng)建 PdfDocument 對象
PdfDocument pdf = new PdfDocument();
// 加載 PDF 文檔
pdf.loadFromFile("示例文檔.pdf");
// 將 PDF 保存為 SVG
pdf.saveToFile("轉(zhuǎn)換結(jié)果.svg", FileFormat.SVG);
}
}
說明:
FileFormat.SVG指定輸出為 SVG 格式。- 該方法將 PDF 文檔頁面保存為多個 SVG 文件,適合矢量圖預(yù)覽或網(wǎng)頁嵌入。
PDF 轉(zhuǎn) TIFF
使用場景及說明:
TIFF 格式常用于打印、檔案保存和多頁圖像處理。與 PNG/JPG 不同,TIFF 支持多頁文檔,可以一次性保存整個 PDF 或指定頁碼。此方法適合需要生成多頁打印文檔、檔案存儲或在圖像處理軟件中進一步處理 PDF 內(nèi)容的場景。
import com.spire.pdf.*;
public class PDFtoTiff {
public static void main(String[] args) {
// 加載 PDF 文檔
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("示例文檔.pdf");
// 保存整篇文檔為 TIFF
pdf.saveToTiff("轉(zhuǎn)換結(jié)果.tiff");
// 保存指定頁面范圍為 TIFF(第 2 頁到第 3 頁,設(shè)置 DPI)
pdf.saveToTiff("轉(zhuǎn)換結(jié)果部分.tiff", 1, 2, 400, 600);
}
}
說明:
saveToTiff(String fileName):將整個 PDF 轉(zhuǎn)為 TIFF 文件。saveToTiff(String fileName, int startPage, int endPage, int xDpi, int yDpi):只轉(zhuǎn)換指定頁,并設(shè)置水平和垂直分辨率。
批量 PDF 轉(zhuǎn)圖片
使用場景及說明:
在實際項目中,經(jīng)常會遇到需要處理大量 PDF 文件的需求,例如批量生成報表預(yù)覽圖、發(fā)票圖片或圖像備份。手動處理效率低且容易出錯,使用程序批量處理可大幅提高效率,并保持輸出一致性。
import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfImageType;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class BatchPDFtoImage {
public static void main(String[] args) throws IOException {
// 指定 PDF 文件夾
File folder = new File("pdf文件夾");
File[] files = folder.listFiles((dir, name) -> name.endsWith(".pdf"));
for (File file : files) {
// 加載 PDF
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile(file.getAbsolutePath());
// 遍歷每頁并保存為 PNG
for (int i = 0; i < pdf.getPages().getCount(); i++) {
BufferedImage image = pdf.saveAsImage(i, PdfImageType.Bitmap, 300, 300);
String outputFile = "圖片輸出/" + file.getName().replace(".pdf", "_頁_" + (i + 1) + ".png");
ImageIO.write(image, "PNG", new File(outputFile));
}
System.out.println(file.getName() + " 已成功轉(zhuǎn)換為圖片");
pdf.close();
}
}
}
說明:
- 遍歷指定文件夾中所有 PDF 文件,逐一處理。
- 每頁 PDF 保存為 PNG,并自動生成文件名。
- 設(shè)置 300×300 DPI,適合一般顯示和打印。
總結(jié)
本文詳細介紹了如何使用 Java 將 PDF 文檔轉(zhuǎn)換為多種圖片格式,包括 PNG、JPG、TIFF 和 SVG。通過設(shè)置分辨率、指定頁碼和批量處理,可以滿足不同應(yīng)用場景的需求,如網(wǎng)頁預(yù)覽、打印、圖像處理等。
掌握 PDF 轉(zhuǎn)圖片的編程方法,能夠提高開發(fā)效率,確保輸出效果一致,是開發(fā)者在 PDF 自動化處理中的常用技能。
到此這篇關(guān)于Java開發(fā)之將PDF轉(zhuǎn)換為多種圖片格式的方法指南的文章就介紹到這了,更多相關(guān)Java PDF轉(zhuǎn)圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java8 LocalDate LocalDateTime等時間類用法實例分析
這篇文章主要介紹了java8 LocalDate LocalDateTime等時間類用法,結(jié)合具體實例形式分析了LocalDate、LocalTime、LocalDateTime等日期時間相關(guān)類的功能與具體使用技巧,需要的朋友可以參考下2017-04-04
SpringBoot項目的漏洞修復(fù)經(jīng)驗分享
在局域網(wǎng)環(huán)境下,由于無法連接外網(wǎng)下載Maven包,常見解決方案是在外網(wǎng)環(huán)境搭建相同的開發(fā)環(huán)境以便更新Maven包,本次漏洞掃描包括Tomcat、jackson-databind、fastjson、logback等組件,通常解決方法是升級到更高版本2024-10-10
Java Mybatis中的 ${ } 和 #{ }的區(qū)別使用詳解
這篇文章主要介紹了Mybatis中的 ${ } 和 #{ }的區(qū)別使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
MyBatis Plus實現(xiàn)一對多的查詢場景的三種方法
MyBatis Plus提供了多種簡便的方式來進行一對多子查詢,本文主要介紹了MyBatis Plus實現(xiàn)一對多的查詢場景的三種方法,具有一定的參考價值,感興趣的可以了解一下2024-07-07

