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òng)導(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類的對(duì)象
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類的對(duì)象
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot中整合Ehcache實(shí)現(xiàn)熱點(diǎn)數(shù)據(jù)緩存的詳細(xì)過程
這篇文章主要介紹了SpringBoot中整合Ehcache實(shí)現(xiàn)熱點(diǎn)數(shù)據(jù)緩存,SpringBoot 中使用 Ehcache 比較簡(jiǎn)單,只需要簡(jiǎn)單配置,說白了還是 Spring Cache 的用法,合理使用緩存機(jī)制,可以很好地提高項(xiàng)目的響應(yīng)速度,需要的朋友可以參考下2023-04-04
java數(shù)據(jù)結(jié)構(gòu)和算法學(xué)習(xí)之漢諾塔示例
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)和算法中的漢諾塔示例,需要的朋友可以參考下2014-02-02
Java通過在主循環(huán)中判斷Boolean來停止線程的方法示例
這篇文章主要介紹了Java通過在主循環(huán)中判斷Boolean來停止線程的方法,結(jié)合具體實(shí)例形式分析了java針對(duì)線程的判斷與停止操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04
解決BigDecimal轉(zhuǎn)long丟失精度的問題
這篇文章主要介紹了解決BigDecimal轉(zhuǎn)long丟失精度的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12

