title: How to get the font name of Text from a PDF?
body: <p>I am looking to extract all different font names of the text in PDF file.  I am using iTextSharp DLL, and below given is my code.</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;
  using iTextSharp.text.pdf.parser;
  using iTextSharp.text.pdf;
  
  namespace GetFontName
  {
      class Program
      {
          static void Main(string[] args)
          {
              PdfReader reader = new PdfReader("C:/Users/agnihotri/Downloads/Test.pdf");
              HashSet&lt;String&gt; names = new HashSet&lt;string&gt;();
              PdfDictionary resources;
              for (int p = 1; p &lt;= reader.NumberOfPages; p++)
              {
                  PdfDictionary dic = reader.GetPageN(p);
                  resources = dic.GetAsDict(PdfName.RESOURCES);
                  if (resources != null)
                  {
                      //gets fonts dictionary
                      PdfDictionary fonts = resources.GetAsDict(PdfName.FONT);
                      if (fonts != null)
                      {
  
                          PdfDictionary font;
  
                          foreach (PdfName key in fonts.Keys)
                          {
                          font = fonts.GetAsDict(key);
                          string name = font.GetAsName(iTextSharp.text.pdf.PdfName.BASEFONT).ToString();
  
                              //check for prefix subsetted font
  
                          if (name.Length &gt; 8 &amp;&amp; name.ToCharArray()[7] == '+')
                          {
                          name = String.Format("%s subset (%s)", name.Substring(8), name.Substring(1, 7));
  
                          }
                          else
                          {
                                  //get type of fully embedded fonts
                          name = name.Substring(1);
                          PdfDictionary desc = font.GetAsDict(PdfName.FONTDESCRIPTOR);
                          if (desc == null)
                          name += "no font descriptor";
                          else if (desc.Get(PdfName.FONTFILE) != null)
                          name += "(Type1) embedded";
                          else if (desc.Get(PdfName.FONTFILE2) != null)
                          name += "(TrueType) embedded ";
                          else if (desc.Get(PdfName.FONTFILE3) != null)
                          name += name;//("+font.GetASName(PdfName.SUBTYPE).ToString().SubSTring(1)+")embedded';
                          }
  
                          names.Add(name);
                          }
                      }
                  }
              }
              var collections = from name in names
              select name;
              foreach (string fname in collections)
              {
              Console.WriteLine(fname);
              }
              Console.Read();
  
          }
      }
  }
  </code></pre>
  
  <p>The output I am getting is "Glyphless Font" no font descriptor" for every pdf file as input.  The link for input file is as follows:</p>
  
  <p><a href="https://drive.google.com/open?id=0B6tD8gqVZtLiM3NYMmVVVllNcWc" rel="nofollow">https://drive.google.com/open?id=0B6tD8gqVZtLiM3NYMmVVVllNcWc</a></p>