2017-08-29 68 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();   
    } 

我的代碼工作迄今規模比例,但有什麼其他的水印圖像發生。規模比例取決於什麼?水印圖像是一個尺寸爲210x297mm的PNG,其中源代碼的PDF格式也具有210x297mm的頁面,兩者的分辨率均爲300 dpi。

回答

0

我發現itext使用內部72 dpi的分辨率。水印png的原始分辨率是300 dpi。所以72/300的結果是0.24。 我嘗試使用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);