//--------------------------------------------------------------------------------------- // Copyright (c) 2001-2021 by PDFTron Systems Inc. All Rights Reserved. // Consult legal.txt regarding legal and license information. //--------------------------------------------------------------------------------------- using System; using System.IO; using pdftron; using pdftron.Common; using pdftron.Filters; using pdftron.SDF; using pdftron.PDF; namespace PDFNetSamples { class StamperSample { private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance(); static StamperSample() {} static void RenameAndAddAnnotApLayerToOrder(PDFDoc doc, string newLayerName, Annot annot) { Obj ocgsObj = null; Obj ap = annot.GetAppearance(); Obj apResources = ap.FindObj("Resources"); Obj formXObjects = apResources.FindObj("XObject"); DictIterator itr = formXObjects.GetDictIterator(); for (; itr.HasNext(); itr.Next()) { // itr.Key(); Obj formXObject = itr.Value(); Obj ocObj = formXObject.FindObj("OC"); ocgsObj = ocObj.FindObj("OCGs"); ocgsObj.PutString("Name", newLayerName); } var cfg = doc.GetOCGConfig(); if (cfg == null) { cfg = pdftron.PDF.OCG.Config.Create(doc, true); cfg.SetName("Default"); } var layerOrderArray = cfg.GetOrder(); if (layerOrderArray == null) { layerOrderArray = doc.CreateIndirectArray(); cfg.SetOrder(layerOrderArray); } layerOrderArray.PushBack(ocgsObj); } static void Main(string[] args) { PDFNet.Initialize(PDFTronLicense.Key); string input_path = "../../../../TestFiles/"; string output_path = "../../../../TestFiles/Output/"; string input_filename = "newsletter"; try { using (PDFDoc doc = new PDFDoc(input_path + input_filename + ".pdf")) using (Stamper s = new Stamper(Stamper.SizeType.e_relative_scale, .05, .05)) { doc.InitSecurityHandler(); Image img = Image.Create(doc, input_path + "peppers.jpg"); s.SetSize(Stamper.SizeType.e_absolute_size, 144, 144); s.SetAlignment(Stamper.HorizontalAlignment.e_horizontal_center, Stamper.VerticalAlignment.e_vertical_center); s.SetAsAnnotation(true); s.StampImage(doc, img, new PageSet(1)); Page page = doc.GetPage(1); Annot annot = page.GetAnnot(page.GetNumAnnots() - 1); RenameAndAddAnnotApLayerToOrder(doc, "My Annotation Layer", annot); doc.Save(output_path + input_filename + ".ex_Annot.pdf", SDFDoc.SaveOptions.e_linearized); } } catch (PDFNetException e) { Console.WriteLine(e.Message); } PDFNet.Terminate(); } } }