Disregard my last comment. I'm just confusing things. Thanks for the mention Nenad.
I put some output in each constructor (PdfFontMetricsObject, PdfFontMetricsFreetype, and base_14) and only the PdfFontMetricsObject constructor is called. You probably already knew this anyway. On Wed, Oct 28, 2015 at 9:08 PM, Svetlana Watkins < svetlana.watk...@gmail.com> wrote: > I just thought I would add that the GetGlyphID function and several others > won't work for embedded fonts. That's pretty much it. > > So, the approach I have been taking makes the assumption that these fonts > lie on my system when in fact the fonts are embedded. > > I personally think knowing this requires a deeper understanding of podofo > the average user won't have. It might be worth putting that information > into the documentation. Just a suggestion. > > We have spent some time on this now and have just realized the approach we > have been taking is all wrong. > > On Mon, Oct 26, 2015 at 3:17 AM, Svetlana Watkins < > svetlana.watk...@gmail.com> wrote: > >> Something I forgot to add. In one of the Pdf's I was using, I am able to >> get the font name using: PdfFontMetrics::GetFontname() which returns >> LNCKCK+TimesNewRomanPSMT . I'm beginning to think that the reason the >> PdfFontMetricsObject version of GetGlyphID is being called is due to some >> kind of limitation with my system. I'm using Windows XP SP3. >> >> I even deleted the FontCache file in my Win32 folder and restarted the >> computer (enabling it to be rebuilt) but it hasn't made any difference. >> >> Could it be that the loaded font isn't recognized as something managed by >> Freetype2 or a Base14 font so it's defaulting the PdfFontMetricsObject >> every time? I'm certain my problem has something to do with the font. >> >> >> >> On Mon, Oct 26, 2015 at 3:11 AM, Svetlana Watkins < >> svetlana.watk...@gmail.com> wrote: >> >>> I really appreciate the help with this, thanks very much. I realize >>> you're probably very busy. >>> >>> Unfortunately your code snipped produced the same result. The >>> GetGlyphID function returned 0 again so I placed some messages in the >>> source code to see what was going on. >>> >>> As the PdfFontMetrics object doesn't contain a definition for GetGlyphID >>> (I'm assuming that this is because it's only an abstract class), the >>> PdfFontMetricsObject::GetGlyphID function is being called. >>> >>> Here's the definition of this method: * It explains why I'm getting a >>> zero. * >>> >>> long PdfFontMetricsObject::GetGlyphId( long ) const >>> { >>> // TODO >>> cout << "PdfFontMetricsObject_GetGlyphID Returning" << endl; >>> return 0; // OC 13.08.2010 BugFix: Avoid microsoft compiler error >>> } >>> >>> My coding skills aren't as advanced as any of yours so I'm not sure I >>> understand what the reason is for this? I'm assuming that it's yet to be >>> completed. >>> >>> On the other hand, my program could be referencing this method instead >>> of the method contained in PdfFontMetricsFreetype because of something I've >>> done wrong. >>> >>> Domonik ... The code I posted wasn't just some snipped. It was a small >>> functioning (or malfunctioning) program I wrote to highlight a point. >>> >>> On Tue, Oct 20, 2015 at 1:49 PM, Svetlana Watkins < >>> svetlana.watk...@gmail.com> wrote: >>> >>>> I am having trouble getting the PdfFontMetrics::GetGlyphID(long >>>> lunicode) function to work. I have pasted some very simplified code >>>> below. For the current font some functions are working as shown below. >>>> For example I can successfully get the Char Width and Font Size for each >>>> character but for some reason not the Glyph ID. I am using the latest >>>> version on the Podofo website 0.9.3 but am having trouble with the >>>> subversion link (i'm using SV Tortoise to download the files. Could it be >>>> that this issue has already been fixed with a patch that is only >>>> incorporated in the latest SVN version? >>>> >>>> Could someone please test my code below and maybe indicate what I have >>>> done wrong here? If you look down to the inline comment >>>> "// NOW ATTEMPT TO EXTRACT GLYPH INFORMATION" just below that is where >>>> I have applied the GetGlyphID method. Thanks >>>> >>>> >>>> >>>> >>>> #include <iostream> >>>> #include <string> >>>> #include <cstdlib> >>>> #include <podofo/podofo.h> >>>> #include <stack> >>>> >>>> >>>> using namespace PoDoFo; >>>> using namespace std; >>>> >>>> >>>> PdfMemDocument doc; >>>> int page_count; >>>> PdfPage *page; >>>> >>>> EPdfContentsType type; >>>> PdfVariant var; >>>> const char* token; >>>> >>>> PdfFont *Font; >>>> const PdfFontMetrics *met; >>>> >>>> PdfArray pArray; // for extracting text under TJ operator >>>> int size_of_array; >>>> string TJ_string; >>>> >>>> stack<PdfVariant> PdfStack; >>>> >>>> // THE PURPOSE OF THIS SMALL PROGRAM IS TO SHOW HOW I AM EXTRACTING THE >>>> GLYPH ID. >>>> long GlyphID; >>>> >>>> >>>> int main(int argc, char **argv) >>>> { >>>> try{ >>>> >>>> doc.Load(argv[1]); >>>> page_count = doc.GetPageCount(); >>>> >>>> for(int i = 0; i < page_count;i++) >>>> { >>>> page = doc.GetPage(i); >>>> PdfContentsTokenizer tokenizer(page); // tokenize page >>>> >>>> >>>> >>>> while(tokenizer.ReadNext(type,token,var)) >>>> { >>>> >>>> if(type==ePdfContentsType_Keyword) >>>> { >>>> string keyword; >>>> keyword = token; >>>> >>>> if(keyword == "Tf") >>>> { >>>> >>>> PdfStack.pop(); //pop the font size off the stack. >>>> PdfName name_of_font = PdfStack.top().GetName(); >>>> PdfObject *ofont = >>>> page->GetFromResources(PdfName("Font"),name_of_font); >>>> Font = doc.GetFont(ofont); >>>> met = Font->GetFontMetrics(); // get the font metrics for >>>> current font. >>>> //met is global. >>>> } >>>> >>>> if(keyword == "TJ") >>>> { >>>> >>>> pArray = PdfStack.top().GetArray(); >>>> PdfStack.pop(); >>>> size_of_array = pArray.GetSize(); >>>> >>>> for(int x = 0; x < size_of_array; x++) >>>> { >>>> if(pArray[x].IsHexString()|| pArray[x].IsString()) >>>> { >>>> TJ_string = pArray[x].GetString().GetString(); >>>> >>>> // Now to test the font metrics. >>>> for (int s = 0; s < TJ_string.length(); s++) >>>> { >>>> unsigned char individual_character = >>>> TJ_string[s]; >>>> >>>> //THE BELOW CALL TO CURRENT FONT DATA WORKS FINE >>>> cout << "Font Size is: " << met->GetFontSize() << >>>> endl; >>>> cout << "Character Width is: " << >>>> met->CharWidth(individual_character) << endl; >>>> >>>> // NOW ATTEMPT TO EXTRACT GLYPH INFORMATION >>>> GlyphID = >>>> met->GetGlyphId((long)individual_character); >>>> cout << "************************* THE GLYPH ID IS: >>>> " << GlyphID << endl; >>>> >>>> >>>> } >>>> >>>> } >>>> } >>>> >>>> >>>> } >>>> >>>> >>>> } >>>> else if(type==ePdfContentsType_Variant) >>>> { >>>> PdfStack.push(var); >>>> } >>>> >>>> >>>> } >>>> >>>> } >>>> } >>>> catch(PdfError &err) >>>> { >>>> cout << "The Error is: " << err.what() << endl; >>>> } >>>> >>>> >>>> } >>>> >>> >>> >> >
------------------------------------------------------------------------------
_______________________________________________ Podofo-users mailing list Podofo-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/podofo-users