attachment
attachment

In this bio data remove all images and use this new image I have uploaded with changes I am writing down Remove July 2023 and remove () also and make it manmed na hovathi only and remove Mata pita bhai ni vigato and change it to family and change bhantar ni vigato to abhyas and remove whole nokri ni vigato and in adress write only Gandhinagar and make this simple in one lines not in separate side to side details written

Reading File
Running Command

cd /home/daytona/workspace/attachments/c726f31b-e8f1-4dc8-b0ec-af23a53dff6a/ && python3 -c " import pdfplumber with pdfplumber.open('kamini_biodata_.pdf') as pdf: for i, page in enumerate(pdf.pages): print(f'=== PAGE {i+1} ===') text = page.extract_text() print(text) print() "

Running Command

mkdir -p /home/daytona/workspace/kamini-biodata && curl -sL "https://d361swluvexzqs.cloudfront.net/chats-attachments/Use-AI-Image-Jun-4-2026-12_35_43-1780557547892-aue4rl.png" -o /home/daytona/workspace/kamini-biodata/photo.png && echo "Downloaded" && file /home/daytona/workspace/kamini-biodata/photo.png

Running Command

fc-list :lang=gu | head -20

Running Command

fc-list | grep -i "noto\|gujarati\|lohit\|hind" | head -20

Running Command

fc-list | head -30 && python3 -c "from reportlab.pdfbase import pdfmetrics; print('reportlab ok')"

Running Command

pip install --user --quiet babelstone-han 2>/dev/null; pip show Pillow 2>/dev/null | head -2; python3 -c "from PIL import Image; print('PIL ok')"

Running Command

# Download NotoSansGujarati font curl -sL "https://github.com/googlefonts/noto-fonts/raw/main/hinted/ttf/NotoSansGujarati/NotoSansGujarati-Regular.ttf" -o /home/daytona/workspace/kamini-biodata/NotoSansGujarati-Regular.ttf && echo "Font downloaded" && ls -lh /home/daytona/workspace/kamini-biodata/

Running Command

# Also download bold variant curl -sL "https://github.com/googlefonts/noto-fonts/raw/main/hinted/ttf/NotoSansGujarati/NotoSansGujarati-Bold.ttf" -o /home/daytona/workspace/kamini-biodata/NotoSansGujarati-Bold.ttf && echo "Bold font downloaded"

Writing File

~/kamini-biodata/build_biodata.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from PIL import Image
import os

# ── Paths ──────────────────────────────────────────────────────────────────
BASE    = "/home/daytona/workspace/kamini-biodata/"
FONT_R  = BASE + "NotoSansGujarati-Regular.ttf"
FONT_B  = BASE + "NotoSansGujarati-Bold.ttf"
PHOTO   = BASE + "photo.png"
OUTPUT  = BASE + "kamini_biodata_new.pdf"

# ── Register fonts ─────────────────────────────────────────────────────────
pdfmetrics.registerFont(TTFont("Guj",     FONT_R))
pdfmetrics.registerFont(TTFont("GujBold", FONT_B))

# ── Page setup ─────────────────────────────────────────────────────────────
W, H = A4          # 595.27 x 841.89 pt
c    = canvas.Canvas(OUTPUT, pagesize=A4)

# ── Colours ────────────────────────────────────────────────────────────────
MAROON  = colors.HexColor("#7B1C1C")
GOLD    = colors.HexColor("#C8960C")
CREAM   = colors.HexColor("#FFF8EC")
LGOLD   = colors.HexColor("#F5E6C0")
WHITE   = colors.white

# ══════════════════════════════════════════════════════════════════════════
#  HEADER BAND
# ══════════════════════════════════════════════════════════════════════════
header_h = 90
c.setFillColor(MAROON)
c.rect(0, H - header_h, W, header_h, fill=1, stroke=0)

