2013-05-15 4 views
3

Nous voulons ajouter une marque d'eau avec l'utilisateur email & nom en haut de notre pdf avant que nous l'envoyions. J'ai écrit du code qui fait ça et ça marche très bien. Je veux vérifier si c'est la meilleure façon de le faire. Nous voulons que la marque d'eau soit divisée en deux lignes en haut du pdf.en utilisant iTextSharp.ShowTextAligned() pour ajouter un filigrane

, J'ai utilisé "ShowTextAligned()" deux fois avec des coordonnées "y" différentes pour y parvenir.

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; 
    } 

Je veux confirmer deux choses:

  1. « Est-il possible d'utiliser ShowTextAligned() pour envelopper le texte qui arrive à la fin de la ligne? » "Est-ce que ShowTextAligned() honore carriage return/newline?"

Merci,

-Samah

Répondre

5

Réponse à la question 1 .: Non, vous devez l'objet ColumnText de le faire.

Réponse à la question 2: Non, showTextAligned() ignore les caractères de nouvelle ligne.

+0

Bruno- Merci pour votre réponse! – Samah

Questions connexes