PDF管理控件Aspose.PDF for .Net使用教程:在PDF文件中嵌入字体
aspose.pdf for .net是一种高pdf处理和解析api,用于在跨平台应用程序中执行文档管理和操作任务。api可以轻松用于生成、修改、转换、渲染、保护和打印pdf文档,而无需使用adobe acrobat。此外,api还提供pdf压缩选项,表格创建和操作,图形和图像功能,广泛的超链接功能,印章和水印任务,扩展的安全控制和自定义字体处理。
在现有的pdf文件中嵌入字体
pdf阅读器支持14种字体的核心,因此无论以何种平台显示文档,都可以以相同方式显示文档。当pdf包含不是14种核心字体之一的字体时,请将其嵌入pdf文件中以避免字体替换。
aspose.pdf for .net支持在现有pdf文件中嵌入字体,可以嵌入完整的字体或字体的子集。要嵌入字体,请使用document该类打开pdf文件。然后使用aspose.pdf.text.font该类将字体嵌入到pdf文件中。要嵌入完整字体,请使用fontclass的isembeded属性。要使用字体的子集,请使用issubset属性。以下代码段显示了如何在pdf文件中嵌入字体。
// 文档目录的路径。 string datadir = runexamples.getdatadir_asposepdf_workingdocuments(); //加载现有的pdf文件 document doc = new document(datadir + "input.pdf"); //遍历所有页面 foreach (page page in doc.pages) { if (page.resources.fonts != null) { foreach (aspose.pdf.text.font pagefont in page.resources.fonts) { //检查字体是否已经嵌入 if (!pagefont.isembedded) pagefont.isembedded = true; } } // 检查form对象 foreach (xform form in page.resources.forms) { if (form.resources.fonts != null) { foreach (aspose.pdf.text.font formfont in form.resources.fonts) { //检查字体是否嵌入 if (!formfont.isembedded) formfont.isembedded = true; } } } } datadir = datadir + "embedfont_out.pdf"; //保存pdf文档 doc.save(datadir);
嵌入标准类型1字体
一些pdf文档的字体来自特殊的adobe字体集。该集合中的字体称为“标准类型1字体”。这套字体包括14种字体,嵌入此类字体需要使用特殊标志,即 aspose.pdf.document.embedstandardfonts。以下是可用于获取嵌入了所有字体(包括标准类型1字体)的文档的代码段:
//文档目录的路径。 string datadir = runexamples.getdatadir_asposepdf_text(); //加载现有的pdf文档 document pdfdocument = new document(datadir + "input.pdf"); // 设置文档的embedstandardfonts属性 pdfdocument.embedstandardfonts = true; foreach (aspose.pdf.page page in pdfdocument.pages) { if (page.resources.fonts != null) { foreach (aspose.pdf.text.font pagefont in page.resources.fonts) { //检查字体是否已经嵌入 if (!pagefont.isembedded) { pagefont.isembedded = true; } } } } pdfdocument.save(datadir + "embeddedfonts-updated_out.pdf");
创建pdf文件时嵌入字体
如果需要使用adobe reader支持的14种核心字体以外的其他字体,则必须在生成pdf文件时嵌入字体说明。如果未嵌入字体信息,则adobe reader将在操作系统上安装它,如果安装在系统上,则会从操作系统中获取它,否则它将根据pdf中的字体描述符构造替代字体。
使用font类的isembedded属性将字体信息嵌入到pdf文件中。将此属性的值设置为'true'会将完整的字体文件嵌入到pdf中,因为它会增加pdf文件的大小。以下是可用于将字体信息嵌入到pdf中的代码段。
//文档目录的路径。 string datadir = runexamples.getdatadir_asposepdf_workingdocuments(); //通过调用其空构造函数实例化pdf对象 aspose.pdf.document doc = new aspose.pdf.document(); // 在pdf对象中创建一个部分 aspose.pdf.page page = doc.pages.add(); aspose.pdf.text.textfragment fragment = new aspose.pdf.text.textfragment(""); aspose.pdf.text.textsegment segment = new aspose.pdf.text.textsegment(" this is a sample text using custom font."); aspose.pdf.text.textstate ts = new aspose.pdf.text.textstate(); ts.font = fontrepository.findfont("arial"); ts.font.isembedded = true; segment.textstate = ts; fragment.segments.add(segment); page.paragraphs.add(fragment); datadir = datadir + "embedfontwhiledoccreation_out.pdf"; //保存pdf文档 doc.save(datadir);
如果您有任何疑问或需求,请随时加入aspose技术交流群(642018183)!