Beispiel #1
0
        static void PdfSharpTest()
        {
            PdfSharp.Pdf.PdfDocument pdfDocument = PdfSharp.Pdf.IO.PdfReader.Open(@"C:\MERCURY\flyer.pdf", PdfSharp.Pdf.IO.PdfDocumentOpenMode.ReadOnly);



            foreach (PdfSharp.Pdf.PdfPage currentPage in pdfDocument.Pages)
            {
                System.Diagnostics.Debug.WriteLine("[Page] " + currentPage.Reference.ToString());

                PdfSharpTestParsePage(currentPage);


                // PdfSharpTextParseElements (currentPage.Elements);

                foreach (PdfSharp.Pdf.PdfItem currentItem in currentPage.Contents)
                {
                    if (currentItem is PdfSharp.Pdf.Advanced.PdfReference)
                    {
                        PdfSharp.Pdf.Advanced.PdfReference currentReference = currentItem as PdfSharp.Pdf.Advanced.PdfReference;

                        PdfSharpTestParseReference(currentReference);
                    }

                    else
                    {
                        System.Diagnostics.Debug.WriteLine("[Page Item] " + currentItem.ToString());
                    }
                }
            }



            return;
        }
Beispiel #2
0
        static void PdfSharpTestParseElements(PdfSharp.Pdf.PdfDictionary.DictionaryElements elements)
        {
            foreach (String currentElementKey in elements.Keys)
            {
                System.Diagnostics.Debug.WriteLine("[Element:" + currentElementKey + "] " + elements[currentElementKey].ToString());

                System.Diagnostics.Debug.WriteLine("[Element:" + currentElementKey + "] " + elements[currentElementKey].GetType().ToString());


                if (currentElementKey == "/Resources")
                {
                    PdfSharpTestParseResources(elements[currentElementKey] as PdfSharp.Pdf.PdfDictionary);
                }


                switch (elements[currentElementKey].GetType().ToString())
                {
                case "PdfSharp.Pdf.Advanced.PdfReference":


                    PdfSharp.Pdf.Advanced.PdfReference reference = elements[currentElementKey] as PdfSharp.Pdf.Advanced.PdfReference;

                    PdfSharpTestParseReference(reference);


                    break;
                }
            }

            return;
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        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;
        }