forked from sNeeds/PDF-Watermarker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
watermarker.py
62 lines (52 loc) · 2.29 KB
/
watermarker.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from os import walk
from reportlab.pdfgen import canvas
from PyPDF2 import PdfFileWriter, PdfFileReader
def get_pdf_list():
r = []
for (dirpath, dirnames, filenames) in walk("./input"):
r.extend(filenames)
break
return r
canvas_width = 566
# Create the watermark from an image
c = canvas.Canvas('bin/sample-watermark.pdf')
c.drawImage('bin/logo.png', canvas_width - 500, 100, width=500, height=500,
mask='auto', preserveAspectRatio=True)
c.drawString(canvas_width - 500, 12, "Downloaded from https://diplomate.greybits.in/ - Contributed By Sumit Rawat")
c.save()
# large watermark sample for high res PDFs
# canvas_width = 566
# Create the watermark from an image
# c = canvas.Canvas('bin/sample-watermark--large.pdf')
# c.drawImage('bin/logo.png', canvas_width+int((canvas_width-1200)/2), 100, width=1200, height=1200,
# mask='auto', preserveAspectRatio=True)
# c.drawString(canvas_width - 500, 12, "Downloaded from https://diplomate.greybits.in/")
# c.save()
right_pdf_list = get_pdf_list()
print("\nRIGHT PDFs : ")
for booklet_name in right_pdf_list:
try:
watermark = PdfFileReader(open("bin/sample-watermark.pdf", "rb"))
# large_watermark = PdfFileReader(open("bin/sample-watermark--large.pdf", "rb"))
output_file = PdfFileWriter()
input_file = PdfFileReader(open("input/" + booklet_name, "rb"))
page_count = input_file.getNumPages()
# Go through all the left-watermarker file pages to add a watermark to them
for page_number in range(page_count):
print(booklet_name + ": Watermarking page {} of {}".format(page_number, page_count - 1))
input_page = input_file.getPage(page_number)
# setting a pdf scale to avoid creating different watermarks
input_page.scaleTo(width=612,height=792)
# changing watermark according to PDF size
# print(list(input_page.mediaBox))
# if list(input_page.mediaBox)[3] > 1500:
# input_page.mergePage(large_watermark.getPage(0))
# else:
# input_page.mergePage(watermark.getPage(0))
input_page.mergePage(watermark.getPage(0))
output_file.addPage(input_page)
with open("output/" + booklet_name, "wb") as outputStream:
output_file.write(outputStream)
except Exception as e:
print(e)
continue