Exemple #1
0
        public virtual void PrimitivesStringTest()
        {
            String      filename = "primitivesStringTest.pdf";
            PdfDocument pdfDoc   = new PdfDocument(new PdfWriter(destinationFolder + filename));

            for (int i = 0; i < PageCount; i++)
            {
                PdfPage  page  = pdfDoc.AddNewPage();
                PdfArray array = GeneratePdfArrayWithStrings(null, false);
                page.GetPdfObject().Put(TestArray, array);
                array.Flush();
                page.Flush();
            }
            pdfDoc.Close();
        }
Exemple #2
0
        public virtual void SimplePagesTest()
        {
            String      filename  = "simplePagesTest.pdf";
            int         pageCount = 111;
            PdfDocument pdfDoc    = new PdfDocument(new PdfWriter(destinationFolder + filename));

            for (int i = 0; i < pageCount; i++)
            {
                PdfPage page = pdfDoc.AddNewPage();
                page.GetPdfObject().Put(PageNum, new PdfNumber(i + 1));
                page.Flush();
            }
            pdfDoc.Close();
            VerifyPagesOrder(destinationFolder + filename, pageCount);
        }
        public virtual void UseObjectForMultipleTimes4()
        {
            PdfDocument   pdfDoc     = new PdfDocument(new PdfWriter(destinationFolder + "useObjectForMultipleTimes4.pdf"));
            PdfDictionary helloWorld = (PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc);

            helloWorld.Put(new PdfName("Hello"), new PdfString("World"));
            PdfPage page = pdfDoc.AddNewPage();

            page.GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld);
            page.Flush();
            pdfDoc.GetCatalog().GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld);
            helloWorld.Flush();
            pdfDoc.Close();
            ValidateUseObjectForMultipleTimesTest(destinationFolder + "useObjectForMultipleTimes4.pdf");
        }
        public virtual void UseObjectForMultipleTimes1()
        {
            FileStream    fos        = new FileStream(destinationFolder + "useObjectForMultipleTimes1.pdf", FileMode.Create);
            PdfWriter     writer     = new PdfWriter(fos);
            PdfDocument   pdfDoc     = new PdfDocument(writer);
            PdfDictionary helloWorld = ((PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc));

            helloWorld.Put(new PdfName("Hello"), new PdfString("World"));
            PdfPage page = pdfDoc.AddNewPage();

            page.GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld);
            page.Flush();
            pdfDoc.GetCatalog().GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld);
            pdfDoc.Close();
            ValidateUseObjectForMultipleTimesTest(destinationFolder + "useObjectForMultipleTimes1.pdf");
        }
        public virtual void ReversePagesTest()
        {
            String      filename  = "reversePagesTest.pdf";
            int         pageCount = 111;
            PdfDocument pdfDoc    = new PdfDocument(new PdfWriter(destinationFolder + filename));

            for (int i = pageCount; i > 0; i--)
            {
                PdfPage page = new PdfPage(pdfDoc, pdfDoc.GetDefaultPageSize());
                pdfDoc.AddPage(1, page);
                page.GetPdfObject().Put(PageNum, new PdfNumber(i));
                page.Flush();
            }
            pdfDoc.Close();
            VerifyPagesOrder(destinationFolder + filename, pageCount);
        }
        private void RunCustomXmpTest(String name, String xmp)
        {
            String      outPath = destinationFolder + name + ".pdf";
            String      cmpPath = sourceFolder + "cmp_" + name + ".pdf";
            PdfDocument pdfDoc  = new PdfDocument(new PdfWriter(outPath));
            PdfPage     page    = pdfDoc.AddNewPage();

            page.Flush();
            pdfDoc.SetXmpMetadata(xmp.GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1));
            pdfDoc.Close();
            CompareTool compareTool = new CompareTool();

            NUnit.Framework.Assert.IsNull(compareTool.CompareByContent(outPath, cmpPath, destinationFolder, "diff_" +
                                                                       name + "_"));
            NUnit.Framework.Assert.IsNull(compareTool.CompareDocumentInfo(outPath, cmpPath));
        }
        public virtual void CopyObject6()
        {
            FileStream    fos        = new FileStream(destinationFolder + "copyObject6_1.pdf", FileMode.Create);
            PdfWriter     writer     = new PdfWriter(fos);
            PdfDocument   pdfDoc     = new PdfDocument(writer);
            PdfDictionary helloWorld = ((PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc));

            helloWorld.Put(new PdfName("Hello"), new PdfString("World"));
            PdfPage page = pdfDoc.AddNewPage();

            page.GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld);
            pdfDoc.Close();
            pdfDoc     = new PdfDocument(new PdfReader(destinationFolder + "copyObject6_1.pdf"));
            helloWorld = (PdfDictionary)pdfDoc.GetPage(1).GetPdfObject().Get(new PdfName("HelloWorld"));
            PdfDocument pdfDoc1 = new PdfDocument(new PdfWriter(new FileStream(destinationFolder + "copyObject6_2.pdf"
                                                                               , FileMode.Create)));
            PdfPage page1 = pdfDoc1.AddNewPage();

            page1.GetPdfObject().Put(new PdfName("HelloWorldCopy1"), ((PdfDictionary)helloWorld.CopyTo(pdfDoc1)));
            page1.GetPdfObject().Put(new PdfName("HelloWorldCopy2"), ((PdfDictionary)helloWorld.CopyTo(pdfDoc1, true))
                                     );
            page1.GetPdfObject().Put(new PdfName("HelloWorldCopy3"), ((PdfDictionary)helloWorld.CopyTo(pdfDoc1, false)
                                                                      ));
            page1.Flush();
            pdfDoc.Close();
            pdfDoc1.Close();
            PdfReader   reader      = new PdfReader(destinationFolder + "copyObject6_2.pdf");
            PdfDocument pdfDocument = new PdfDocument(reader);

            NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
            PdfObject            obj1 = pdfDocument.GetPage(1).GetPdfObject().Get(new PdfName("HelloWorldCopy1"));
            PdfIndirectReference ref1 = obj1.GetIndirectReference();

            NUnit.Framework.Assert.AreEqual(6, ref1.objNr);
            NUnit.Framework.Assert.AreEqual(0, ref1.genNr);
            PdfObject            obj2 = pdfDocument.GetPage(1).GetPdfObject().Get(new PdfName("HelloWorldCopy2"));
            PdfIndirectReference ref2 = obj2.GetIndirectReference();

            NUnit.Framework.Assert.AreEqual(7, ref2.GetObjNumber());
            NUnit.Framework.Assert.AreEqual(0, ref2.GetGenNumber());
            PdfObject            obj3 = pdfDocument.GetPage(1).GetPdfObject().Get(new PdfName("HelloWorldCopy3"));
            PdfIndirectReference ref3 = obj3.GetIndirectReference();

            NUnit.Framework.Assert.AreEqual(7, ref3.GetObjNumber());
            NUnit.Framework.Assert.AreEqual(0, ref3.GetGenNumber());
            reader.Close();
        }
