2017-08-29 23 views
0

Ich habe ein Stück Code, um ein Bild Wasserzeichen in eine bestehende PDF zu setzen. Ich bin auf der Suche nach einem Weg,Wie berechnet man die Bildskalierung eines Wasserzeichens

public void MixFiles(String wmrk, String src, String dest) 
    { 
     string watermarkedFile = dest; 

     PdfReader pdfReader = new PdfReader(src); 
     PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(dest, FileMode.Create, FileAccess.Write, FileShare.None)); 
     iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(wmrk); 
     PdfContentByte waterMark; 
     for (int pageIndex = 1; pageIndex <= pdfReader.NumberOfPages; pageIndex++) 
     { 
      waterMark = pdfStamper.GetOverContent(pageIndex); 
      // the scale percent is found by trial and error how can I calculate it?? 
      img.ScalePercent(24f); 

      img.SetAbsolutePosition(0f, 0f); 

      waterMark.AddImage(img); 
     } 
     pdfStamper.FormFlattening = true; 
     pdfStamper.Close();   
    } 

Mein Code der Skala Prozentsatz des Wasserzeichens zu berechnen, so weit funktioniert, aber was mit anderen Wasserzeichen Bild passiert. Wovon hängt der Maßstab ab? Das Wasserzeichen-Bild ist ein PNG mit einer Größe von 210x297mm. Die Quell-PDF zu Bestamped hat auch Seiten mit 210x297mm, beide haben eine Auflösung von 300 dpi.

Antwort

0

Ich fand heraus, dass itext intern eine 72 dpi Auflösung verwendet. Die ursprüngliche Auflösung des Wasserzeichen-Png beträgt 300 dpi. So 72/300 ergibt sich mit 0,24. Ich versuchte es mit einem 400 dpi Wasserzeichen und erhalte das erwartete Ergebnis mit 72/400 = 0,18. Für unbekannte Wasserzeichenauflösung verwende ich jetzt

System.Drawing.Image newImage = System.Drawing.Image.FromFile(wmrk); 
var reso=newImage.HorizontalResolution; 
float scalepercent = (72/reso)*100; 
img.ScalePercent(scalepercent); 
Verwandte Themen