Our every-page watermark takes over 5 minutes to finish a 146 page document…we need to support 1000+ documents.
We can scale up our containers to address some of this, but are there code techniques to apply the stamp more efficiently?
//SET DRAFT WATERMARK AND SAVE THE DOC
using (var pdfDocument = new Aspose.Pdf.Document(sourceStream))
{
MakeNotEditable(pdfDocument);
using (var watermarkStream = await watermarkBlobClient.OpenReadAsync())
{
var fileStamp = new PdfFileStamp();
fileStamp.BindPdf(pdfDocument);
// Create stamp
var stamp = new Aspose.Pdf.Facades.Stamp();
stamp.BindImage(watermarkStream);
stamp.SetOrigin(-180, -50);
stamp.Rotation = 45.0F;
stamp.IsBackground = false;
pdfDocument.Flatten();
// Add stamp to PDF file
fileStamp.AddStamp(stamp);
using (var writeStream = await reportDocBlobClient.OpenWriteAsync(true))
{
fileStamp.Save(writeStream);
}
fileStamp.Close();
}
}
private static void MakeNotEditable(Aspose.Pdf.Document pdfDocument)
{
//Forbid all privileges on the document
var privilege = DocumentPrivilege.ForbidAll;
privilege.AllowPrint = true;
privilege.AllowCopy = true;
var fileSecurity = new PdfFileSecurity();
fileSecurity.BindPdf(pdfDocument);
fileSecurity.SetPrivilege(privilege);
}