Skip to content
ComPDF
Guides

字体管理

ComPDF SDK 支持读取设备中已有的字体族及其样式,并将其应用于注释、表单、水印、页眉页脚、贝茨码等多种功能。您可以导入自定义字体以设计出更美观的 PDF 文件,满足不同业务场景的需求。

导入字体

默认情况下,SDK 使用设备系统字体,不同地区的设备可能包含不同的字体集。您可以通过导入字体接口来扩展可用的字体样式。

导入字体步骤如下:

  1. 将字体文件放置到指定的文件夹路径。
  2. 使用 ComPDFKit.setImportFontDir(dir, addSysFont) 设置字体目录。
  3. 初始化 SDK。
tsx
// 将 assets 目录中的字体复制到存储中
const fontDir = await CPDFFileUtil.copyAssetsFolderToStorage('extraFonts');

// 确定是否添加系统字体,这会影响 ComPDFKit.getFonts() 返回结果中是否包含系统字体
bool addSysFont = true;

// 设置指定的字体文件夹
await ComPDFKit.setImportFontDir(fontDir, addSysFont);

// 初始化 SDK
await ComPDFKit.initWithPath(Platform.OS == "android" ? "assets://license_key_rn.xml" : "license_key_rn.xml")

注意:字体导入接口必须在初始化 SDK 之前调用。

更新字体

初始化 SDK 后,可使用 ComPDFKit.updateImportFontDir(fontDir, addSysFont: false) 接口刷新字体列表,确保新导入的字体能够被正确识别和使用。

tsx
// 将 assets 目录中的字体复制到存储中
const fontDir = await CPDFFileUtil.copyAssetsFolderToStorage('extraFonts2');

// 更新字体列表
const result = await ComPDFKit.updateImportFontDir(fontDir, false);

获取字体

在创建注释、表单、水印等对象时,可通过 ComPDFKit.getFonts() 获取当前可用的字体列表。

tsx
const fonts = await ComPDFKit.getFonts();
for(const font of fonts) {
  const familyName = font.familyName;
  const styleName = font.styleNames[0];
}

关于字体族与样式名称

  1. Font Family(字体族):

    字体族是指一组具有相同设计风格的字体系列。例如,Helvetica 字体族包含多种样式,如 Helvetica Regular、Helvetica Bold、Helvetica Italic 等,它们都属于 Helvetica 字体族。

  2. Font Style(字体样式):

    字体样式是指字体族中的具体变体,用于区分同一字体族中的不同风格,例如粗体、斜体、正常体等。以 Helvetica 字体族为例,Regular、Bold、Italic 等都是不同的样式名称。