Java 在PDF中应用多种不同字体

我们在创建PDF文档时,常需要绘制不同字体样式、不同语言的文本,此时需要应用不同字体来绘制,如Standard字体、TrueType字体、CJK字体或者自定义的(私有)字体。下面通过Java程序代码来展示如何实现使用以上类型的字体来绘制文本。

程序测试环境如下:

  • 代码编译工具:IntelliJ IDEA

  • Jdk:1.8.0

  • 测试文档:PDF

  • PDF jar包工具:Free Spire.PDF for Java 4.4.1

Jar包获取及导入方法:

1. 下载jar包到本地,解压。

2. 执行如下步骤导入:


导入结果:


Java 代码

 import com.spire.pdf.*;
 import com.spire.pdf.graphics.*;
 
 public class ApplyDifferentFonts {
     public static void main(String[] args) {
         //创建PdfDocument对象
         PdfDocument pdf = new PdfDocument();
 
         //添加一页
         PdfPageBase page = pdf.getPages().add();
 
         //初始化y坐标
         float y = 30;
 
         //使用standard字体绘制文字
         PdfFont standardFont = new PdfFont(PdfFontFamily.Helvetica, 14f);
         page.getCanvas().drawString("Standard Font - Helvetica", standardFont, PdfBrushes.getBlack(), 0, y);
         standardFont = new PdfFont(PdfFontFamily.Times_Roman, 14f);
         page.getCanvas().drawString("Standard Font - Times_Roman", standardFont, PdfBrushes.getBlack(), 0, (y = y + 16));
         standardFont = new PdfFont(PdfFontFamily.Courier, 14f);
         page.getCanvas().drawString("Standard Font - Courier", standardFont, PdfBrushes.getBlack(), 0, (y = y + 16));
 
         //使用true type字体绘制文字
         java.awt.Font font = new java.awt.Font("Arial", java.awt.Font.BOLD, 14);
         PdfTrueTypeFont trueTypeFont = new PdfTrueTypeFont(font);
         page.getCanvas().drawString("TrueType Font - Arial", trueTypeFont, PdfBrushes.getBlue(), 0, (y = y + 30f));
 
         //使用私有字体绘制文字
         String fontFileName = "C:\\Users\\Administrator\\Desktop\\STZHONGS.ttf";
         trueTypeFont = new PdfTrueTypeFont(fontFileName, 14f);
         page.getCanvas().drawString("Private Font: 华文宋体", trueTypeFont, PdfBrushes.getDarkGreen(), 0, (y = y + 30f));
 
         //使用cjk字体绘制文字
         PdfCjkStandardFont cjkFont = new PdfCjkStandardFont(PdfCjkFontFamily.Monotype_Hei_Medium, 14f);
         page.getCanvas().drawString("你 好", cjkFont, PdfBrushes.getDeepPink(), 0, (y = y + 30f));
         cjkFont = new PdfCjkStandardFont(PdfCjkFontFamily.Hanyang_Systems_Gothic_Medium, 14f);
         page.getCanvas().drawString("こんにちは", cjkFont, PdfBrushes.getOrangeRed(), 0, (y = y + 16f));
         cjkFont = new PdfCjkStandardFont(PdfCjkFontFamily.Hanyang_Systems_Shin_Myeong_Jo_Medium, 14f);
         page.getCanvas().drawString("안녕하세요", cjkFont, PdfBrushes.getPurple(), 0, (y = y + 16f));
 
         //保存文档
         pdf.saveToFile("ApplyDifferdentFonts.pdf");
         pdf.dispose();
     }
 }

字体应用效果:


—End—



请使用浏览器的分享功能分享到微信等