如何通过abcpdf获取嵌入和引用字体的列表?

时间:2017-04-25 14:08:08

标签: c# pdf abcpdf

我可以嵌入字体,添加(引用)字体,设置当前字体,但似乎就是这样。

如何通过abcpdf获取pdf文件中的嵌入和引用字体列表?

3 个答案:

答案 0 :(得分:1)

我不认为ABCpdf提供了一种获取现有PDF中字体列表的方法。没有任何实现。您需要了解PDF内部知识,了解ObjectSoup

还有其他工具可以列出PDF中的字体,例如xpdf包中的pdffonts

答案 1 :(得分:1)

取决于你的情况,但我很幸运使用它与ABCPdf 10。

public IEnumerable<string> EmbeddedFonts
{
    get
    {
        return doc.ObjectSoup.Catalog.GetFonts()
          .Select(x => x.BaseFont).Where(x => 
             !x.StartsWith("Helvetica") && 
             !x.StartsWith("Times") && 
             !x.StartsWith("Zapf")).Distinct().OrderBy(x => x);
    }
}

答案 2 :(得分:0)

您可以使用FontObject类。例如:

List<string> embeddedFonts = new List<string>();
List<string> referencedFonts = new List<string>();
FontObject[] fonts = doc.ObjectSoup.Catalog.GetFonts();
foreach (FontObject font in fonts) {
    if (font.EmbeddedFont == null) {
    referencedFonts.Add(font.BaseFont);
    } else {
    embeddedFonts.Add(font.BaseFont);
    }
}