2017-08-29 43 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);