使用iTextSharp.ShowTextAligned()添加水印

Sam*_*mah 3 itextsharp

我们希望在发送之前在我们的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)

我想确认两件事:

  1. "是否可以使用ShowTextAligned()来包装到达行尾的文本?"

  2. "ShowTextAligned()是否尊重回车/换行?"

谢谢,

-Samah

Bru*_*gie 5

对问题1的回答:不,你需要ColumnText对象来做到这一点.

回答问题2:不,showTextAligned()忽略换行符.