问题描述
下面这段代码是iTextSharp.dll组件给pdf水印,代码运行正常。请教大家一个问题,如何修改代码直接在原pdf文件上加水印,而不是传入新文件加水印后输出新的pdf文件。publicboolPDFWatermark(stringinputfilepath,stringoutputfilepath,stringModelPicName,floatbottom,floatright){PdfReaderpdfReader=null;PdfStamperpdfStamper=null;try{pdfReader=newPdfReader(inputfilepath);intnumberOfPages=pdfReader.NumberOfPages;iTextSharp.text.Rectanglepsize=pdfReader.GetPageSize(1);floatwidth=psize.Width;floatheight=psize.Height;pdfStamper=newPdfStamper(pdfReader,newFileStream(outputfilepath,FileMode.Create));PdfContentBytewaterMarkContent;iTextSharp.text.Imageimage=iTextSharp.text.Image.GetInstance(ModelPicName);image.GrayFill=0.3f;//透明度,灰色填充//水印的位置if(right<0){right=width-image.Width+right;}image.SetAbsolutePosition(right,(height-image.Height)-bottom);waterMarkContent=pdfStamper.GetUnderContent(1);waterMarkContent.AddImage(image);returntrue;}catch(Exceptionex){ex.Message.Trim();returnfalse;}finally{if(pdfStamper!=null)pdfStamper.Close();if(pdfReader!=null)pdfReader.Close();//添加水印成功}}//添加水印
解决方案
解决方案二:
方法一试试看inputfilepath、outputfilepath两个都一样,指向同一个文件,是否运行正常如果不行,那就在调用成功后if(PDFWatermark(参数列表)){System.IO.File.Delete(inputfilepath);System.IO.File.Move(outputfilepath,inputfilepath);}