Java實(shí)現(xiàn)替換PDF中的字體功能
文檔中可通過應(yīng)用不同的字體來呈現(xiàn)不一樣的視覺效果,通過字體來實(shí)現(xiàn)文檔布局、排版等設(shè)計(jì)需要。應(yīng)用字體時(shí),可在創(chuàng)建文檔時(shí)指定字體,也可以用新字體去替換文檔中已有的字體。下面,以Java代碼展示如何來替換PDF中的已有字體,包括:
替換所有字體
替換指定字體
引入jar
Maven程序中配置pom.xml:
<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>如需手動導(dǎo)入的話,可將 Jar包下載到本地,然后解壓,找到lib文件夾下的Spire.Pdf.jar文件。在IDEA中打開“Project Structure”并將本地路徑下的jar導(dǎo)入程序,如圖:

Java代碼
1. 替換所有字體
思路:加載PDF文檔后,獲取源文檔中的字體,然后定義新字體,替換原有字體,最后保存文檔。
Java
import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfFont;
import com.spire.pdf.graphics.PdfFontFamily;
import com.spire.pdf.graphics.PdfFontStyle;
import com.spire.pdf.graphics.fonts.PdfUsedFont;
public class ReplaceAllFonts {
public static void main(String[] args) throws Exception{
//創(chuàng)建PdfDocument類的對象
PdfDocument pdf = new PdfDocument();
//加載PDF文檔
pdf.loadFromFile("input.pdf");
//獲取文檔中的所有字體
PdfUsedFont[] fonts = pdf.getUsedFonts();
//遍歷所有字體
for (PdfUsedFont font: fonts) {
//獲取字體大小
float fontSize = font.getSize();
//創(chuàng)建新字體
PdfFont newfont = new PdfFont(PdfFontFamily.Times_Roman, fontSize, PdfFontStyle.Italic);
//替換原有字體
font.replace(newfont);
}
//保存文檔
pdf.saveToFile("ReplaceAllFonts.pdf");
pdf.dispose();
}
}
2. 替換指定字體
思路:加載PDF文檔后,查找、獲取文檔中的指定字體,然后定義新字體,替換查找到的原有字體,最后保存文檔。
Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.graphics.*;
import com.spire.pdf.graphics.fonts.PdfUsedFont;
public class ReplaceSpecificFont {
public static void main(String[] args) throws Exception{
//創(chuàng)建PdfDocument類的對象
PdfDocument pdf = new PdfDocument();
//加載PDF文檔
pdf.loadFromFile("sample.pdf");
//獲取文檔中的所有字體
PdfUsedFont[] fonts = pdf.getUsedFonts();
//遍歷所有字體
for (PdfUsedFont font: fonts)
{
//判斷符合條件的字體
if(font.getName().equals("Calibri"))
{
//獲取字體大小
float fontSize = font.getSize();
//創(chuàng)建新字體
PdfFont newfont = new PdfFont(PdfFontFamily.Times_Roman, fontSize, PdfFontStyle.Italic);
//替換Calibri字體
font.replace(newfont);
}
}
//保存文檔
pdf.saveToFile("ReplaceSpecificFont.pdf");
pdf.dispose();
}
}
到此這篇關(guān)于Java實(shí)現(xiàn)替換PDF中的字體功能的文章就介紹到這了,更多相關(guān)Java替換PDF字體內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot配置Jackson返回統(tǒng)一默認(rèn)值的實(shí)現(xiàn)示例
在項(xiàng)目開發(fā)中,我們返回的數(shù)據(jù)或者對象沒有的時(shí)候一般直接返回的null,那么如何返回統(tǒng)一默認(rèn)值,感興趣的可以了解一下2021-07-07
詳解Spring中@Valid和@Validated注解用法
本文將以新增一個(gè)員工為功能切入點(diǎn),以常規(guī)寫法為背景,慢慢烘托出?@Valid?和?@Validated?注解用法詳解,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-07-07
Java網(wǎng)絡(luò)編程之簡單的服務(wù)端客戶端應(yīng)用實(shí)例
這篇文章主要介紹了Java網(wǎng)絡(luò)編程之簡單的服務(wù)端客戶端應(yīng)用,以實(shí)例形式較為詳細(xì)的分析了java網(wǎng)絡(luò)編程的原理與服務(wù)器端客戶端的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
SpringBoot自定義MessageConvert詳細(xì)講解
正在學(xué)習(xí)SpringBoot,在自定義MessageConverter時(shí)發(fā)現(xiàn):為同一個(gè)返回值類型配置多個(gè)MessageConverter時(shí),可能會發(fā)生響應(yīng)數(shù)據(jù)格式錯(cuò)誤,或406異常(客戶端無法接收相應(yīng)數(shù)據(jù))。在此記錄一下解決問題以及追蹤源碼的過程2023-01-01
Java游戲服務(wù)器系列之Netty相關(guān)知識總結(jié)
今天帶大家來學(xué)習(xí)Java游戲服務(wù)器的相關(guān)知識,文中對Netty作了非常詳細(xì)的介紹,對正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05

