itextsharp изменить существующий PDF (без нового исходного PDF) и добавить водяной знак
Я хотел бы изменить существующий документ PDF и добавить изображение водяного знака. Как я могу сделать это без создания нового файла?
Я думаю, что это глупое решение для создания временного PDF. Удалите исходный файл и переименуйте временный pdf как исходный файл !?
Вот мой пример кода, но там я создаю новый файл назначения.
С уважением
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();
}