Exemple #8
0
        public virtual void PrimitivesIntNumberTest()
        {
            String      filename = "primitivesIntNumberTest.pdf";
            FileStream  fos      = new FileStream(destinationFolder + filename, FileMode.Create);
            PdfWriter   writer   = new PdfWriter(fos);
            PdfDocument pdfDoc   = new PdfDocument(writer);

            for (int i = 0; i < PageCount; i++)
            {
                PdfPage  page  = pdfDoc.AddNewPage();
                PdfArray array = GeneratePdfArrayWithIntNumbers(null, false);
                page.GetPdfObject().Put(TestArray, array);
                array.Flush();
                page.Flush();
            }
            pdfDoc.Close();
        }
 public virtual void CopyObject3()
 {
     {
         FileStream  fos1    = new FileStream(destinationFolder + "copyObject3_1.pdf", FileMode.Create);
         PdfWriter   writer1 = new PdfWriter(fos1);
         PdfDocument pdfDoc1 = new PdfDocument(writer1);
         PdfPage     page1   = pdfDoc1.AddNewPage();
         page1.Flush();
         PdfDictionary catalog1 = pdfDoc1.GetCatalog().GetPdfObject();
         PdfArray      arr1     = ((PdfArray) new PdfArray().MakeIndirect(pdfDoc1));
         PdfArray      arr2     = ((PdfArray) new PdfArray().MakeIndirect(pdfDoc1));
         arr1.Add(arr2);
         PdfDictionary dic1 = ((PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc1));
         arr2.Add(dic1);
         PdfDictionary dic2 = ((PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc1));
         dic1.Put(new PdfName("dic2"), dic2);
         PdfName arr1Name = new PdfName("arr1");
         dic2.Put(arr1Name, arr1);
         catalog1.Put(arr1Name, arr1);
         pdfDoc1.Close();
         PdfDocument pdfDoc1R = new PdfDocument(new PdfReader(destinationFolder + "copyObject3_1.pdf"));
         arr1 = (PdfArray)pdfDoc1R.GetCatalog().GetPdfObject().Get(arr1Name);
         FileStream  fos2    = new FileStream(destinationFolder + "copyObject3_2.pdf", FileMode.Create);
         PdfWriter   writer2 = new PdfWriter(fos2);
         PdfDocument pdfDoc2 = new PdfDocument(writer2);
         PdfPage     page2   = pdfDoc2.AddNewPage();
         page2.Flush();
         PdfDictionary catalog2 = pdfDoc2.GetCatalog().GetPdfObject();
         catalog2.Put(arr1Name, ((PdfArray)arr1.CopyTo(pdfDoc2)));
         pdfDoc1R.Close();
         pdfDoc2.Close();
     }
     {
         PdfReader   reader      = new PdfReader(destinationFolder + "copyObject3_2.pdf");
         PdfDocument pdfDocument = new PdfDocument(reader);
         NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
         PdfDictionary catalog = pdfDocument.GetCatalog().GetPdfObject();
         PdfArray      arr1    = catalog.GetAsArray(new PdfName("arr1"));
         PdfArray      arr2    = arr1.GetAsArray(0);
         PdfDictionary dic1    = arr2.GetAsDictionary(0);
         PdfDictionary dic2    = dic1.GetAsDictionary(new PdfName("dic2"));
         NUnit.Framework.Assert.AreEqual(arr1, dic2.GetAsArray(new PdfName("arr1")));
         reader.Close();
     }
 }
Exemple #10
0
        public virtual void CreateDocumentFromImages2()
        {
            String      destinationDocument = destinationFolder + "documentFromImages2.pdf";
            FileStream  fos      = new FileStream(destinationDocument, FileMode.Create);
            PdfWriter   writer   = new PdfWriter(fos);
            PdfDocument document = new PdfDocument(writer);
            ImageData   image    = ImageDataFactory.Create(sourceFolder + "itext.jpg");
            PdfPage     page     = document.AddNewPage();
            PdfCanvas   canvas   = new PdfCanvas(page);

            canvas.AddImage(image, 50, 500, 100, true);
            canvas.AddImage(image, 200, 500, 100, false).Flush();
            canvas.Release();
            page.Flush();
            document.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationDocument, sourceFolder + "cmp_documentFromImages2.pdf"
                                                                             , destinationFolder, "diff_"));
        }
