Steps to add a watermark to every page of a pdf report
-
Create a watermark pdf with transparent background using LibreWriter set page transparency to 100 add watermark from Format > Watermark or
-
create on the fly using reportlab like How to watermark your PDF files with Python. | by Samantha O. | Medium
-
create pdf in frappe using one of the ususal methods… get_pdf and pass output to method below
def add_watermark(pdf_file, watermark_pdf=None):
from frappe.email.email_body import get_filecontent_from_path
from frappe.utils.pdf import get_file_data_from_writer
if not watermark_pdf:
# load watermark.pdf from /private/files
watermark_pdf = "watermark_draft.pdf"
path = get_files_path(watermark_pdf, is_private=True)
watermark_pdf = PyPDF2.PdfFileReader(path)
import io
input_pdf = PyPDF2.PdfFileReader(io.BytesIO(pdf_file))
writer = PyPDF2.PdfFileWriter()
page_count = input_pdf.getNumPages()
for page_number in range(page_count):
input_page = input_pdf.getPage(page_number)
input_page.mergePage(watermark_pdf.getPage(0))
writer.addPage(input_page)
filedata = get_file_data_from_writer(writer)
return filedata