2017-08-29 5 views
0

イメージウォーターマークを既存のpdfに入れるコードがあります。私は、透かし画像の縮尺率ウォーターマークイメージのイメージスケールを計算する方法

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

私のコードは、これまでに動作しますが、何が他の透かし画像で起こるを計算する方法を探しています。スケール比は何に依存していますか?透かし画像は、210×297mmのサイズのpngであり、bestampedへのソースpdfも、210x297mmのページとも300dpiの解像度を有する。

答えて

0

私はitextが内部72 dpiの解像度を使用することを知りました。ウォーターマークPNGの元の解像度は300 dpiです。従って0.24で72/300の結果。 私は400 dpiの透かしを試して、72/400 = 0.18で期待した結果を得ました。 透かしの解像度が不明な場合はこちらをご利用ください

System.Drawing.Image newImage = System.Drawing.Image.FromFile(wmrk); 
var reso=newImage.HorizontalResolution; 
float scalepercent = (72/reso)*100; 
img.ScalePercent(scalepercent); 
関連する問題