static PdfSharp.Pdf.PdfObject PdfSharpGetItem(PdfSharp.Pdf.PdfDocument document, Int32 forObjectId) { PdfSharp.Pdf.PdfObject item = null; foreach (PdfSharp.Pdf.PdfObject currentItem in document.Internals.GetAllObjects()) { if (currentItem.Internals.ObjectID.ObjectNumber == forObjectId) { item = currentItem; break; } } return(item); }
static void PdfSharpTestParsePage(PdfSharp.Pdf.PdfPage page) { foreach (String currentPageElementKey in page.Elements.Keys) { System.Diagnostics.Debug.WriteLine("[Page Element:" + currentPageElementKey + "] " + page.Elements [currentPageElementKey].ToString()); } PdfSharp.Pdf.PdfDictionary pageResources = page.Elements.GetDictionary("/Resources"); if (pageResources != null) { PdfSharp.Pdf.PdfDictionary pageObjects = pageResources.Elements.GetDictionary("/XObject"); } PdfSharp.Pdf.PdfDictionary pageFonts = pageResources.Elements.GetDictionary("/Font"); foreach (String currentElementKey in pageFonts.Elements.Keys) { System.Diagnostics.Debug.WriteLine("[FONT:" + currentElementKey + "]"); PdfSharp.Pdf.Advanced.PdfReference fontReference = pageFonts.Elements[currentElementKey] as PdfSharp.Pdf.Advanced.PdfReference; PdfSharp.Pdf.PdfDictionary fontDictionary = fontReference.Value as PdfSharp.Pdf.PdfDictionary; foreach (String fontElementKey in fontDictionary.Elements.Keys) { String propertyName = fontElementKey; String propertyValue = fontDictionary.Elements [fontElementKey].ToString(); System.Diagnostics.Debug.WriteLine("[FONT:" + currentElementKey + "] | [" + propertyName + ":" + propertyValue + "]"); if (propertyName == "/FontDescriptor") { Int32 fontDescriptorObjectId = Convert.ToInt32(propertyValue.Split(' ')[0]); PdfSharp.Pdf.PdfObject fontDescriptor = PdfSharpGetItem(page.Owner, fontDescriptorObjectId); System.Diagnostics.Debug.WriteLine("DESCRIPTOR (BEGIN)"); foreach (String descriptorElementKey in (fontDescriptor as PdfSharp.Pdf.PdfDictionary).Elements.Keys) { propertyName = descriptorElementKey; propertyValue = (fontDescriptor as PdfSharp.Pdf.PdfDictionary).Elements[descriptorElementKey].ToString(); System.Diagnostics.Debug.WriteLine("[FONT:" + currentElementKey + "] | [" + propertyName + ":" + propertyValue + "]"); } System.Diagnostics.Debug.WriteLine("DESCRIPTOR ( END )"); } } } return; }