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(); }