【发布时间】:2016-04-11 11:41:34
【问题描述】:
如何在 c# 中的现有 pdf 中添加水印(文本或图像)?
我希望为 pdf 的所有页面显示水印。
我尝试使用 itextsharp,但水印仅显示在 pdf 的最后一页。
public void CreateTemplate(string watermarkText, string targetFileName)
{
var document = new Document();
var pdfWriter = PdfWriter.GetInstance(document, new FileStream(targetFileName, FileMode.Create));
var font = new iTextSharp.text.Font(iTextSharp.text.Font.HELVETICA, 60, iTextSharp.text.Font.NORMAL, iTextSharp.text.Color.LIGHT_GRAY);
document.Open();
ColumnText.ShowTextAligned(pdfWriter.DirectContent, Element.ALIGN_CENTER, new Phrase(watermarkText, font), 300, 400, 45);
document.Close();
}
public void AddTextWatermark(string sourceFilePath, string watermarkTemplatePath, string targetFilePath)
{
var pdfReaderSource = new PdfReader(sourceFilePath);
var pdfStamper = new PdfStamper(pdfReaderSource, new FileStream(targetFilePath, FileMode.Create));
var pdfReaderTemplate = new PdfReader(watermarkTemplatePath);
var page = pdfStamper.GetImportedPage(pdfReaderTemplate, 1);
for (var i = 0; i < pdfReaderSource.NumberOfPages; i++)
{
var content = pdfStamper.GetUnderContent(i + 1);
content.AddTemplate(page, 0, 0);
}
pdfStamper.Close();
pdfReaderTemplate.Close();
}
【问题讨论】:
-
您在硬编码坐标
x = 0; y = 0处添加水印在现有内容下。可能不显示水印的页面是不透明的和/或可能它们具有不同的坐标系(左下角并不总是具有坐标0, 0)。如果没有看到您想要添加水印的实际 PDF,我们将无能为力。你读过How to add a watermark to a page with an opaque image? & How to watermark?
标签: c# itextsharp