public void DecoratePdf(string inputFile, string outputFile) { using var pdfReader = new PdfReader(inputFile); using var pdfWriter = new PdfWriter(outputFile); var pdfDocument = new PdfDocument(pdfReader, pdfWriter); var totalPages = pdfDocument.GetNumberOfPages(); Console.WriteLine($"Total number of pages: {pdfDocument.GetNumberOfPages()}"); for (var i = 1; i <= totalPages; i++) { var page = pdfDocument.GetPage(i); var dictionary = page.GetPdfObject(); var pdfObject = dictionary.Get(PdfName.Contents); if (pdfObject.GetType().Equals(typeof(PdfStream))) { var pdfStream = (PdfStream)pdfObject; var data = pdfStream.GetBytes(); var replacedData = JavaUtil.GetStringForBytes(data) .Replace(PdfFormation.TOTAL_PAGE_TEMPLATE, totalPages.ToString()); pdfStream.SetData(Encoding.UTF8.GetBytes(replacedData)); } } pdfDocument.Close(); }