public virtual void CopyPagesWithOCGDifferentNames() { IList <IList <String> > ocgNames = new List <IList <String> >(); IList <String> ocgNames1 = new List <String>(); ocgNames1.Add("Name1"); IList <String> ocgNames2 = new List <String>(); ocgNames2.Add("Name2"); ocgNames.Add(ocgNames1); ocgNames.Add(ocgNames2); IList <byte[]> sourceDocuments = PdfDocumentUnitTest.InitSourceDocuments(ocgNames); using (PdfDocument outDocument = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) { foreach (byte[] docBytes in sourceDocuments) { using (PdfDocument fromDocument = new PdfDocument(new PdfReader(new MemoryStream(docBytes)))) { for (int i = 1; i <= fromDocument.GetNumberOfPages(); i++) { fromDocument.CopyPagesTo(i, i, outDocument); } } } IList <String> layerNames = new List <String>(); layerNames.Add("Name1"); layerNames.Add("Name2"); PdfDocumentUnitTest.AssertLayerNames(outDocument, layerNames); } }
public virtual void CopyPagesWithOCGSameObject() { byte[] docBytes; using (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { using (PdfDocument document = new PdfDocument(new PdfWriter(outputStream))) { PdfPage page = document.AddNewPage(); PdfResources pdfResource = page.GetResources(); PdfDictionary ocg = new PdfDictionary(); ocg.Put(PdfName.Type, PdfName.OCG); ocg.Put(PdfName.Name, new PdfString("name1")); ocg.MakeIndirect(document); pdfResource.AddProperties(ocg); PdfPage page2 = document.AddNewPage(); PdfResources pdfResource2 = page2.GetResources(); pdfResource2.AddProperties(ocg); document.GetCatalog().GetOCProperties(true); } docBytes = outputStream.ToArray(); } using (PdfDocument outDocument = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) { using (PdfDocument fromDocument = new PdfDocument(new PdfReader(new MemoryStream(docBytes)))) { fromDocument.CopyPagesTo(1, fromDocument.GetNumberOfPages(), outDocument); } IList <String> layerNames = new List <String>(); layerNames.Add("name1"); PdfDocumentUnitTest.AssertLayerNames(outDocument, layerNames); } }
private static IList <byte[]> InitSourceDocuments(IList <IList <String> > ocgNames) { IList <byte[]> result = new List <byte[]>(); foreach (IList <String> names in ocgNames) { result.Add(PdfDocumentUnitTest.InitDocument(names)); } return(result); }
private static void AssertLayerNames(PdfDocument outDocument, IList <String> layerNames) { NUnit.Framework.Assert.IsNotNull(outDocument.GetCatalog()); PdfOCProperties ocProperties = outDocument.GetCatalog().GetOCProperties(true); NUnit.Framework.Assert.IsNotNull(ocProperties); NUnit.Framework.Assert.AreEqual(layerNames.Count, ocProperties.GetLayers().Count); for (int i = 0; i < layerNames.Count; i++) { PdfLayer layer = ocProperties.GetLayers()[i]; NUnit.Framework.Assert.IsNotNull(layer); PdfDocumentUnitTest.AssertLayerNameEqual(layerNames[i], layer); } }
public virtual void CopyPagesFlushedResources() { byte[] docBytes; using (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { using (PdfDocument document = new PdfDocument(new PdfWriter(outputStream))) { PdfPage page = document.AddNewPage(); PdfResources pdfResource = page.GetResources(); PdfDictionary ocg = new PdfDictionary(); ocg.Put(PdfName.Type, PdfName.OCG); ocg.Put(PdfName.Name, new PdfString("name1")); ocg.MakeIndirect(document); pdfResource.AddProperties(ocg); pdfResource.MakeIndirect(document); PdfPage page2 = document.AddNewPage(); page2.SetResources(pdfResource); document.GetCatalog().GetOCProperties(true); } docBytes = outputStream.ToArray(); } PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); using (PdfDocument outDocument = new PdfDocument(writer)) { using (PdfDocument fromDocument = new PdfDocument(new PdfReader(new MemoryStream(docBytes)))) { fromDocument.CopyPagesTo(1, 1, outDocument); IList <String> layerNames = new List <String>(); layerNames.Add("name1"); PdfDocumentUnitTest.AssertLayerNames(outDocument, layerNames); outDocument.FlushCopiedObjects(fromDocument); fromDocument.CopyPagesTo(2, 2, outDocument); NUnit.Framework.Assert.IsNotNull(outDocument.GetCatalog()); PdfOCProperties ocProperties = outDocument.GetCatalog().GetOCProperties(false); NUnit.Framework.Assert.IsNotNull(ocProperties); NUnit.Framework.Assert.AreEqual(1, ocProperties.GetLayers().Count); PdfLayer layer = ocProperties.GetLayers()[0]; NUnit.Framework.Assert.IsTrue(layer.GetPdfObject().IsFlushed()); } } }