All Tools / Blog / PDF में पेज नंबर कैसे जोड़ें (मुफ़्त, बिना इंस्टॉल किए)

PDF में पेज नंबर कैसे जोड़ें (मुफ़्त, बिना इंस्टॉल किए)

4 min read

रिपोर्ट, थीसिस या कॉन्ट्रैक्ट सबमिट करने से पहले PDF में पेज नंबर जोड़ना एक आम ज़रूरत है। ज़्यादातर PDF सॉफ़्टवेयर या तो पैसे लेते हैं या एक ऐसा ऐप इंस्टॉल कराते हैं जो बाद में किसी काम नहीं आता। नीचे दोनों से बचने के तरीके दिए गए हैं।

ब्राउज़र में (बिना इंस्टॉल किए)

PDF पेज नंबर टूल खोलें, PDF अपलोड करें, पोज़िशन चुनें (ऊपर या नीचे, बाएं/बीच/दाएं), फ़ॉन्ट साइज़ और मार्जिन सेट करें, और रिज़ल्ट डाउनलोड करें। सब कुछ ब्राउज़र में होता है — फ़ाइल आपके डिवाइस से बाहर नहीं जाती।

यह ज़्यादातर सामान्य PDF के साथ काम करता है: स्कैन किए दस्तावेज़, Word से निर्यात की रिपोर्ट, और किसी भी एप्लिकेशन से बने PDF।

Python: pypdf

pypdf एक शुद्ध Python लाइब्रेरी है जो बिना किसी बाइनरी डिपेंडेंसी के PDF पढ़ और लिख सकती है।

pip install pypdf reportlab
from pypdf import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
import io

def add_page_numbers(input_path: str, output_path: str, start: int = 1):
    reader = PdfReader(input_path)
    writer = PdfWriter()

    for i, page in enumerate(reader.pages):
        page_num = i + start

        # केवल पेज नंबर वाला PDF ओवरले बनाएं
        packet = io.BytesIO()
        c = canvas.Canvas(packet, pagesize=(
            float(page.mediabox.width),
            float(page.mediabox.height)
        ))

        # नीचे बीच में पेज नंबर लिखें
        c.setFont('Helvetica', 10)
        x = float(page.mediabox.width) / 2
        y = 20  # नीचे से 20 पॉइंट
        c.drawCentredString(x, y, str(page_num))
        c.save()

        # ओवरले को पेज में मर्ज करें
        packet.seek(0)
        from pypdf import PdfReader as PR
        overlay = PR(packet).pages[0]
        page.merge_page(overlay)
        writer.add_page(page)

    with open(output_path, 'wb') as f:
        writer.write(f)

add_page_numbers('report.pdf', 'report-numbered.pdf')

पहला पेज छोड़ें (कवर पेज):

def add_page_numbers_skip_first(input_path: str, output_path: str):
    reader = PdfReader(input_path)
    writer = PdfWriter()

    for i, page in enumerate(reader.pages):
        if i == 0:
            # पहला पेज बिना नंबर के कॉपी करें
            writer.add_page(page)
            continue

        page_num = i  # पेज 2 को नंबर 1 मिलता है (i=1)
        packet = io.BytesIO()
        c = canvas.Canvas(packet, pagesize=(
            float(page.mediabox.width),
            float(page.mediabox.height)
        ))
        c.setFont('Helvetica', 10)
        c.drawCentredString(float(page.mediabox.width) / 2, 20, str(page_num))
        c.save()

        packet.seek(0)
        overlay = PdfReader(packet).pages[0]
        page.merge_page(overlay)
        writer.add_page(page)

    with open(output_path, 'wb') as f:
        writer.write(f)

"पेज X / Y" फ़ॉर्मेट:

def add_page_numbers_with_total(input_path: str, output_path: str):
    reader = PdfReader(input_path)
    total = len(reader.pages)
    writer = PdfWriter()

    for i, page in enumerate(reader.pages):
        packet = io.BytesIO()
        c = canvas.Canvas(packet, pagesize=(
            float(page.mediabox.width),
            float(page.mediabox.height)
        ))
        c.setFont('Helvetica', 10)
        label = f'पेज {i + 1} / {total}'
        c.drawCentredString(float(page.mediabox.width) / 2, 20, label)
        c.save()

        packet.seek(0)
        overlay = PdfReader(packet).pages[0]
        page.merge_page(overlay)
        writer.add_page(page)

    with open(output_path, 'wb') as f:
        writer.write(f)

