creating watermark for multiple files modified
Published Oct. 18, 2024, 3:42 p.m. by
from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter,A0,A4,landscape
from decimal import Decimal
from pathlib import Path
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.colors import Color, black, blue, red
from reportlab.pdfbase.ttfonts import TTFont
import io
import sys
import os
change xxx to your user name
sys.path.append(os.path.abspath("c:/users/xxxx/appdata/roaming/python/python310/site-packages"))
pdfmetrics.registerFont(TTFont('Vera', 'Vera.ttf'))
pdfmetrics.registerFont(TTFont('VeraBd', 'VeraBd.ttf'))
pdfmetrics.registerFont(TTFont('VeraIt', 'VeraIt.ttf'))
pdfmetrics.registerFont(TTFont('VeraBI', 'VeraBI.ttf'))
draw the text
listofpdfFiles=[]
put the pdf files to watermark on the same folder as the python script
def getPdfFiles():
root = "." # take the current directory as root
for path in Path(root).glob("**/*.pdf"):
listofpdfFiles.append(path)
def drawText(packet,width,height,text,textsize):
c = canvas.Canvas(packet, landscape(pagesize=A0))
c.saveState()
#c.setFillColorRGB(255, 0, 0) #choose your font colour
red50transparent = Color( 100, 0, 0, alpha=0.5)
black50transparent = Color( 0, 0, 0, alpha=0.5)
c.setFillColor(black50transparent)
#c.setFillColorRGB(255, 0, 0) #choose your font colour
c.setFont('Vera', textsize)
c.translate(width, height)
c.rotate(30)
c.drawString(0, 0, text)
c.restoreState()
c.save()
Function to add text to an existing PDF
def add_text_to_pdf(input_pdf, output_pdf, text):
# Read the existing PDF
reader = PdfReader(input_pdf, strict=False)
writer = PdfWriter()
# create a new PDF with Reportlab
packet = io.BytesIO()
packet.seek(0)
# read your existing PDF
existing_pdf = PdfReader(input_pdf, strict=False)
output = PdfWriter()
# add the "watermark" (which is the new pdf) on the existing page
for i in range(len(existing_pdf.pages)):
page = reader.pages[i]
width = float(page.mediabox.width)
height = float(page.mediabox.height)
# actual size of the pdf file
lox = 0.5*float(page.mediabox.width)*25.4/72
locy = 0.5*float(page.mediabox.height)*25.4/72
print(width,height)
#print(2*locx,2*locy)
textsize=width/20 # text size relative to width of pdf
textsize2=height/20
print("textsize",textsize)
faktor=3
drawText(packet,0.5*width-faktor*textsize, 0.5*height-faktor*textsize2,text,textsize)
new_pdf = PdfReader(packet)
page = existing_pdf.pages[i]
page.merge_page(new_pdf.pages[0])
output.add_page(page)
# finally, write "output" to a real file
outputStream = open(output_pdf, "wb")
output.write(outputStream)
outputStream.close()
Example usage
getPdfFiles()
change the path to where your pdf files will be copied 'C:/Users/xxxx/Documents/pdfcopy/'
for fl in listofpdfFiles:
add_text_to_pdf(fl, 'C:/Users/xxxx/Documents/pdfcopy/'+fl.__str__(), "Vorläufige Plan")
print("finished")
Similar posts
water mark on plans with python script
7 comments
Comment 2 by suchtthera_ljPi Sept. 27, 2025, 7:27 a.m.
Viele Menschen sehen sich mit verschiedenen Herausforderungen konfrontiert, wenn sie mit Sucht kampfen.
private entzugsklinik [url=entzugsklinik.pro]https://entzugsklinik.pro/[/url]
Comment 3 by 1win_vjsl Oct. 2, 2025, 10:39 p.m.
With its extensive offerings and easy navigation, the 1win app stands out in the competitive betting market.
1win casino app [url=http://1win-app.bet/]https://1win-app.bet/[/url]
Comment 4 by 888starz_vdst Oct. 4, 2025, 1:14 a.m.
إحدى الخصائص البارزة ل888starz مصر هي سهولة استخدام واجهتها.
888starz تحميل [url=https://www.888starz-egypts.com/apk/]https://888starz-egypts.com/apk/[/url]
Comment 5 by vykup_grKn Oct. 9, 2025, 4:41 a.m.
Выгодный способ справиться с автомобилем – это выкуп таких транспортных средств. Некоторые автолюбители столкнулись с необходимостью своего поврежденного автомобиля. забирает времени и денег.
Фирмы, занимающиеся обменом битых авто, предоставляют варианты продажи. выручают. Иногда условия радовали, и они с удовольствием свои транспорт.
В начале услугами обмена, изучить в данной области. Кроме, существует и множество преимущества, что к сотрудничеству. Среди таких плюсов – высококачественная оценка транспортного средства.
Профессиональные специалисты стоимость и предлагают наилучший выход. Это, чтобы аварийный автомобиль быстро. Используйте услугам выкупа битых авто чтобы.
выкуп авто на запчасти целиком [url=https://www.vykup-bityh-avto-posle-dtp.ru/prodat-avto-na-razborku.php/]https://vykup-bityh-avto-posle-dtp.ru/prodat-avto-na-razborku.php/[/url]
Comment 6 by kupit_iasi Oct. 15, 2025, 7:27 a.m.
Важно помнить, что угги должны быть качественными и удобными.
купить угги в москве [url=https://www.uggiaustralia-msk.ru/collection/muzhskie-uggi]https://uggiaustralia-msk.ru/collection/muzhskie-uggi/[/url]
Comment 7 by minecraft_qvpa Oct. 18, 2025, 3:31 a.m.
Moreover, Minecraft Bedrock Edition has frequent updates that introduce new content.
horror mod mcpe [url=minecraftbedrock-apk.com/mods-minecraft-pe/horror-mod]https://minecraftbedrock-apk.com/mods-minecraft-pe/horror-mod/[/url]
Comment 1 by 888starz_hjkr Sept. 17, 2025, 7:29 a.m.
Shu bilan birga, platformada ajoyib bonuslar va aksiyalar mavjud.
Jonli dilerlar bilan oʻynash esa haqiqiy kazino tajribasini beradi.
Har oyda turli aksiyalar va cashback imkoniyatlari ishlab chiqiladi.
Plastik kartalar, elektron hamyonlar va kriptovalyutalar qabul qilinadi.
888starz uz [url=888starz-uzbekistan.ru]https://888starz-uzbekistan.ru/[/url]