如何使用Aspose.HTML在HTML转PDF中添加资源文件夹内的TTF字体?
在Aspose.HTML转换HTML到PDF时添加自定义TTF字体的解决方案
我来帮你搞定这个问题!Aspose.HTML确实支持加载自定义字体,但需要通过FontsSettings来配置字体源,下面是具体的实现步骤和代码示例:
核心思路
Aspose.HTML在渲染PDF时默认会使用系统字体,要加载你资源文件夹中的TTF字体,需要通过FontsSettings添加自定义字体源(可以是单个字体文件或整个字体目录),同时在HTML中通过@font-face正确引用字体。
具体实现步骤
1. 配置字体源
你可以选择加载整个字体目录或者单个TTF文件,两种方式的代码如下:
方式一:加载整个字体目录
如果你的资源文件夹下有多个TTF字体,推荐用这种方式:
string dataDir = RunExamples.GetDataDir_Data(); string SimpleStyledFilePath = dataDir + "FirstFile.html"; // 你的字体资源目录路径,比如资源文件夹下的Fonts子目录 string fontsResourceDir = dataDir + "Fonts/"; // 创建PDF渲染选项并配置字体设置 var pdfOptions = new PdfRenderingOptions(); // 添加字体目录作为字体源,第二个参数true表示递归搜索子目录中的字体 pdfOptions.FontsSettings.FontSources = new FontSource[] { new FolderFontSource(fontsResourceDir, true) }; // 加载HTML文档 using var htmlDocument = new HTMLDocument(SimpleStyledFilePath); // 执行HTML到PDF的转换 Converter.ConvertHTML(htmlDocument, pdfOptions, dataDir + "Output_WithCustomFont.pdf");
方式二:加载单个TTF字体文件
如果只需要加载特定的某个TTF字体:
string dataDir = RunExamples.GetDataDir_Data(); string SimpleStyledFilePath = dataDir + "FirstFile.html"; // 单个TTF字体文件的路径 string customFontPath = dataDir + "MyCustomFont.ttf"; var pdfOptions = new PdfRenderingOptions(); pdfOptions.FontsSettings.FontSources = new FontSource[] { new FileFontSource(customFontPath) }; using var htmlDocument = new HTMLDocument(SimpleStyledFilePath); Converter.ConvertHTML(htmlDocument, pdfOptions, dataDir + "Output_WithSingleFont.pdf");
2. 在HTML中引用自定义字体
确保你的HTML文件中通过@font-face声明字体,并在样式中使用:
<!DOCTYPE html> <html> <head> <style> @font-face { font-family: 'MyCustomFont'; src: url('MyCustomFont.ttf') format('truetype'); /* 可选:添加字体的其他属性,比如font-weight、font-style */ } body { font-family: 'MyCustomFont', Arial, sans-serif; } </style> </head> <body> <p>这段文本会使用你的自定义TTF字体渲染!</p> </body> </html>
注意事项
- 确保字体文件路径正确,Aspose.HTML会根据你设置的字体源路径去查找字体文件
- 如果HTML中的
@font-face里的字体文件名和实际TTF文件名一致,Aspose.HTML会优先使用你配置的自定义字体 - 如果你不想在HTML中写
@font-face,也可以通过配置让Aspose.HTML自动匹配字体名称,但推荐显式声明更可靠
内容的提问来源于stack exchange,提问作者Namdeo Karande
相关产品推荐
相关产品推荐

