这几天有个需求,用户打开pdf需要添加浮水印,网上很少aspose 的代码信息,刚开始用watermark,会覆盖到原来的pdf,英文渣渣,可能哪里没注意到,捣鼓了半天用stamp 弄出来了,主要代码
Aspose.Pdf.Facades.FormattedText formattedText = new Aspose.Pdf.Facades.FormattedText(strWatermark, new Aspose.Pdf.Facades.FontColor(211, 178, 130) , Aspose.Pdf.Facades.FontStyle.Helvetica, Aspose.Pdf.Facades.EncodingType.Identity_h, true, 18F);
int height =Convert.ToInt32(pdfDocument.PageInfo.Height);
int width = Convert.ToInt32(pdfDocument.PageInfo.Width);
int textSpace = height/5;
int pageCount = pdfDocument.Pages.Count;
int rightMagin=50;
float opacity=0.6;
int rotateAngle=20;
int stampRowCount=6;
for (int j = 1; j <= pageCount; j++)
{
for (int i = 0; i < stampRowCount; i++)
{
var textStamp = new Aspose.Pdf.TextStamp(formattedText)
{
VerticalAlignment = Aspose.Pdf.VerticalAlignment.Top,
HorizontalAlignment = Aspose.Pdf.HorizontalAlignment.Center,
};
var textStampLeft = new Aspose.Pdf.TextStamp(formattedText)
{
VerticalAlignment = Aspose.Pdf.VerticalAlignment.Top,
HorizontalAlignment = Aspose.Pdf.HorizontalAlignment.Left,
};
var textStampRight = new Aspose.Pdf.TextStamp(formattedText)
{
VerticalAlignment = Aspose.Pdf.VerticalAlignment.Top,
HorizontalAlignment = Aspose.Pdf.HorizontalAlignment.Right,
};
int marginHeight = i * textSpace + 20;
textStamp.Opacity = opacity;
textStamp.RotateAngle = rotateAngle;
textStamp.TopMargin = marginHeight;
textStampLeft.Opacity =opacity;
textStampLeft.RotateAngle = rotateAngle;
textStampLeft.TopMargin = marginHeight;
textStampRight.Opacity = opacity;
textStampRight.RotateAngle =rotateAngle;
textStampRight.TopMargin = marginHeight;
textStampRight.RightMargin = rightMagin;
pdfDocument.Pages[j].AddStamp(textStamp);
pdfDocument.Pages[j].AddStamp(textStampLeft);
pdfDocument.Pages[j].AddStamp(textStampRight);
}
}
string fileName = uuid + ".pdf";
pdfDocument.Save(uploadpath +fileName);