我们希望在发送之前在我们的pdf上添加带有用户电子邮件和姓名的水印.我已经编写了代码,并且工作得很好.我想检查这是否是最好的方法.我们希望水印在pdf的顶部分成两行.
,我使用"ShowTextAligned()"两次使用不同的"y"坐标来实现这一点.
private MemoryStream StampPdf(string pdfPath, string name, string email)
{
var memoryStream = new MemoryStream();
var reader = new PdfReader(pdfPath);
var pageCount = reader.NumberOfPages;
var stamper = new PdfStamper(reader, memoryStream);
var textAngle = 0;
var fontSize = 14;
var font = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.WINANSI, BaseFont.EMBEDDED);
var watermarkLine1 = "Personal use only for " + name;
var watermarkLine2 = "at " + email;
using (stamper)
{
for (var i = 1; i <= pageCount; i++)
{
var mediaBox = reader.GetPageSize(i);
var overContent = stamper.GetOverContent(i);
overContent.BeginText();
overContent.SetColorFill(BaseColor.RED);
overContent.SetFontAndSize(font, fontSize);
overContent.ShowTextAligned(PdfContentByte.ALIGN_LEFT, watermarkLine1, 10, mediaBox.Top - 20, textAngle);
overContent.ShowTextAligned(PdfContentByte.ALIGN_LEFT, watermarkLine2, 10, mediaBox.Top - 40, textAngle);
overContent.EndText();
}
}
reader.Close();
stamper.Close();
return memoryStream;
}
Run Code Online (Sandbox Code Playgroud)
我想确认两件事:
"是否可以使用ShowTextAligned()来包装到达行尾的文本?"
"ShowTextAligned()是否尊重回车/换行?"
谢谢,
-Samah
| 归档时间: |
|
| 查看次数: |
4935 次 |
| 最近记录: |