本页内容
字体管理
ComPDFKit PDF SDK 支持读取您设备中已有的字族及其样式,并将其设置为注释、表单、水印、页眉页脚、贝茨码等多个功能的字体。这将帮助您设计出美观的 PDF 文件,或使用符合某些规范要求的字体调整和完善您的 PDF 文件。
获取字族
在使用字体管理设置字体时,您需要:
- 取得系统中所有字族名称。
- 选择您需要的字体,取得字体的
CPDFFontName
对象 - 从
CPDFFontName
对象中获取到样式集合 - 选择样式名称后,根据字族名称与样式名称取得
PsName
PsName
对象即可用作设置字体。
以下是代码示例:
java
// 取得系统中所有字族名称
List<CPDFFontName> list = CPDFFont.getOutFontName();
// 选取字族名获取到CPDFFontName对象
CPDFFontName cpdfFontName = list.get(index);
// 获取样式集合
List<String> fontStyles = cpdfFontName.getStyleName();
// 根据字族和字体样式,取得 `PsName` 对象
String psName = CPDFTextAttribute.FontNameHelper.obtainFontName(cpdfFontName.getFamilyName(), styleName);
// 将 `psName` 对象 名称应用到需要设置字体的功能中,具体设置属性方式见对应功能的文档
// 示例:设置FreeText注释字体
CPDFFreetextAnnotation freetextAnnotation = freetextAnnot.onGetAnnotation();
freetextAnnotation.setFreetextDa(new CPDFTextAttribute(psName, fontSize, fontColor));
// 示例:设置Form表单列表框字体
CPDFListboxWidget listBoxWidget = (CPDFListboxWidget) baseAnnotImpl;
listBoxWidget.setFontName(psName);
kotlin
// 取得系统中所有字族名称
val list : List<CPDFFontName> = CPDFFont.getOutFontName()
// 选取字族名获取到CPDFFontName对象
val cpdfFontName : CPDFFontName = list.get(index)
// 获取样式集合
val fontStyles : List<String> = cpdfFontName.getStyleName()
// 根据字族和字体样式,取得 `PsName` 对象
val psName : String = CPDFTextAttribute.FontNameHelper.obtainFontName(cpdfFontName.getFamilyName(), styleName)
// 将 `psName` 对象 名称应用到需要设置字体的功能中,具体设置属性方式见对应功能的文档
// 示例:设置FreeText注释字体
val freetextAnnotation = freetextAnnot.onGetAnnotation()
freetextAnnotation.setFreetextDa(CPDFTextAttribute(psName, fontSize, fontColor))
// 示例:设置Form表单列表框字体
CPDFListboxWidget listBoxWidget = (CPDFListboxWidget) baseAnnotImpl
listBoxWidget.setFontName(psName)
关于字族,样式名称
Font Family(字族):
Font Family 指的是字体的族群或系列名称,通常代表了一组字体,这些字体在设计上有相同的设计风格。
例如,Helvetica字体族拥有多种不同样式的字体,如Helvetica Regular、Helvetica Bold、Helvetica Italic等,它们都属于Helvetica字族。
Font Style(样式):
Font Style 指的是字体的具体样式或变体名称。它通常用于区分同一字族中不同的字体样式,例如粗体、斜体、正常体等。
以 Helvetica 字体族为例,Regular、Bold、Italic 等都是不同样式的名称。
导入字体
目前使用的字体是从设备系统中获取,且每个地区设备的字体集可能有所不同。您可以通过导入字体接口来丰富可用的字体样式。
导入字体,请按照以下步骤操作:
- 将所需的字体文件复制到指定的文件夹路径中。
- 使用
CPDFSdk.setImportFontDir()
设置存放字体的目录。 - 初始化 SDK。
java
// 将 assets 目录中的字体复制到存储中
String fontDir = new File(getFilesDir(), "extraFonts/").getAbsolutePath();
CFileUtils.copyAssetsDirToPhone(this, "extraFonts", getFilesDir().getAbsolutePath());
// 确定是否添加系统字体,这会影响 CPDFFont.getOutFontName() 中是否包含系统字体
boolean addSysFont = true;
// 设置指定的字体文件夹
CPDFSdk.setImportFontDir(savePath, addSysFont);
// 初始化 SDK
CPDFSdk.init(this, "your license key", true);
kotlin
// 将 assets 目录中的字体复制到存储中
val fontDir = File(filesDir, "extraFonts/").absolutePath
CFileUtils.copyAssetsDirToPhone(this, "extraFonts", filesDir.absolutePath)
// 确定是否添加系统字体,这会影响 CPDFFont.getOutFontName() 中是否包含系统字体
val addSysFont = true
// 设置指定的字体文件夹
CPDFSdk.setImportFontDir(savePath, addSysFont)
// 初始化 SDK
CPDFSdk.init(this, "your license key", true)
注意: 字体导入接口必须在初始化 SDK 之前进行配置。请确保移除
AndroidManifest.xml
中的 SDK 初始化配置,改为通过代码进行 SDK 初始化操作。