# Decorative gold lines
c.setStrokeColor(GOLD)
c.setLineWidth(2)
c.line(0, H - header_h + 3, W, H - header_h + 3)
c.line(0, H - header_h,     W, H - header_h)

# Title in header
c.setFillColor(GOLD)
c.setFont("GujBold", 26)
c.drawCentredString(W / 2, H - 52, "લગ્ન પરિચય પત્ર")

c.setFillColor(WHITE)
c.setFont("Guj", 11)
c.drawCentredString(W / 2, H - 72, "કામિની કનુભાઈ વાલેરા  |  હિન્દુ વણકર  |  ગાંધીનગર  |  ૯૯૯૮૩ ૧૪૬૭૧")

# ══════════════════════════════════════════════════════════════════════════
#  PHOTO  (right side)
# ══════════════════════════════════════════════════════════════════════════
photo_w = 140
photo_h = 170
photo_x = W - photo_w - 28
photo_y = H - header_h - photo_h - 18

# Draw photo border
c.setStrokeColor(GOLD)
c.setLineWidth(2.5)
c.roundRect(photo_x - 3, photo_y - 3, photo_w + 6, photo_h + 6, 6, fill=0, stroke=1)

c.drawImage(PHOTO, photo_x, photo_y, width=photo_w, height=photo_h,
            preserveAspectRatio=True, mask='auto')

# ══════════════════════════════════════════════════════════════════════════
#  BODY  ─  helper to draw labelled rows
# ══════════════════════════════════════════════════════════════════════════
LEFT_X  = 28          # left margin
COL_W   = 200         # label column width
VAL_X   = LEFT_X + COL_W
SECTION_TOP = H - header_h - 20    # first section title y

def section_title(y, text):
    """Draw a full-width section header bar."""
    c.setFillColor(MAROON)
    c.rect(LEFT_X - 4, y - 4, W - 2 * LEFT_X + 8, 22, fill=1, stroke=0)
    c.setFillColor(GOLD)
    c.setFont("GujBold", 13)
    c.drawString(LEFT_X + 2, y + 3, text)
    return y - 22    # returns y just below bar

def row(y, label, value, bold_val=False):
    """Draw one data row (label : value) on a single line."""
    c.setFillColor(MAROON)
    c.setFont("GujBold", 11)
    c.drawString(LEFT_X, y, label + " :")
    c.setFillColor(colors.HexColor("#2C2C2C"))
    font = "GujBold" if bold_val else "Guj"
    c.setFont(font, 11)
    c.drawString(VAL_X, y, value)
    return y - 18    # move down one row

def divider(y):
    c.setStrokeColor(LGOLD)
    c.setLineWidth(0.5)
    c.line(LEFT_X, y + 10, W - LEFT_X, y + 10)
    return y

# Cream background for body
c.setFillColor(CREAM)
c.rect(0, 0, W, H - header_h, fill=1, stroke=0)

# ── Available width for text = up to photo left edge ──────────────────────
# (labels + values fit in left portion, photo is on right)

y = SECTION_TOP - 8

# ── SECTION 1: વ્યક્તિગત વિગતો ────────────────────────────────────────────
y = section_title(y, "  વ્યક્તિગત વિગતો")
y -= 4
y = row(y, "નામ",         "કામિની કનુભાઈ વાલેરા")
y = row(y, "જાતિ",        "SC વણકર")
y = row(y, "ધર્મ",        "હિન્દુ")
y = row(y, "જન્મ તારીખ", "૨૦/૦૬/૧૯૯૩")
y = row(y, "જન્મ સ્થળ",  "ગાંધીનગર")
y = row(y, "જન્મ સમય",   "રાત્રે ૯:૩૦ કલાકે")
y = row(y, "ઊંચાઈ",      "૫ ફૂટ ૩ ઇંચ")
y = row(y, "વજન",        "૬૦ કિલો")
y = row(y, "દેખાવ",      "ગોરો")
y = row(y, "ખોડ ખાંપણ", "નથી")
y = row(y, "છૂટાછેડા",   "મનમેળ ન હોવાથી")
y -= 6
y = divider(y)
y -= 6

