2013-05-15 106 views
3

我們希望在我們發送之前在我們的pdf頂部添加用戶電子郵件&名稱的水印。我已經編寫了這樣的代碼,它工作得很好。我想檢查這是否是這樣做的最佳方式。我們希望水印在pdf的頂部分成兩行。使用iTextSharp.ShowTextAligned()添加水印

,我用「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; 
    } 

我想確認兩兩件事:

  1. 「是否有可能使用ShowTextAligned()包裹到達行結束文本?」

  2. 「ShowTextAligned()是否會返回/換行符?」

感謝,

-Samah

回答

5

回答問題1:不,你需要ColumnText對象做到這一點。

對問題2的回答:否,showTextAligned()忽略換行符。

+0

Bruno- 感謝您的回覆! – Samah