Я уже давал ответ раньше, но в интересах добавления убедительных примеров к темам на этом сайте (что мне ужасно требовалось три месяца назад), я переберу решение, которое я в итоге использовал.
Я скачал MuPDF и зашел в папку bin, получив файл mutool.exe. Затем я называю это отдельным процессом в C #. Он выполняет вытягивание всех шрифтов, встроенных в файл PDF, и выгружает их в папку, содержащую mutool.exe. Тогда нужно было просто перенести шрифты оттуда в папку, в которой я их хотел.
/// <summary>
/// Extract all fonts from PDF
/// </summary>
/// <param name="strPDFName"></param>
public static void ExtractAll(string strPDFName)
{
if (strMUTOOL != null && strFontFinal != null)
{
Process p = new Process();
p.StartInfo.FileName = strMUTOOL;
p.StartInfo.Arguments = "extract \"" + strPDFName + "\"";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WorkingDirectory = strMUTOOL.Replace("mutool.exe", "").Trim();
p.Start();
p.WaitForExit();
var standardError = p.StandardError.ReadToEnd();
var standardOutput = p.StandardOutput.ReadToEnd();
var exitCode = p.ExitCode;
}
}
Как бы то ни было, большинство этих шрифтов являются файлами CFF, и вам нужно будет конвертировать их, если вы планируете их использовать. Кроме того, как уже было сказано, использование этих шрифтов может представлять собой программное пиратство, если эти шрифты являются платными. Наконец, эти шрифты обычно являются только подмножествами и не содержат полного набора глифов - только глифы, используемые в PDF.