Exemple #11
0
        public virtual void FlushingPageResourcesMadeIndependent()
        {
            String      inputFile  = sourceFolder + "100pagesSharedResDict.pdf";
            String      outputFile = destinationFolder + "flushingPageResourcesMadeIndependent.pdf";
            PdfDocument pdf        = new PdfDocument(new PdfReader(inputFile), new PdfWriter(outputFile));
            int         numOfAddedXObjectsPerPage = 10;

            for (int i = 1; i <= pdf.GetNumberOfPages(); ++i)
            {
                PdfPage       sourcePage = pdf.GetPage(i);
                PdfDictionary res        = sourcePage.GetPdfObject().GetAsDictionary(PdfName.Resources);
                PdfDictionary resClone   = new PdfDictionary();
                // clone dictionary manually to ensure this object is direct and is flushed together with the page
                foreach (KeyValuePair <PdfName, PdfObject> e in res.EntrySet())
                {
                    resClone.Put(e.Key, e.Value.Clone());
                }
                sourcePage.GetPdfObject().Put(PdfName.Resources, resClone);
                PdfCanvas pdfCanvas = new PdfCanvas(sourcePage);
                pdfCanvas.SaveState();
                for (int j = 0; j < numOfAddedXObjectsPerPage; ++j)
                {
                    PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.Create(sourceFolder + "simple.jpg"));
                    pdfCanvas.AddXObject(xObject, new Rectangle(36, 720 - j * 150, 20, 20));
                    xObject.MakeIndirect(pdf).Flush();
                }
                pdfCanvas.RestoreState();
                pdfCanvas.Release();
                sourcePage.Flush();
            }
            VerifyFlushedObjectsNum(pdf, 1416, 1400, 0);
            pdf.Close();
            PrintOutputPdfNameAndDir(outputFile);
            PdfDocument result    = new PdfDocument(new PdfReader(outputFile));
            PdfObject   page15Res = result.GetPage(15).GetPdfObject().Get(PdfName.Resources, false);
            PdfObject   page34Res = result.GetPage(34).GetPdfObject().Get(PdfName.Resources, false);

            NUnit.Framework.Assert.IsTrue(page15Res.IsDictionary());
            NUnit.Framework.Assert.AreEqual(numOfAddedXObjectsPerPage, ((PdfDictionary)page15Res).GetAsDictionary(PdfName
                                                                                                                  .XObject).Size());
            NUnit.Framework.Assert.IsTrue(page34Res.IsDictionary());
            NUnit.Framework.Assert.AreNotEqual(page15Res, page34Res);
            result.Close();
        }
        public virtual void EgsTest1()
        {
            String      destinationDocument = destinationFolder + "egsTest1.pdf";
            FileStream  fos      = new FileStream(destinationDocument, FileMode.Create);
            PdfWriter   writer   = new PdfWriter(fos);
            PdfDocument document = new PdfDocument(writer);
            //Create page and canvas
            PdfPage   page   = document.AddNewPage();
            PdfCanvas canvas = new PdfCanvas(page);
            //Create ExtGState and fill it with line width and font
            PdfExtGState egs = new PdfExtGState();

            egs.GetPdfObject().Put(PdfName.LW, new PdfNumber(5));
            PdfArray font    = new PdfArray();
            PdfFont  pdfFont = PdfFontFactory.CreateFont(FontConstants.COURIER);

            pdfFont.Flush();
            font.Add(pdfFont.GetPdfObject());
            font.Add(new PdfNumber(24));
            egs.GetPdfObject().Put(PdfName.Font, font);
            //Write ExtGState
            canvas.SetExtGState(egs);
            //Write text to check that font from ExtGState is applied
            canvas.BeginText();
            canvas.MoveText(50, 600);
            canvas.ShowText("Courier, 24pt");
            canvas.EndText();
            //Draw line to check if ine width is applied
            canvas.MoveTo(50, 500);
            canvas.LineTo(300, 500);
            canvas.Stroke();
            //Write text again to check that font from page resources and font from ExtGState is the same.
            canvas.BeginText();
            canvas.SetFontAndSize(pdfFont, 36);
            canvas.MoveText(50, 400);
            canvas.ShowText("Courier, 36pt");
            canvas.EndText();
            canvas.Release();
            page.Flush();
            document.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationDocument, sourceFolder + "cmp_egsTest1.pdf"
                                                                             , destinationFolder, "diff_"));
        }
        public virtual void Copying2()
        {
            FileStream  fos1    = new FileStream(destinationFolder + "copying2_1.pdf", FileMode.Create);
            PdfWriter   writer1 = new PdfWriter(fos1);
            PdfDocument pdfDoc1 = new PdfDocument(writer1);

            for (int i = 0; i < 10; i++)
            {
                PdfPage page1 = pdfDoc1.AddNewPage();
                page1.GetContentStream(0).GetOutputStream().Write(ByteUtils.GetIsoBytes("%page " + (i + 1).ToString() + "\n"
                                                                                        ));
                page1.Flush();
            }
            pdfDoc1.Close();
            FileStream fis1    = new FileStream(destinationFolder + "copying2_1.pdf", FileMode.Open, FileAccess.Read);
            PdfReader  reader1 = new PdfReader(fis1);

            pdfDoc1 = new PdfDocument(reader1);
            FileStream  fos2    = new FileStream(destinationFolder + "copying2_2.pdf", FileMode.Create);
            PdfWriter   writer2 = new PdfWriter(fos2);
            PdfDocument pdfDoc2 = new PdfDocument(writer2);

            for (int i_1 = 0; i_1 < 10; i_1++)
            {
                if (i_1 % 2 == 0)
                {
                    pdfDoc2.AddPage(pdfDoc1.GetPage(i_1 + 1).CopyTo(pdfDoc2));
                }
            }
            pdfDoc2.Close();
            pdfDoc1.Close();
            PdfReader   reader      = new PdfReader(destinationFolder + "copying2_2.pdf");
            PdfDocument pdfDocument = new PdfDocument(reader);

            NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
            for (int i_2 = 0; i_2 < 5; i_2++)
            {
                byte[] bytes = pdfDocument.GetPage(i_2 + 1).GetContentBytes();
                NUnit.Framework.Assert.AreEqual("%page " + (i_2 * 2 + 1).ToString() + "\n", iText.IO.Util.JavaUtil.GetStringForBytes
                                                    (bytes));
            }
            reader.Close();
        }
        public virtual void CopyObject4()
        {
            FileStream  fos1    = new FileStream(destinationFolder + "copyObject4_1.pdf", FileMode.Create);
            PdfWriter   writer1 = new PdfWriter(fos1);
            PdfDocument pdfDoc1 = new PdfDocument(writer1);
            PdfPage     page1   = pdfDoc1.AddNewPage();

            page1.Flush();
            PdfDictionary    catalog1 = pdfDoc1.GetCatalog().GetPdfObject();
            PdfStream        stream1  = ((PdfStream) new PdfStream().MakeIndirect(pdfDoc1));
            List <PdfObject> tmpArray = new List <PdfObject>(3);

            tmpArray.Add(new PdfNumber(1));
            tmpArray.Add(new PdfNumber(2));
            tmpArray.Add(new PdfNumber(3));
            stream1.GetOutputStream().Write(new PdfArray(tmpArray));
            catalog1.Put(new PdfName("stream"), stream1);
            pdfDoc1.Close();
            PdfDocument pdfDoc1R = new PdfDocument(new PdfReader(destinationFolder + "copyObject4_1.pdf"));

            stream1 = (PdfStream)pdfDoc1R.GetCatalog().GetPdfObject().Get(new PdfName("stream"));
            FileStream  fos2    = new FileStream(destinationFolder + "copyObject4_2.pdf", FileMode.Create);
            PdfWriter   writer2 = new PdfWriter(fos2);
            PdfDocument pdfDoc2 = new PdfDocument(writer2);
            PdfPage     page2   = pdfDoc2.AddNewPage();

            page2.Flush();
            PdfDictionary catalog2 = pdfDoc2.GetCatalog().GetPdfObject();

            catalog2.Put(new PdfName("stream"), ((PdfStream)stream1.CopyTo(pdfDoc2)));
            pdfDoc1R.Close();
            pdfDoc2.Close();
            PdfReader   reader      = new PdfReader(destinationFolder + "copyObject4_2.pdf");
            PdfDocument pdfDocument = new PdfDocument(reader);

            NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
            PdfDictionary catalog = pdfDocument.GetCatalog().GetPdfObject();
            PdfStream     stream  = (PdfStream)catalog.GetAsStream(new PdfName("stream"));

            byte[] bytes = stream.GetBytes();
            NUnit.Framework.Assert.AreEqual(ByteUtils.GetIsoBytes("[1 2 3]"), bytes);
            reader.Close();
        }
