我有一段代码可以将图像水印放到现有的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 :(得分: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);