[英]How to add an image background as watermark to the pdf file?
I Created ExportToPDF Button to export Gridview to PDF file, then how can I add an image background as watermark to the PDF file?我创建了 ExportToPDF 按钮将 Gridview 导出为 PDF 文件,那么如何将图像背景作为水印添加到 PDF 文件中?
protected void ExportToPDF(object sender, EventArgs e)
{
using (StringWriter sw = new StringWriter())
using (HtmlTextWriter hw = new HtmlTextWriter(sw))
{
gvOrders.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
pdfDoc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Write(pdfDoc);
Response.End();
}
}
One solution would be;一种解决方案是;
private static Image watermark_600
{
get
{
if (_watermark_600 == null)
_watermark_600 = Image.FromFile(HttpContext.Current.Server.MapPath(@"~/content/Images/watermark600.png"));
return _watermark_600;
}
}
then,然后,
public static byte[] AddWaterMark(byte[] fileContent)
{
if (fileContent == null)
return null;
//create a image object containing the photograph to watermark
using (var img = new ImageFactory())
using (var imgWatermark = new ImageLayer())
{
img.Load(fileContent);
if (img.Image.Width < 750 && img.Image.Height < 750)
imgWatermark.Image = (Image)watermark_200.Clone();
else if (img.Image.Width < 1500 && img.Image.Height < 1500)
imgWatermark.Image = (Image)watermark_400.Clone();
else if (img.Image.Width < 2500 && img.Image.Height < 2500)
imgWatermark.Image = (Image)watermark_600.Clone();
else
imgWatermark.Image = (Image)watermark_800.Clone();
int x = Math.Abs((img.Image.Width - imgWatermark.Image.Width)) / 2;
int y = Math.Abs((img.Image.Height - imgWatermark.Image.Height)) / 2;
imgWatermark.Position = new Point(x, y);
imgWatermark.Opacity = 90;
img.Overlay(imgWatermark);
using (MemoryStream msbyte = new MemoryStream())
{
img.Save(msbyte);
return msbyte.ToArray();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.