Exemple #15
0
        public virtual void TestExcessiveXrefEntriesForCopyXObject()
        {
            PdfDocument inputPdf  = new PdfDocument(new PdfReader(sourceFolder + "input500.pdf"));
            PdfDocument outputPdf = new PdfDocument(new PdfWriter(destinationFolder + "output500.pdf"));
            float       scaleX    = 595f / 612f;
            float       scaleY    = 842f / 792f;

            for (int i = 1; i <= inputPdf.GetNumberOfPages(); ++i)
            {
                PdfPage        sourcePage   = inputPdf.GetPage(i);
                PdfFormXObject pageCopy     = sourcePage.CopyAsFormXObject(outputPdf);
                PdfPage        page         = outputPdf.AddNewPage(PageSize.A4);
                PdfCanvas      outputCanvas = new PdfCanvas(page);
                outputCanvas.AddXObject(pageCopy, scaleX, 0, 0, scaleY, 0, 0);
                page.Flush();
            }
            outputPdf.Close();
            inputPdf.Close();
            NUnit.Framework.Assert.IsNotNull(outputPdf.GetXref());
            NUnit.Framework.Assert.AreEqual(500, outputPdf.GetXref().Size() - inputPdf.GetXref().Size());
        }
        public virtual void AddFlushedPageTest()
        {
            PdfWriter   writer = new PdfWriter(new MemoryStream());
            PdfDocument pdfDoc = new PdfDocument(writer);
            PdfPage     page   = pdfDoc.AddNewPage();
            bool        error  = false;

            try {
                page.Flush();
                pdfDoc.RemovePage(page);
                pdfDoc.AddPage(page);
                pdfDoc.Close();
            }
            catch (PdfException e) {
                if (PdfException.FlushedPageCannotBeAddedOrInserted.Equals(e.Message))
                {
                    error = true;
                }
            }
            NUnit.Framework.Assert.IsTrue(error);
        }
Exemple #17
0
        public virtual void StructElemTest07()
        {
            PdfWriter writer = new PdfWriter(destinationFolder + "structElemTest07.pdf");

            writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION);
            PdfDocument document = new PdfDocument(writer);

            document.SetTagged();
            PdfStructElem doc    = document.GetStructTreeRoot().AddKid(new PdfStructElem(document, PdfName.Document));
            PdfPage       page   = document.AddNewPage();
            PdfCanvas     canvas = new PdfCanvas(page);

            canvas.BeginText();
            canvas.SetFontAndSize(PdfFontFactory.CreateFont(StandardFonts.COURIER), 24);
            canvas.SetTextMatrix(1, 0, 0, 1, 32, 512);
            PdfStructElem paragraph = doc.AddKid(new PdfStructElem(document, PdfName.P));
            PdfStructElem span1     = paragraph.AddKid(new PdfStructElem(document, PdfName.Span, page));

            canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrNumber(page, span1))));
            canvas.ShowText("Hello ");
            canvas.CloseTag();
            PdfStructElem span2 = paragraph.AddKid(new PdfStructElem(document, new PdfName("Chunk"), page));

            canvas.OpenTag(new CanvasTag(span2.AddKid(new PdfMcrNumber(page, span2))));
            canvas.ShowText("World");
            canvas.CloseTag();
            canvas.EndText();
            canvas.Release();
            PdfNamespace @namespace = new PdfNamespace("http://www.w3.org/1999/xhtml");

            span1.SetNamespace(@namespace);
            span1.AddRef(span2);
            span1.SetPhoneticAlphabet(PdfName.ipa);
            span1.SetPhoneme(new PdfString("Heeeelllloooooo"));
            @namespace.AddNamespaceRoleMapping(StandardRoles.SPAN, StandardRoles.SPAN);
            document.GetStructTreeRoot().AddNamespace(@namespace);
            page.Flush();
            document.Close();
            CompareResult("structElemTest07.pdf", "cmp_structElemTest07.pdf", "diff_structElem_07_");
        }
        public virtual void RemoveFlushedPage()
        {
            String      filename                = "removeFlushedPage.pdf";
            int         pageCount               = 10;
            PdfDocument pdfDoc                  = new PdfDocument(new PdfWriter(destinationFolder + filename));
            PdfPage     removedPage             = pdfDoc.AddNewPage();
            int         removedPageObjectNumber = removedPage.GetPdfObject().GetIndirectReference().GetObjNumber();

            removedPage.Flush();
            pdfDoc.RemovePage(removedPage);
            for (int i = 0; i < pageCount; i++)
            {
                PdfPage page = pdfDoc.AddNewPage();
                page.GetPdfObject().Put(PageNum, new PdfNumber(i + 1));
                page.Flush();
            }
            NUnit.Framework.Assert.IsTrue(pdfDoc.RemovePage(pdfDoc.GetPage(pageCount)), "Remove last page");
            NUnit.Framework.Assert.IsFalse(pdfDoc.GetXref().Get(removedPageObjectNumber).CheckState(PdfObject.FREE), "Free reference"
                                           );
            pdfDoc.Close();
            VerifyPagesOrder(destinationFolder + filename, pageCount - 1);
        }
