예제 #1
0
        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();
        }