Untitled

 avatar
unknown
plain_text
a year ago
3.1 kB
16
Indexable
# pip install reportlab
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm
from reportlab.pdfgen import canvas
from reportlab.lib import colors
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import Image

# ---------- SETTINGS ----------
OUTPUT_PDF = "deuti_bajyai_letterhead.pdf"
# <-- यो फन्ट फाइल डाउनलोड गरी same folder मा राख्नुहोस् (उदाहरण: NotoSansDevanagari)
DEV_FONT_FILE = "NotoSansDevanagari-Regular.ttf"
FONT_NAME = "NotoDeva"

CLUB_NAME = "देउती बज्यै युवा क्लब"
ADDRESS   = "सिम्ता गाउँपालिका–२, सुर्खेत"
LOGO_PATH = "logo.png"  # तपाईंको लोगो फाइलको पथ (PNG/SVG→PNG)

# Colors (रंगीन/आकर्षक)
PRIMARY   = colors.HexColor("#0B5C8E")   # हेडर बार
ACCENT    = colors.HexColor("#C0392B")   # सानो एक्सेन्ट
TEXT_COL  = colors.HexColor("#0A0A0A")

# ---------- REGISTER FONT ----------
pdfmetrics.registerFont(TTFont(FONT_NAME, DEV_FONT_FILE))

# ---------- DRAW PAGE TEMPLATE ----------
def draw_template(c):
    width, height = A4

    # Header band
    c.setFillColor(PRIMARY)
    c.rect(0, height-2.6*cm, width, 2.6*cm, fill=1, stroke=0)

    # Left logo
    if LOGO_PATH:
        try:
            img = Image(LOGO_PATH, width=2.2*cm, height=2.2*cm)
            img.drawOn(c, 2*cm, height-2.4*cm)
        except Exception:
            pass

    # Club name + address (white on header)
    c.setFillColor(colors.white)
    c.setFont(FONT_NAME, 20)
    c.drawString(4.6*cm, height-1.6*cm, CLUB_NAME)
    c.setFont(FONT_NAME, 12)
    c.drawString(4.6*cm, height-2.2*cm, ADDRESS)

    # Accent underline
    c.setStrokeColor(ACCENT)
    c.setLineWidth(2)
    c.line(2*cm, height-2.8*cm, width-2*cm, height-2.8*cm)

    # Footer: signature area guide
    c.setStrokeColor(PRIMARY)
    c.setLineWidth(1)
    c.line(width-8.5*cm, 3.9*cm, width-2*cm, 3.9*cm)

    c.setFillColor(TEXT_COL)
    c.setFont(FONT_NAME, 11)
    c.drawCentredString(width-5.25*cm, 3.4*cm, "अध्यक्ष")
    c.drawCentredString(width-5.25*cm, 2.9*cm, CLUB_NAME)

    # Optional footer bar
    c.setFillColor(PRIMARY)
    c.rect(0, 1.7*cm, width, 0.15*cm, fill=1, stroke=0)

    # Body guide text (you can remove later)
    c.setFillColor(TEXT_COL)
    c.setFont(FONT_NAME, 11)
    c.drawString(2*cm, height-4.1*cm, "पत्र संख्या: .................")
    c.drawString(10*cm, height-4.1*cm, "मिति: .................")
    c.drawString(2*cm, height-5.0*cm, "श्री ..................................................,")

def make_pdf():
    c = canvas.Canvas(OUTPUT_PDF, pagesize=A4)
    # First page (template only)
    draw_template(c)
    c.showPage()
    # If you want multiple blank letter pages, repeat:
    # draw_template(c); c.showPage()
    c.save()
    print(f"Saved: {OUTPUT_PDF}")

if __name__ == "__main__":
    make_pdf()
Editor is loading...
Leave a Comment