詳解Java如何實(shí)現(xiàn)在PDF中插入,替換或刪除圖像
前言
圖文并茂的內(nèi)容往往讓人看起來更加舒服,如果只是文字內(nèi)容的累加,往往會使讀者產(chǎn)生視覺疲勞。搭配精美的文章配圖則會使文章內(nèi)容更加豐富,增加文章可讀性的同時,也能提升用戶體驗(yàn)。但由于PDF文檔安全性較高,不易對其進(jìn)行修改編輯,那我們要如何在PDF中插入、替換或刪除圖像呢?別擔(dān)心,今天為大家介紹一種高效便捷的方法。我們可以通過編程的方式來實(shí)現(xiàn)此操作。
- 將圖像插入PDF文檔
- 替換PDF文檔中的圖像
- 刪除PDF文檔中的指定圖像
代碼編譯環(huán)境:
IntelliJ IDEA 2018(jdk 1.8.0)
PDF Jar包:Free Spire.PDF for Java 5.1.01.引入jar包
導(dǎo)入方法1:
手動引入。將Free Spire.PDF for Java下載到本地,解壓,找到lib文件夾下的Spire.PDF.jar文件。在IDEA中打開如下界面,將本地路徑中的jar文件引入Java程序:

導(dǎo)入方法2:如果您想通過 Maven安裝,則可以在 pom.xml 文件中添加以下代碼導(dǎo)入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf.free</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>將圖像插入PDF文檔
- 初始化 PdfDocument 類的實(shí)例。
- 使用 PdfDocument.loadFromFile() 方法加載 PDF 文檔。
- 使用 PdfDocument.getPages().get() 方法在 PDF 文檔中獲取所需的頁面。
- 使用 PdfImage.fromFile() 方法加載圖像。
- 指定頁面上圖像區(qū)域的寬度和高度。
- 指定 X 和 Y 坐標(biāo)以開始繪制圖像。
- 使用 PdfPageBase.getCanvas().drawImage() 方法在頁面上繪制圖像。
- 使用 PdfDocument.saveToFile() 方法保存結(jié)果文檔。
完整代碼
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;
public class AddImage {
public static void main(String []args){
//初始化 PdfDocument 類的實(shí)例
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("阿拉斯加犬.pdf");
//獲取所需的頁面
PdfPageBase page = pdf.getPages().get(0);
//加載圖像
PdfImage image = PdfImage.fromFile("圖片1.jpg");
//指定頁面上圖像區(qū)域的寬度和高度
float width = image.getWidth() * 0.30f;
float height = image.getHeight() * 0.30f;
//指定 X 和 Y 坐標(biāo)以開始繪制圖像
float x = 130f;
float y = 240f;
//在頁面指定位置上繪制圖像
page.getCanvas().drawImage(image, x, y, width, height);
//保存結(jié)果文檔
pdf.saveToFile("插入圖片.pdf", FileFormat.PDF);
}
}效果圖

替換PDF文檔中的圖像
以下是替換PDF文檔圖像的具體步驟:
- 初始化 PdfDocument 類的實(shí)例。
- 使用 PdfDocument.loadFromFile() 方法加載 PDF 文檔。
- 使用 PdfDocument.getPages().get() 方法在 PDF 文檔中獲取所需的頁面。
- 使用 PdfImage.fromFile() 方法加載圖像。
- 使用 PdfPageBase.replaceImage() 方法將頁面上的特定圖像替換為加載的圖像。
- 使用 PdfDocument.saveToFile() 方法保存結(jié)果文檔。
完整代碼
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;
public class ReplaceImage {
public static void main(String []args){
//初始化 PdfDocument 類的實(shí)例
PdfDocument doc = new PdfDocument();
//加載 PDF 文檔
doc.loadFromFile("插入圖片.pdf");
//獲取所需的頁面
PdfPageBase page = doc.getPages().get(0);
//加載圖像
PdfImage image = PdfImage.fromFile("圖片2.jpg");
//將頁面上的指定圖像替換為加載的圖像
page.replaceImage(0, image);
//保存結(jié)果文檔
doc.saveToFile("替換圖片.pdf", FileFormat.PDF);
}
}效果圖

刪除PDF文檔中的指定圖像
以下是從 PDF 文檔中刪除圖像的具體步驟:
- 初始化 PdfDocument 類的實(shí)例。
- 使用 PdfDocument.loadFromFile() 方法加載 PDF 文檔。
- 使用 PdfDocument.getPages().get() 方法在 PDF 文檔中獲取所需的頁面。
- 使用 PdfPageBase.deleteImage() 方法刪除頁面上的特定圖像。
- 使用 PdfDocument.saveToFile() 方法保存結(jié)果文檔。
完整代碼
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
public class DeleteImage {
public static void main(String []args){
//初始化 PdfDocument 類的實(shí)例
PdfDocument pdf = new PdfDocument();
//加載 PDF 文檔
pdf.loadFromFile("插入圖片.pdf");
//獲取所需的頁面
PdfPageBase page = pdf.getPages().get(0);
//刪除頁面上的指定圖像
page.deleteImage(0);
//保存結(jié)果文檔
pdf.saveToFile("刪除圖片.pdf", FileFormat.PDF);
}
}效果圖

到此這篇關(guān)于詳解Java如何實(shí)現(xiàn)在PDF中插入,替換或刪除圖像的文章就介紹到這了,更多相關(guān)Java PDF插入 替換 刪除圖像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java ThreadPoolExecutor使用方法簡單介紹
這篇文章主要介紹了java ThreadPoolExecutor使用方法簡單介紹的相關(guān)資料,需要的朋友可以參考下2017-02-02
Java并發(fā)編程之閉鎖與柵欄的實(shí)現(xiàn)
這篇文章主要介紹了Java并發(fā)編程之閉鎖與柵欄的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
SpringCloud?@RefreshScope刷新機(jī)制淺析
RefeshScope這個注解想必大家都用過,在微服務(wù)配置中心的場景下經(jīng)常出現(xiàn),他可以用來刷新Bean中的屬性配置,那大家對他的實(shí)現(xiàn)原理了解嗎?它為什么可以做到動態(tài)刷新呢2023-03-03
Intellij IDEA如何去掉@Autowired 注入警告的方法
這篇文章主要介紹了Intellij IDEA如何去掉@Autowired 注入警告的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Java實(shí)現(xiàn)通過時間獲取8位驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了Java如何通過時間獲取8位驗(yàn)證碼(每兩個小時生成一個),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
java并發(fā)包JUC誕生及詳細(xì)內(nèi)容
這篇文章主要為大家介紹了java并發(fā)包JUC的誕生及JUC增加的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02
java生成jar包并且單進(jìn)程運(yùn)行的實(shí)例
下面小編就為大家分享一篇java生成jar包并且單進(jìn)程運(yùn)行的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12

