Я знаю, что прошло много времени с тех пор, как вы спросили об этом, но я подумал, что смогу помочь.
Я не знаю, есть ли какая-нибудь утилита, которая позволит вам извлекать файлы шрифтов, но вы можете сделать это вручную.
В основном PDF-файл - это текстовый файл с различными объектами. Вы можете открыть его в любом текстовом редакторе и найти шрифты.
Шрифты указываются в объектах FontDescriptor, например:
<</Type/FontDescriptor/FontName/ABCDEE+Algerian ... /FontFile2 24 0 R>>
В основном это говорит о том, что шрифт с именем Algerian указан для объекта 24. Вы можете искать документ 24 для объекта со строкой «24 0 obj», после этой строки он отображает свойства потока с файл шрифта и после ключевого слова stream он запускается (его длина определяется в строке после obj).
Этот поток содержит сжатый файл ttf, для его распаковки вы можете использовать этот метод:
private static byte[] DecodeFlateDecodeData(byte[] data)
{
MemoryStream outputStream;
using (outputStream = new MemoryStream())
{
using (var compressedDataStream = new MemoryStream(data))
{
// Remove the first two bytes to skip the header (it isn't recognized by the DeflateStream class)
compressedDataStream.ReadByte();
compressedDataStream.ReadByte();
var deflateStream = new DeflateStream(compressedDataStream, CompressionMode.Decompress, true);
var decompressedBuffer = new byte[1024];
int read;
while ((read = deflateStream.Read(decompressedBuffer, 0, decompressedBuffer.Length)) != 0)
{
outputStream.Write(decompressedBuffer, 0, read);
}
outputStream.Flush();
compressedDataStream.Close();
}
return GetStreamBytes(outputStream);
}
}
Надеюсь, это поможет вам ... или поможет кому-то еще