日期:2014-05-17  浏览次数:20482 次

求助,asp.net中将office文件转成pdf,并加上水印,现在水印加不上
现在已经实现了,转成pdf。
我通过flashpaper实现了转成pdf。
但是加水印中,如下代码
 public static bool PDFWatermark(string inputfilepath, string outputfilepath, string ModelPicName, float top, float left, ref string strMsg)
  {
  PdfReader pdfReader = null;
  PdfStamper pdfStamper = null;
  try
  {
  //pdf读取器
  pdfReader = new PdfReader(inputfilepath);
  //页数
  int numberOfPages = pdfReader.NumberOfPages;
  //页的大小
  iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);
  float width = psize.Width;
  float height = psize.Height;
  //生成的pdf
  pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create));

  PdfContentByte waterMarkContent;
  //用于水印的图片
  iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(ModelPicName);

  image.GrayFill = 60;//透明度,灰色填充
  image.ImageMask.Transparency = new int[]{50,50};
  image.InitialRotation = 2;
  image.Interpolation = true;
  image.MakeMask();
  //image.Rotation//旋转
  //image.RotationDegrees//旋转角度
  //水印的位置 
  if (left < 0)
  {
  left = width - image.Width + left;
  }
   
  image.SetAbsolutePosition(left, (height - image.Height) - top);


  //每一页加水印,也可以设置某一页加水印 
  for (int i = 1; i <= numberOfPages; i++)
  {
  waterMarkContent = pdfStamper.GetUnderContent(i);
   
  waterMarkContent.AddImage(image);
  }
  strMsg = "success";
  return true;
  }
  catch (Exception ex)
  {
  strMsg = ex.Message.Trim();
  return false;
  }
  finally
  {

  if (pdfStamper != null)
  pdfStamper.Close();

  if (pdfReader != null)
  pdfReader.Close();
  }
  }

waterMarkContent = pdfStamper.GetUnderContent(i)
换成
waterMarkContent = pdfStamper.GetOverContent(i)可以加上,水印浮在内容上面了。
因此我联想到使用GetUnderContent方法的时候是因为水印被背景覆盖了。
求高手帮忙!

------解决方案--------------------
iTextsharp 免費的是這樣了。問問作者吧