itextsharp modifica el pdf existente (no hay una nueva fuente pdf) y agrega una marca de agua

Me gustaría modificar un documento pdf existente y agregar una imagen de marca de agua. ¿Cómo puedo hacer esto sin crear un nuevo archivo?

Creo que es una solución estúpida para crear un pdf temporal. ¿Eliminar el archivo de origen y cambiar el nombre del pdf temporal como el archivo de origen?

Aquí mi código de ejemplo pero ahí estoy creando un nuevo archivo de destino.

Saludos

        private static void PdfApplication(String filePath) {

        PdfReader pdfReader = new PdfReader(filePath);
        Stream outputStream = new FileStream(newFilePath, FileMode.Open, FileAccess.Write, FileShare.None);

        PdfStamper pdfStamper = new PdfStamper(pdfReader, outputStream,'1', true);

        for (int pageIndex = 1; pageIndex <= pdfReader.NumberOfPages; pageIndex++) {
            pdfStamper.FormFlattening = false;
            iTextSharp.text.Rectangle pageRectangle = pdfReader.GetPageSizeWithRotation(pageIndex);
            PdfContentByte pdfData = pdfStamper.GetOverContent(pageIndex);
            pdfData.SetFontAndSize(BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 10);
            PdfGState graphicsState = new PdfGState();
            graphicsState.FillOpacity = 0.4F;
            pdfData.SetGState(graphicsState);
            pdfData.BeginText();

            FileStream fileStreamImage = new FileStream(watermark.jpg", FileMode.Open);
            iTextSharp.text.Image jpeg = iTextSharp.text.Image.GetInstance(System.Drawing.Image.FromStream(fileStreamImage), ImageFormat.Jpeg);

            float width = pageRectangle.Width;
            float height = pageRectangle.Height;
            jpeg.ScaleToFit(width, height);
            jpeg.SetAbsolutePosition(width / 2 - jpeg.Width / 2, height / 2 - jpeg.Height / 2);
            jpeg.SetAbsolutePosition(50, 50);
            jpeg.Rotation = 250;

            pdfData.AddImage(jpeg);
            pdfData.EndText();
        }
        pdfStamper.Close();
        outputStream.Close();
        outputStream.Dispose();

    }

Respuestas a la pregunta(2)

Su respuesta a la pregunta