# ── SECTION 2: અભ્યાસ ─────────────────────────────────────────────────────
y = section_title(y, "  અભ્યાસ")
y -= 4
y = row(y, "ડિગ્રી", "એમ.એ. (સંસ્કૃત)")
y = row(y, "ધ્યેય",  "સ્પર્ધાત્મક પરીક્ષાની તૈયારી")
y -= 6
y = divider(y)
y -= 6

# ── SECTION 3: પરિવાર ─────────────────────────────────────────────────────
y = section_title(y, "  પરિવાર")
y -= 4
y = row(y, "ભાઈ", "નાનો ભાઈ – MD Medicine ડૉક્ટર")
y -= 6
y = divider(y)
y -= 6

# ── SECTION 4: સરનામું / સંપર્ક ──────────────────────────────────────────
y = section_title(y, "  સરનામું  /  સંપર્ક")
y -= 4
y = row(y, "સરનામું",    "ગાંધીનગર")
y = row(y, "ગામ",        "બોર સણા (કડી)")
y = row(y, "રહેઠાણ",    "ગાંધીનગર")
y = row(y, "મોસાળ",     "વાવોલ, ગાંધીનગર – ૨૮૨")
y = row(y, "પિતાનું મોસાળ", "રાંધેજા")
y = row(y, "માતાનું મોસાળ", "વામજ")
y = row(y, "પરગણું",    "૨૮૨")
y = row(y, "ફોન નંબર",  "૯૯૯૮૩ ૧૪૬૭૧")
y -= 6
y = divider(y)
y -= 6

# ── SECTION 5: અપેક્ષા ────────────────────────────────────────────────────
y = section_title(y, "  અપેક્ષા")
y -= 4
y = row(y, "અપેક્ષા", "સરકારી નોકરી કરતા, સારો અભ્યાસ ધરાવતા.")

# ══════════════════════════════════════════════════════════════════════════
#  FOOTER BAND
# ══════════════════════════════════════════════════════════════════════════
footer_h = 30
c.setFillColor(MAROON)
c.rect(0, 0, W, footer_h, fill=1, stroke=0)
c.setStrokeColor(GOLD)
c.setLineWidth(1.5)
c.line(0, footer_h, W, footer_h)
c.setFillColor(GOLD)
c.setFont("Guj", 10)
c.drawCentredString(W / 2, 10, "કામિની કનુભાઈ વાલેરા  |  હિન્દુ વણકર  |  ગાંધીનગર  |  ૯૯૯૮૩ ૧૪૬૭૧")

# ── Save ───────────────────────────────────────────────────────────────────
c.save()
print(f"PDF saved: {OUTPUT}")
Running Command

cd /home/daytona/workspace/kamini-biodata && python3 build_biodata.py

Running Command

ls -lh /home/daytona/workspace/kamini-biodata/kamini_biodata_new.pdf

Your new biodata PDF is ready! Here is the download link:

kamini biodata new

PDF Document · PDF

Here is a summary of every change made:
What you askedWhat was done
Remove all old imagesAll original photos removed
Use new uploaded photoYour new photo placed on the right side
Remove "July 2023"Removed from છૂટાછેડા field
Remove () bracketsRemoved - now shows only "મનમેળ ન હોવાથી"
"Mata pita bhai ni vigato" sectionRenamed to પરિવાર (Family), kept only brother info
"Bhantar ni vigato" sectionRenamed to અભ્યાસ (Education)
Remove whole Nokri ni vigatoEntire job/employment section removed
AddressSimplified to just ગાંધીનગર
Simple single-line layoutAll details written in clean single rows, not side-by-side columns
This is a shared conversation. Sign in to Orris to start your own chat.