How to extract embedded font from PDF file?

255 views
Skip to first unread message

Support

unread,
Apr 8, 2010, 8:28:03 PM4/8/10
to PDFTron PDFNet SDK
Q: How to extract embedded font from PDF file?
size_t datasize = font.GetEmbeddedFont().GetRawStreamLength();
Filters::Filter filter = font.GetEmbeddedFont().GetRawStream(true);
std::ofstream f(\"../../TestFiles/Output/file.dat\",
std::ios::binary);
size_t size=0;
do{
UChar* from = filter.Begin();
size = filter.Size();
f.write((const char*)from, size);
filter.Consume(size);
}while(size !=0 );

I rename the saved file with a lots of extension name (ttf, otf) that
windows API AddFontResource() support. Could somebody help me out?

-----------------
A: It seems that there are some error in how you are using the API to
extract the font:

You can use the following code instead:

In C#:

if (stm != null) {
FilterReader reader = new
FilterReader(font.GetEmbeddedFont().GetRawStream(true));
StdFile f = new StdFile(output_path, StdFile.OpenMode.e_write_mode);
FilterWriter writer = new FilterWriter(f);
writer.WriteFilter(reader);
writer.Flush();
f.Close();
}

In C++:

Filter stm(font.GetEmbeddedFont().GetRawStream(true));
if (stm) {
FilterReader reader(stm);
StdFile f(fname, StdFile::e_write_mode);
FilterWriter writer(f);
writer.WriteFilter(reader);
writer.Flush();
}

Ryan

unread,
Jul 15, 2016, 2:24:17 PM7/15/16
to PDFTron PDFNet SDK
StdFile interface has been removed. Here is the updated code.

if (font.IsEmbedded()) {
 
Filter filter = font.GetEmbeddedFont().GetRawStream(true);
  filter
.WriteToFile(output_path, false);
}


Reply all
Reply to author
Forward
0 new messages