static void PdfSharpTestParseResources(PdfSharp.Pdf.PdfDictionary resources) { PdfSharpTestParseReference(resources.Reference); PdfSharpTestParseElements(resources.Elements); return; }
static void PdfSharpTestParseDictionary(PdfSharp.Pdf.PdfDictionary dictionary) { PdfSharpTestParseElements(dictionary.Elements); if (dictionary.Stream != null) { System.Diagnostics.Debug.WriteLine("[DICTIONARY] " + dictionary.Stream.ToString()); } return; }
static void PdfSharpTestParseReference(PdfSharp.Pdf.Advanced.PdfReference reference) { if (reference == null) { return; } switch (reference.Value.GetType().ToString()) { case "PdfSharp.Pdf.Advanced.PdfContent": PdfSharp.Pdf.Advanced.PdfContent pdfContent = reference.Value as PdfSharp.Pdf.Advanced.PdfContent; String content = System.Text.ASCIIEncoding.ASCII.GetString(pdfContent.Stream.Value); foreach (String currentCommand in content.Split('\n')) { System.Diagnostics.Debug.WriteLine("Command: " + currentCommand); } break; case "PdfSharp.Pdf.PdfDictionary": PdfSharp.Pdf.PdfDictionary dictionary = reference.Value as PdfSharp.Pdf.PdfDictionary; PdfSharpTestParseDictionary(dictionary); break; case "PdfSharp.Pdf.PdfPage": PdfSharp.Pdf.PdfPage pdfPage = reference.Value as PdfSharp.Pdf.PdfPage; break; default: System.Diagnostics.Debug.WriteLine("[REFERENCE PARSE UNKNOWN TYPE] " + reference.Value.GetType().ToString()); break; } return; }
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; }