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

How can I get list of embedded and referenced fonts via abcpdf?

我可以嵌入字体、添加(参考)字体、设置当前字体,但似乎仅此而已。

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

我认为 ABCpdf 没有提供获取现有 PDF 中字体列表的方法。只是没有任何实现。您需要深入了解 ObjectSoup 并了解 PDF 内部结构。

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

取决于您的情况,但我很幸运将其与 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);
    }
}

您可以使用 FontObject class。例如:

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);
    }
}