Exemple #19
0
        public virtual void CreateDocumentWithForms()
        {
            String      destinationDocument = destinationFolder + "documentWithForms1.pdf";
            FileStream  fos      = new FileStream(destinationDocument, FileMode.Create);
            PdfWriter   writer   = new PdfWriter(fos);
            PdfDocument document = new PdfDocument(writer);
            //Create form XObject and flush to document.
            PdfFormXObject form   = new PdfFormXObject(new Rectangle(0, 0, 50, 50));
            PdfCanvas      canvas = new PdfCanvas(form, document);

            canvas.Rectangle(10, 10, 30, 30);
            canvas.Fill();
            canvas.Release();
            form.Flush();
            //Create page1 and add forms to the page.
            PdfPage page1 = document.AddNewPage();

            canvas = new PdfCanvas(page1);
            canvas.AddXObject(form, 0, 0).AddXObject(form, 50, 0).AddXObject(form, 0, 50).AddXObject(form, 50, 50);
            canvas.Release();
            //Create form from the page1 and flush it.
            form = new PdfFormXObject(page1);
            form.Flush();
            //Now page1 can be flushed. It's not needed anymore.
            page1.Flush();
            //Create page2 and add forms to the page.
            PdfPage page2 = document.AddNewPage();

            canvas = new PdfCanvas(page2);
            canvas.AddXObject(form, 0, 0);
            canvas.AddXObject(form, 0, 200);
            canvas.AddXObject(form, 200, 0);
            canvas.AddXObject(form, 200, 200);
            canvas.Release();
            page2.Flush();
            document.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationDocument, sourceFolder + "cmp_documentWithForms1.pdf"
                                                                             , destinationFolder, "diff_"));
        }
Exemple #20
0
        public virtual void CreateDocumentFromImages1()
        {
            String      destinationDocument = destinationFolder + "documentFromImages1.pdf";
            FileStream  fos      = new FileStream(destinationDocument, FileMode.Create);
            PdfWriter   writer   = new PdfWriter(fos);
            PdfDocument document = new PdfDocument(writer);

            PdfImageXObject[] images = new PdfImageXObject[4];
            for (int i = 0; i < 4; i++)
            {
                images[i] = new PdfImageXObject(ImageDataFactory.Create(PdfXObjectTest.images[i]));
                images[i].SetLayer(new PdfLayer("layer" + i, document));
                if (i % 2 == 0)
                {
                    images[i].Flush();
                }
            }
            for (int i_1 = 0; i_1 < 4; i_1++)
            {
                PdfPage   page   = document.AddNewPage();
                PdfCanvas canvas = new PdfCanvas(page);
                canvas.AddXObject(images[i_1], PageSize.Default);
                page.Flush();
            }
            PdfPage   page_1   = document.AddNewPage();
            PdfCanvas canvas_1 = new PdfCanvas(page_1);

            canvas_1.AddXObject(images[0], 0, 0, 200);
            canvas_1.AddXObject(images[1], 300, 0, 200);
            canvas_1.AddXObject(images[2], 0, 300, 200);
            canvas_1.AddXObject(images[3], 300, 300, 200);
            canvas_1.Release();
            page_1.Flush();
            document.Close();
            NUnit.Framework.Assert.IsTrue(new FileInfo(destinationDocument).Length < 20 * 1024 * 1024);
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationDocument, sourceFolder + "cmp_documentFromImages1.pdf"
                                                                             , destinationFolder, "diff_"));
        }
        public virtual void CreatePdfStreamByInputStream()
        {
            String      filename = destinationFolder + "createPdfStreamByInputStream.pdf";
            FileStream  fos      = new FileStream(filename, FileMode.Create);
            PdfWriter   writer   = new PdfWriter(fos);
            PdfDocument document = new PdfDocument(writer);

            document.GetDocumentInfo().SetAuthor("Alexander Chingarev").SetCreator("iText 6").SetTitle("Empty iText 6 Document"
                                                                                                       );
            PdfPage page = document.AddNewPage();

            page.Flush();
            String    streamContent = "Some text content with strange symbols ∞²";
            PdfStream stream        = new PdfStream(document, new MemoryStream(streamContent.GetBytes()));

            stream.Flush();
            int streamIndirectNumber = stream.GetIndirectReference().GetObjNumber();

            document.Close();
            //        com.itextpdf.text.pdf.PdfReader reader = new PdfReader(filename);
            //        Assert.assertEquals("Rebuilt", false, reader.isRebuilt());
            //        Assert.assertNotNull(reader.getPageN(1));
            //        String date = reader.getDocumentInfo().get("CreationDate");
            //        Calendar cl = com.itextpdf.text.pdf.PdfDate.decode(date);
            //        long diff = new GregorianCalendar().getTimeInMillis() - cl.getTimeInMillis();
            //        String message = "Unexpected creation date. Different from now is " + (float)diff/1000 + "s";
            //        Assert.assertTrue(message, diff < 5000);
            //        reader.close();
            PdfReader reader6 = new PdfReader(filename);

            document = new PdfDocument(reader6);
            NUnit.Framework.Assert.AreEqual(false, reader6.HasRebuiltXref(), "Rebuilt");
            NUnit.Framework.Assert.AreEqual(false, reader6.HasFixedXref(), "Fixed");
            PdfStream pdfStream = (PdfStream)document.GetXref().Get(streamIndirectNumber).GetRefersTo();

            NUnit.Framework.Assert.AreEqual(streamContent.GetBytes(), pdfStream.GetBytes(), "Stream by InputStream");
            document.Close();
        }
        public virtual void TagStructureFlushingTest06()
        {
            PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureFlushingTest06.pdf");

            writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION);
            PdfDocument document = new PdfDocument(writer);

            document.SetTagged();
            PdfPage        page1      = document.AddNewPage();
            TagTreePointer tagPointer = new TagTreePointer(document);

            tagPointer.SetPageForTagging(page1);
            PdfCanvas canvas = new PdfCanvas(page1);

            tagPointer.AddTag(StandardRoles.DIV);
            tagPointer.AddTag(StandardRoles.P);
            canvas.BeginText();
            PdfFont standardFont = PdfFontFactory.CreateFont(StandardFonts.COURIER);

            canvas.SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512);
            tagPointer.AddTag(StandardRoles.SPAN);
            WaitingTagsManager waitingTagsManager = document.GetTagStructureContext().GetWaitingTagsManager();
            Object             associatedObj      = new Object();

            waitingTagsManager.AssignWaitingState(tagPointer, associatedObj);
            canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag();
            canvas.SetFontAndSize(standardFont, 30).OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag();
            canvas.EndText().Release();
            page1.Flush();
            tagPointer.RelocateKid(0, new TagTreePointer(document).MoveToKid(StandardRoles.DIV).SetNextNewKidIndex(0).
                                   AddTag(StandardRoles.P));
            tagPointer.RemoveTag();
            waitingTagsManager.RemoveWaitingState(associatedObj);
            document.GetTagStructureContext().FlushPageTags(page1);
            document.GetStructTreeRoot().CreateParentTreeEntryForPage(page1);
            document.Close();
            CompareResult("tagStructureFlushingTest06.pdf", "cmp_tagStructureFlushingTest06.pdf", "diffFlushing06_");
        }
