Я пытаюсь прочитать все шрифты, используемые в PDF, используя iText7. Для этого я создал IEventListener
, который читает шрифты из TextRenderInfo
как:
private class FontReader : IEventListener
{
public ICollection<string> Fonts { get; }
public FontReader()
{
Fonts = new List<string>();
}
public void EventOccurred(IEventData data, EventType type)
{
if (!(data is TextRenderInfo)) return;
var font = ((TextRenderInfo) data).GetFont();
var fontName = font.GetFontProgram().GetFontNames().GetFontName();
if (!string.IsNullOrEmpty(fontName) && !Fonts.Contains(fontName))
{
Fonts.Add(fontName);
}
}
public ICollection<EventType> GetSupportedEvents()
{
return new HashSet<EventType> {EventType.RENDER_TEXT};
}
}
Это, кажется, работает нормально и позволяет мне читать все шрифты типа 1. Но вызов GetFontProgram().GetFontNames().GetFontName();
для шрифта Type 3 возвращает ноль.
При просмотре шрифтов в Acrobat Reader все же отображается имя для шрифтов Type 3 (см. Скриншот). Как я могу найти это имя через iText7 в C#?