private bool LinksAreSame(PdfAnnotation.PdfImportedLink cmpLink, PdfAnnotation.PdfImportedLink outLink)
        {
            // Compare link boxes, page numbers the links refer to, and simple parameters (non-indirect, non-arrays, non-dictionaries)

            if (cmpLink.GetDestinationPage() != outLink.GetDestinationPage())
            {
                return(false);
            }
            if (!cmpLink.GetRect().ToString().Equals(outLink.GetRect().ToString()))
            {
                return(false);
            }

            IDictionary <PdfName, PdfObject> cmpParams = cmpLink.GetParameters();
            IDictionary <PdfName, PdfObject> outParams = outLink.GetParameters();

            if (cmpParams.Count != outParams.Count)
            {
                return(false);
            }

            foreach (KeyValuePair <PdfName, PdfObject> cmpEntry in cmpParams)
            {
                PdfObject cmpObj = cmpEntry.Value;
                if (!outParams.ContainsKey(cmpEntry.Key))
                {
                    return(false);
                }
                PdfObject outObj = outParams[cmpEntry.Key];
                if (cmpObj.Type != outObj.Type)
                {
                    return(false);
                }

                switch (cmpObj.Type)
                {
                case PdfObject.NULL:
                case PdfObject.BOOLEAN:
                case PdfObject.NUMBER:
                case PdfObject.STRING:
                case PdfObject.NAME:
                    if (!cmpObj.ToString().Equals(outObj.ToString()))
                    {
                        return(false);
                    }
                    break;
                }
            }

            return(true);
        }
Example #2
0
        virtual public void TestGetLink()
        {
            string    testFile      = TestResourceUtils.GetResourceAsTempFile(TEST_RESOURCES_PATH, "getLinkTest1.pdf");
            PdfReader currentReader = new PdfReader(testFile);
            Document  document      = new Document(PageSize.A4, 0, 0, 0, 0);
            PdfWriter writer        = PdfWriter.GetInstance(document, new MemoryStream());

            document.Open();
            document.NewPage();
            List <PdfAnnotation.PdfImportedLink> links = currentReader.GetLinks(1);

            PdfAnnotation.PdfImportedLink link = links[0];
            writer.AddAnnotation(link.CreateAnnotation(writer));
            document.Close();

            currentReader.Close();
        }
Example #3
0
        void myproc2(PdfReader currentReader, PdfWriter writer, PdfDocument document)
        {
            int   firstPage = 1, dPage, newDestPage;
            float ee, ff, a, e, f;

            float W = PageSize.A4.Width / 2;
            float H = PageSize.A4.Height / 2;

            for (int page = 1; page <= currentReader.NumberOfPages; page++)
            {
                //PdfImportedPage importedPage = writer.GetImportedPage(currentReader, page);
                a = 0.5f;
                e = (page % 2 == 0) ? W : 0;
                f = (page % 4 == 1 || page % 4 == 2) ? H : 0;
                var links = currentReader.GetLinks(page);
                //a     cb.AddTemplate(importedPage, a, 0, 0, a, e, f);
                for (int j = 0; j < links.Count; j++)
                {
                    PdfAnnotation.PdfImportedLink link = (PdfAnnotation.PdfImportedLink)links[j];
                    if (link.IsInternal())
                    {
                        dPage       = link.GetDestinationPage();
                        newDestPage = (dPage - 1) / 4 + firstPage;
                        ee          = (dPage % 2 == 0) ? W : 0;
                        ff          = (dPage % 4 == 1 || dPage % 4 == 2) ? H : 0;
                        link.SetDestinationPage(newDestPage);
                        link.TransformDestination(a, 0, 0, a, ee, ff);
                    }
                    link.TransformRect(a, 0, 0, a, e, f);
                    writer.AddAnnotation(link.CreateAnnotation(writer));
                }
                if (page % 4 == 0)
                {
                    document.NewPage();
                }
            }
        }