Exemple #23
0
        public virtual void CreateEmptyDocument()
        {
            PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + "emptyDocument.pdf"));

            pdfDoc.GetDocumentInfo().SetAuthor("Alexander Chingarev").SetCreator("iText 6").SetTitle("Empty iText 6 Document"
                                                                                                     );
            PdfPage page = pdfDoc.AddNewPage();

            page.Flush();
            pdfDoc.Close();
            PdfReader   reader      = new PdfReader(destinationFolder + "emptyDocument.pdf");
            PdfDocument pdfDocument = new PdfDocument(reader);

            NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
            NUnit.Framework.Assert.IsNotNull(pdfDocument.GetPage(1));
            String   date    = pdfDocument.GetDocumentInfo().GetPdfObject().GetAsString(PdfName.CreationDate).GetValue();
            DateTime cl      = PdfDate.Decode(date);
            double   diff    = DateTimeUtil.GetUtcMillisFromEpoch(null) - DateTimeUtil.GetUtcMillisFromEpoch(cl);
            String   message = "Unexpected creation date. Different from now is " + (float)diff / 1000 + "s";

            NUnit.Framework.Assert.IsTrue(diff < 5000, message);
            pdfDocument.Close();
        }
        public virtual void CreateEmptyDocumentWithAbcXmp()
        {
            MemoryStream fos    = new MemoryStream();
            PdfWriter    writer = new PdfWriter(fos);
            PdfDocument  pdfDoc = new PdfDocument(writer);

            pdfDoc.GetDocumentInfo().SetAuthor("Alexander Chingarev").SetCreator("iText 7").SetTitle("Empty iText 7 Document"
                                                                                                     );
            pdfDoc.GetDocumentInfo().GetPdfObject().Remove(PdfName.CreationDate);
            pdfDoc.GetDocumentInfo().GetPdfObject().Remove(PdfName.ModDate);
            PdfPage page = pdfDoc.AddNewPage();

            page.Flush();
            pdfDoc.SetXmpMetadata("abc".GetBytes());
            pdfDoc.Close();
            PdfReader   reader      = new PdfReader(new MemoryStream(fos.ToArray()));
            PdfDocument pdfDocument = new PdfDocument(reader);

            NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
            NUnit.Framework.Assert.AreEqual("abc".GetBytes(), pdfDocument.GetXmpMetadata());
            NUnit.Framework.Assert.IsNotNull(pdfDocument.GetPage(1));
            reader.Close();
        }
        public virtual void Copying1()
        {
            FileStream  fos1    = new FileStream(destinationFolder + "copying1_1.pdf", FileMode.Create);
            PdfWriter   writer1 = new PdfWriter(fos1);
            PdfDocument pdfDoc1 = new PdfDocument(writer1);

            pdfDoc1.GetDocumentInfo().SetAuthor("Alexander Chingarev").SetCreator("iText 6").SetTitle("Empty iText 6 Document"
                                                                                                      );
            pdfDoc1.GetCatalog().Put(new PdfName("a"), ((PdfName) new PdfName("b").MakeIndirect(pdfDoc1)));
            PdfPage page1 = pdfDoc1.AddNewPage();

            page1.Flush();
            pdfDoc1.Close();
            FileStream fis1    = new FileStream(destinationFolder + "copying1_1.pdf", FileMode.Open, FileAccess.Read);
            PdfReader  reader1 = new PdfReader(fis1);

            pdfDoc1 = new PdfDocument(reader1);
            FileStream  fos2    = new FileStream(destinationFolder + "copying1_2.pdf", FileMode.Create);
            PdfWriter   writer2 = new PdfWriter(fos2);
            PdfDocument pdfDoc2 = new PdfDocument(writer2);

            pdfDoc2.AddNewPage();
            pdfDoc2.GetDocumentInfo().GetPdfObject().Put(new PdfName("a"), pdfDoc1.GetCatalog().GetPdfObject().Get(new
                                                                                                                   PdfName("a")).CopyTo(pdfDoc2));
            pdfDoc2.Close();
            pdfDoc1.Close();
            PdfReader   reader      = new PdfReader(destinationFolder + "copying1_2.pdf");
            PdfDocument pdfDocument = new PdfDocument(reader);

            NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
            PdfDictionary trailer = pdfDocument.GetTrailer();
            PdfDictionary info    = trailer.GetAsDictionary(PdfName.Info);
            PdfName       b       = info.GetAsName(new PdfName("a"));

            NUnit.Framework.Assert.AreEqual("/b", b.ToString());
            reader.Close();
        }
        public virtual void CreateEmptyDocumentWithXmp()
        {
            String      filename = "emptyDocumentWithXmp.pdf";
            FileStream  fos      = new FileStream(destinationFolder + filename, FileMode.Create);
            PdfWriter   writer   = new PdfWriter(fos, new WriterProperties().AddXmpMetadata());
            PdfDocument pdfDoc   = new PdfDocument(writer);

            pdfDoc.GetDocumentInfo().SetAuthor("Alexander Chingarev").SetCreator("iText 7").SetTitle("Empty iText 7 Document"
                                                                                                     );
            pdfDoc.GetDocumentInfo().GetPdfObject().Remove(PdfName.CreationDate);
            pdfDoc.GetDocumentInfo().GetPdfObject().Remove(PdfName.ModDate);
            PdfPage page = pdfDoc.AddNewPage();

            page.Flush();
            pdfDoc.Close();
            PdfReader   reader      = new PdfReader(destinationFolder + filename);
            PdfDocument pdfDocument = new PdfDocument(reader);

            NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
            NUnit.Framework.Assert.AreEqual(ReadFile(sourceFolder + "emptyDocumentWithXmp.xml").Length, pdfDocument.GetXmpMetadata
                                                ().Length);
            NUnit.Framework.Assert.IsNotNull(reader.pdfDocument.GetPage(1));
            reader.Close();
        }
        public virtual void CopyObject5()
        {
            FileStream  fos1    = new FileStream(destinationFolder + "copyObject5_1.pdf", FileMode.Create);
            PdfWriter   writer1 = new PdfWriter(fos1);
            PdfDocument pdfDoc1 = new PdfDocument(writer1);
            PdfPage     page1   = pdfDoc1.AddNewPage();

            page1.GetContentStream(0).GetOutputStream().Write(ByteUtils.GetIsoBytes("%Page_1"));
            page1.Flush();
            pdfDoc1.Close();
            PdfDocument pdfDoc1R = new PdfDocument(new PdfReader(destinationFolder + "copyObject5_1.pdf"));

            page1 = pdfDoc1R.GetPage(1);
            FileStream  fos2    = new FileStream(destinationFolder + "copyObject5_2.pdf", FileMode.Create);
            PdfWriter   writer2 = new PdfWriter(fos2);
            PdfDocument pdfDoc2 = new PdfDocument(writer2);
            PdfPage     page2   = page1.CopyTo(pdfDoc2);

            pdfDoc2.AddPage(page2);
            page2.Flush();
            page2 = pdfDoc2.AddNewPage();
            page2.GetContentStream(0).GetOutputStream().Write(ByteUtils.GetIsoBytes("%Page_2"));
            page2.Flush();
            pdfDoc1R.Close();
            pdfDoc2.Close();
            PdfReader   reader      = new PdfReader(destinationFolder + "copyObject5_2.pdf");
            PdfDocument pdfDocument = new PdfDocument(reader);

            NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
            NUnit.Framework.Assert.AreEqual(8, reader.trailer.GetAsNumber(PdfName.Size).IntValue());
            byte[] bytes = pdfDocument.GetPage(1).GetContentBytes();
            NUnit.Framework.Assert.AreEqual(ByteUtils.GetIsoBytes("%Page_1"), bytes);
            bytes = pdfDocument.GetPage(2).GetContentBytes();
            NUnit.Framework.Assert.AreEqual(ByteUtils.GetIsoBytes("%Page_2"), bytes);
            reader.Close();
        }
        public virtual void TagTreePointerTest01()
        {
            FileStream  fos      = new FileStream(destinationFolder + "tagTreePointerTest01.pdf", FileMode.Create);
            PdfWriter   writer   = new PdfWriter(fos).SetCompressionLevel(CompressionConstants.NO_COMPRESSION);
            PdfDocument document = new PdfDocument(writer);

            document.SetTagged();
            PdfPage        page1      = document.AddNewPage();
            TagTreePointer tagPointer = new TagTreePointer(document);

            tagPointer.SetPageForTagging(page1);
            PdfCanvas canvas       = new PdfCanvas(page1);
            PdfFont   standardFont = PdfFontFactory.CreateFont(StandardFonts.COURIER);

            canvas.BeginText().SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512);
            tagPointer.AddTag(StandardRoles.P).AddTag(StandardRoles.SPAN);
            canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag();
            canvas.SetFontAndSize(standardFont, 30).OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag();
            tagPointer.MoveToParent().MoveToParent();
            canvas.EndText().Release();
            PdfPage page2 = document.AddNewPage();

            tagPointer.SetPageForTagging(page2);
            canvas = new PdfCanvas(page2);
            canvas.BeginText().SetFontAndSize(PdfFontFactory.CreateFont(StandardFonts.HELVETICA), 24).SetTextMatrix(1,
                                                                                                                    0, 0, 1, 32, 512);
            tagPointer.AddTag(StandardRoles.P).AddTag(StandardRoles.SPAN);
            canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag();
            tagPointer.MoveToParent().AddTag(StandardRoles.SPAN);
            canvas.OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag();
            canvas.EndText().Release();
            page1.Flush();
            page2.Flush();
            document.Close();
            CompareResult("tagTreePointerTest01.pdf", "cmp_tagTreePointerTest01.pdf", "diff01_");
        }