Python: fpdf2 (नया PDF बनाते समय)

अगर आप शुरू से PDF बना रहे हैं और पेज नंबर बिल्ट-इन चाहते हैं:

from fpdf import FPDF

class NumberedPDF(FPDF):
    def footer(self):
        self.set_y(-15)  # नीचे से 15mm
        self.set_font('Helvetica', 'I', 8)
        self.cell(0, 10, f'पेज {self.page_no()}', align='C')

pdf = NumberedPDF()
pdf.set_auto_page_break(auto=True, margin=15)

for i in range(1, 6):
    pdf.add_page()
    pdf.set_font('Helvetica', size=12)
    pdf.cell(0, 10, f'पेज {i} की सामग्री', ln=True)

pdf.output('document-with-numbers.pdf')

कमांड लाइन: pdftk

pdftk PDF मैनिपुलेशन के लिए एक बहुउद्देशीय टूल है। यह सीधे पेज नंबर नहीं जोड़ता, लेकिन एक वॉटरमार्क PDF (जिसमें पेज नंबर हों) को हर पेज पर स्टैंप कर सकता है।

# इंस्टॉल करें
brew install pdftk-java         # macOS
sudo apt install pdftk          # Ubuntu

# अलग-अलग पेज में बांटें
pdftk input.pdf burst output page_%04d.pdf

# दूसरे टूल से नंबर जोड़ने के बाद पुनः जोड़ें
pdftk page_*.pdf cat output numbered.pdf

इस काम के लिए ऊपर दिया Python तरीका सरल है।

कमांड लाइन: cpdf (व्यावसायिक, गैर-व्यावसायिक उपयोग मुफ़्त)

cpdf सबसे शक्तिशाली कमांड-लाइन PDF टूल है और इसमें पेज नंबरिंग सीधे बनी है:

# नीचे बीच में पेज नंबर जोड़ें
cpdf -add-text "%Page" -bottom 20pt input.pdf -o output.pdf

# "पेज X / Y" फ़ॉर्मेट
cpdf -add-text "Page %Page of %EndPage" -bottom 20pt -font "Helvetica" -font-size 10 input.pdf -o output.pdf

# ऊपर दाईं ओर
cpdf -add-text "%Page" -topright 20pt input.pdf -o output.pdf

# किसी निश्चित पेज से नंबरिंग शुरू करें (पहले 2 पेज छोड़ें)
cpdf -add-text "%Page" -bottom 20pt -firstpage 3 input.pdf -o output.pdf

पोज़िशन के विकल्प

पोज़िशन फ़ॉर्मेट सामान्य उपयोग
नीचे बीच में 1, 2, 3 रिपोर्ट, थीसिस, किताबें
नीचे दाईं ओर 1, 2, 3 बिज़नेस दस्तावेज़
ऊपर बीच में 1, 2, 3 कुछ अकादमिक जर्नल
नीचे बीच में पेज 1 / 10 कानूनी दस्तावेज़, कॉन्ट्रैक्ट
बाएं/दाएं बारी-बारी 1 / 1 डबल-साइडेड प्रिंट

ज़्यादातर मामलों में नीचे बीच में सरल नंबर सबसे अच्छा विकल्प है — यही पाठक की अपेक्षा होती है।

मुख्य बातें

  • ब्राउज़र टूल बिना किसी सॉफ़्टवेयर के एक बार की नंबरिंग के लिए काम करता है।
  • pypdf + reportlab Python में पूरा नियंत्रण देता है — पोज़िशन, फ़ॉन्ट, फ़ॉर्मेट, पेज छोड़ना सब कुछ।
  • शुरू से PDF बनाते समय fpdf2 सबसे आसान है।
  • cpdf ऑटोमेशन स्क्रिप्ट के लिए सबसे शक्तिशाली कमांड-लाइन विकल्प है।
  • कवर पेज होने पर पेज 2 से नंबरिंग शुरू करें — कवर पर "1" नहीं दिखना चाहिए।