当前位置: 移动技术网 > IT编程>开发语言>c# > PDF管理控件Aspose.PDF for .Net使用教程:在PDF文件中嵌入字体

PDF管理控件Aspose.PDF for .Net使用教程:在PDF文件中嵌入字体

2019年11月07日  | 移动技术网IT编程  | 我要评论

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)

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网