1. 程式人生 > 其它 >Java 替換PDF中的字型

Java 替換PDF中的字型

文件中可通過應用不同的字型來呈現不一樣的視覺效果,通過字型來實現文件佈局、排版等設計需要。應用字型時,可在建立文件時指定字型,也可以用新字型去替換文件中已有的字型。下面,以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>

如需手動匯入的話,可將

Jar包下載到本地,然後解壓,找到lib資料夾下的Spire.Pdf.jar檔案。在IDEA中開啟“Project Structure”並將本地路徑下的jar匯入程式,如圖:

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{ //建立PdfDocument類的物件 PdfDocument pdf = new PdfDocument(); //載入PDF文件 pdf.loadFromFile("input.pdf"); //獲取文件中的所有字型 PdfUsedFont[] fonts = pdf.getUsedFonts(); //遍歷所有字型 for (PdfUsedFont font: fonts) { //獲取字型大小 float fontSize = font.getSize(); //建立新字型 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{
        //建立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();

                //建立新字型
                PdfFont newfont = new PdfFont(PdfFontFamily.Times_Roman, fontSize, PdfFontStyle.Italic);

                //替換Calibri字型
                font.replace(newfont);
            }
        }

        //儲存文件
        pdf.saveToFile("ReplaceSpecificFont.pdf");
        pdf.dispose();
    }
}

—END—