Exemple #29
0
        public virtual void Copying2()
        {
            PdfDocument pdfDoc1 = new PdfDocument(new PdfWriter(destinationFolder + "copying2_1.pdf"));

            for (int i = 0; i < 10; i++)
            {
                PdfPage page1 = pdfDoc1.AddNewPage();
                page1.GetContentStream(0).GetOutputStream().Write(ByteUtils.GetIsoBytes("%page " + (i + 1).ToString() + "\n"
                                                                                        ));
                page1.Flush();
            }
            pdfDoc1.Close();
            pdfDoc1 = new PdfDocument(new PdfReader(destinationFolder + "copying2_1.pdf"));
            PdfDocument pdfDoc2 = new PdfDocument(new PdfWriter(destinationFolder + "copying2_2.pdf"));

            for (int i = 0; i < 10; i++)
            {
                if (i % 2 == 0)
                {
                    pdfDoc2.AddPage(pdfDoc1.GetPage(i + 1).CopyTo(pdfDoc2));
                }
            }
            pdfDoc2.Close();
            pdfDoc1.Close();
            PdfReader   reader      = new PdfReader(destinationFolder + "copying2_2.pdf");
            PdfDocument pdfDocument = new PdfDocument(reader);

            NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
            for (int i = 0; i < 5; i++)
            {
                byte[] bytes = pdfDocument.GetPage(i + 1).GetContentBytes();
                NUnit.Framework.Assert.AreEqual("%page " + (i * 2 + 1).ToString() + "\n", iText.IO.Util.JavaUtil.GetStringForBytes
                                                    (bytes));
            }
            pdfDocument.Close();
        }
        public virtual void CopyObject2()
        {
            FileStream  fos1    = new FileStream(destinationFolder + "copyObject2_1.pdf", FileMode.Create);
            PdfWriter   writer1 = new PdfWriter(fos1);
            PdfDocument pdfDoc1 = new PdfDocument(writer1);
            PdfPage     page1   = pdfDoc1.AddNewPage();

            page1.Flush();
            PdfDictionary    catalog1    = pdfDoc1.GetCatalog().GetPdfObject();
            PdfName          aDirectName = new PdfName("aDirect");
            PdfArray         aDirect     = ((PdfArray) new PdfArray().MakeIndirect(pdfDoc1));
            List <PdfObject> tmpArray    = new List <PdfObject>(2);

            tmpArray.Add(new PdfNumber(1));
            tmpArray.Add(((PdfNumber) new PdfNumber(2).MakeIndirect(pdfDoc1)));
            aDirect.Add(new PdfArray(tmpArray));
            aDirect.Add(new PdfBoolean(true));
            SortedDictionary <PdfName, PdfObject> tmpMap = new SortedDictionary <PdfName, PdfObject>();

            tmpMap[new PdfName("one")] = new PdfNumber(1);
            tmpMap[new PdfName("two")] = ((PdfNumber) new PdfNumber(2).MakeIndirect(pdfDoc1));
            aDirect.Add(new PdfDictionary(tmpMap));
            aDirect.Add(new PdfName("name"));
            aDirect.Add(((PdfNull) new PdfNull().MakeIndirect(pdfDoc1)));
            aDirect.Add(new PdfNumber(100));
            aDirect.Add(new PdfString("string"));
            catalog1.Put(aDirectName, aDirect);
            pdfDoc1.Close();
            PdfDocument pdfDoc1R = new PdfDocument(new PdfReader(destinationFolder + "copyObject2_1.pdf"));

            aDirect = (PdfArray)pdfDoc1R.GetCatalog().GetPdfObject().Get(aDirectName);
            FileStream  fos2    = new FileStream(destinationFolder + "copyObject2_2.pdf", FileMode.Create);
            PdfWriter   writer2 = new PdfWriter(fos2);
            PdfDocument pdfDoc2 = new PdfDocument(writer2);
            PdfPage     page2   = pdfDoc2.AddNewPage();

            page2.Flush();
            PdfDictionary catalog2 = pdfDoc2.GetCatalog().GetPdfObject();

            catalog2.Put(aDirectName, ((PdfArray)aDirect.CopyTo(pdfDoc2)));
            pdfDoc1R.Close();
            pdfDoc2.Close();
            PdfReader   reader      = new PdfReader(destinationFolder + "copyObject2_2.pdf");
            PdfDocument pdfDocument = new PdfDocument(reader);

            NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt");
            PdfDictionary catalog = pdfDocument.GetCatalog().GetPdfObject();
            PdfArray      a       = catalog.GetAsArray(new PdfName("aDirect"));

            NUnit.Framework.Assert.IsNotNull(a);
            NUnit.Framework.Assert.AreEqual(1, ((PdfNumber)((PdfArray)a.Get(0)).Get(0)).IntValue());
            NUnit.Framework.Assert.AreEqual(2, ((PdfArray)a.Get(0)).GetAsNumber(1).IntValue());
            NUnit.Framework.Assert.AreEqual(true, ((PdfBoolean)a.Get(1)).GetValue());
            NUnit.Framework.Assert.AreEqual(1, ((PdfNumber)((PdfDictionary)a.Get(2)).Get(new PdfName("one"))).IntValue
                                                ());
            NUnit.Framework.Assert.AreEqual(2, ((PdfDictionary)a.Get(2)).GetAsNumber(new PdfName("two")).IntValue());
            NUnit.Framework.Assert.AreEqual(new PdfName("name"), a.Get(3));
            NUnit.Framework.Assert.IsTrue(a.Get(4).IsNull());
            NUnit.Framework.Assert.AreEqual(100, ((PdfNumber)a.Get(5)).IntValue());
            NUnit.Framework.Assert.AreEqual("string", ((PdfString)a.Get(6)).ToUnicodeString());
            reader.Close();
        }