private void LoadFontDictionary(DictionaryToken fontDictionary, bool isLenientParsing) { foreach (var pair in fontDictionary.Data) { if (!(pair.Value is IndirectReferenceToken objectKey)) { if (isLenientParsing) { continue; } throw new InvalidOperationException($"The font with name {pair.Key} did not link to an object key. Value was: {pair.Value}."); } var reference = objectKey.Data; currentResourceState[NameToken.Create(pair.Key)] = reference; if (loadedFonts.ContainsKey(reference)) { continue; } var fontObject = DirectObjectFinder.Get <DictionaryToken>(objectKey, scanner); if (fontObject == null) { throw new InvalidOperationException($"Could not retrieve the font with name: {pair.Key} which should have been object {objectKey}"); } loadedFonts[reference] = fontFactory.Get(fontObject, isLenientParsing); } }
private void LoadFontDictionary(PdfDictionary fontDictionary, IRandomAccessRead reader, bool isLenientParsing) { foreach (var pair in fontDictionary) { if (loadedFonts.ContainsKey(pair.Key)) { continue; } if (!(pair.Value is CosObject objectKey)) { if (isLenientParsing) { continue; } throw new InvalidOperationException($"The font with name {pair.Key} did not link to an object key. Value was: {pair.Value}."); } var fontObject = pdfObjectParser.Parse(objectKey.ToIndirectReference(), reader, false) as PdfDictionary; if (fontObject == null) { throw new InvalidOperationException($"Could not retrieve the font with name: {pair.Key} which should have been object {objectKey.GetObjectNumber()}"); } loadedFonts[pair.Key] = fontFactory.Get(fontObject, reader, isLenientParsing); } }