Java實(shí)現(xiàn)替換PDF中的字體功能
文檔中可通過應(yīng)用不同的字體來呈現(xiàn)不一樣的視覺效果,通過字體來實(shí)現(xiàn)文檔布局、排版等設(shè)計需要。應(yīng)用字體時,可在創(chuàng)建文檔時指定字體,也可以用新字體去替換文檔中已有的字體。下面,以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ù)或者對象沒有的時候一般直接返回的null,那么如何返回統(tǒng)一默認(rèn)值,感興趣的可以了解一下2021-07-07詳解Spring中@Valid和@Validated注解用法
本文將以新增一個員工為功能切入點(diǎn),以常規(guī)寫法為背景,慢慢烘托出?@Valid?和?@Validated?注解用法詳解,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-07-07Java網(wǎng)絡(luò)編程之簡單的服務(wù)端客戶端應(yīng)用實(shí)例
這篇文章主要介紹了Java網(wǎng)絡(luò)編程之簡單的服務(wù)端客戶端應(yīng)用,以實(shí)例形式較為詳細(xì)的分析了java網(wǎng)絡(luò)編程的原理與服務(wù)器端客戶端的實(shí)現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04SpringBoot自定義MessageConvert詳細(xì)講解
正在學(xué)習(xí)SpringBoot,在自定義MessageConverter時發(fā)現(xiàn):為同一個返回值類型配置多個MessageConverter時,可能會發(fā)生響應(yīng)數(shù)據(jù)格式錯誤,或406異常(客戶端無法接收相應(yīng)數(shù)據(jù))。在此記錄一下解決問題以及追蹤源碼的過程2023-01-01Java游戲服務(wù)器系列之Netty相關(guān)知識總結(jié)
今天帶大家來學(xué)習(xí)Java游戲服務(wù)器的相關(guān)知識,文中對Netty作了非常詳細(xì)的介紹,對正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05