Hi Sorry resending this post as i was not registered user earlier. i am using latest iTextSharp library to edit the pdf documents to put the water marking digitallly (hidden). So when i researched i found that i can add a annotation to the pdf document and then set the flags to annotation.Flags = PdfAnnotation.FLAGS_NOVIEW | PdfAnnotation.FLAGS_INVISIBLE | PdfAnnotation.FLAGS_HIDDEN; to make it invisible.
so this is working fine as expected 90% of the time. Remaning 10 % of the time i get an error when i open the document after adding the annotation it says "Root object is invalid or missing" so looks like it corrupted the file trying to add the annoation. do you have any suggestion? i can share the code i am using to add the annotation if that helps. Full code public static byte[] EditPdf(string sourceFile, string visibleWaterMark, string digitalWaterMark) { PdfReader reader = new PdfReader(sourceFile); using (MemoryStream memoryStream = new MemoryStream()) { PdfStamper pdfStamper = new PdfStamper(reader, memoryStream); // process every page in the pdf file for (int i = 1; i <= reader.NumberOfPages; i++) { Rectangle pageSize = reader.GetPageSizeWithRotation(i); PdfContentByte pdfPageContents = pdfStamper.GetUnderContent(i); PdfAnnotation annotation = PdfAnnotation.CreateText(pdfStamper.Writer, new Rectangle(200f, 400f, 300f, 500f), digitalWaterMark, "Street Events Digital Watermark", false, "Key"); //digital water marking annotation.Flags = PdfAnnotation.FLAGS_NOVIEW | PdfAnnotation.FLAGS_INVISIBLE | PdfAnnotation.FLAGS_HIDDEN; pdfStamper.AddAnnotation(annotation, i); pdfPageContents.BeginText(); BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, Encoding.ASCII.EncodingName, BaseFont.NOT_EMBEDDED); pdfPageContents.SetFontAndSize(baseFont, 10); pdfPageContents.SetRGBColorFill(225, 224, 223); // visible water marking pdfPageContents.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, visibleWaterMark, pageSize.Width - 50, pageSize.Height - 15, 0); pdfPageContents.EndText(); pdfStamper.FormFlattening = true; } pdfStamper.Close(); return memoryStream.ToArray(); } public static void SaveFile(string fileHandle, byte[] fileBytes) { using(FileStream fs = new FileStream(fileHandle, FileMode.Create)) { fs.Write(fileBytes, 0, fileBytes.Length); fs.Flush(); fs.Close(); } } //call FileInfo pdfFileInfo = new FileInfo(newFilePath); byte[] fileBytes = PdfWaterMarker.EditPdf(pdfFileInfo, string.Format("Client Id: {0}", clientSite.ClientId)); PdfWaterMarker.SaveFile(newFilePath, fileBytes); please let me know Thanks Subrah -- View this message in context: http://old.nabble.com/Root-Object-is-invalid-or-missing-after-PDF-is-manipulated-with-iTextSharp-tp26305073p26305073.html Sent from the iText - General mailing list archive at Nabble.com. ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ iText-questions mailing list iText-questions@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://www.1t3xt.com/docs/book.php Check the site with examples before you ask questions: http://www.1t3xt.info/examples/ You can also search the keywords list: http://1t3xt.info/tutorials/keywords/