Combine all and make. A new pdf
ls -la /tmp/workspace/attachments/0600f624-7e32-45b1-baa3-2cb517716242/
cd /tmp/workspace/attachments/0600f624-7e32-45b1-baa3-2cb517716242/ && python3 -c " from pypdf import PdfReader for f in ['Practice_of_Medicine_PYQ_Sorted.pdf','Practice_of_Medicine_PYQ_Sorted_v2.pdf','Practice_of_Medicine_Sorted_Questions.pdf']: r = PdfReader(f) print(f, 'pages:', len(r.pages)) "
cd /tmp/workspace/attachments/0600f624-7e32-45b1-baa3-2cb517716242/ && python3 -c " import pdfplumber for f in ['Practice_of_Medicine_PYQ_Sorted.pdf','Practice_of_Medicine_PYQ_Sorted_v2.pdf','Practice_of_Medicine_Sorted_Questions.pdf']: print('=====', f) with pdfplumber.open(f) as pdf: for i,p in enumerate(pdf.pages): t = p.extract_text() or '' print('--- page', i+1, '---') print(t[:500]) "
mkdir -p /tmp/workspace/combined && cd /tmp/workspace/combined && python3 << 'EOF' from pypdf import PdfWriter, PdfReader from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter import io src_dir = "/tmp/workspace/attachments/0600f624-7e32-45b1-baa3-2cb517716242" files_in_order = [ (f"{src_dir}/Practice_of_Medicine_Sorted_Questions.pdf", "Part 1: University Question Bank Analysis (Winter 2021, Summer 2022, Winter 2022)"), (f"{src_dir}/Practice_of_Medicine_PYQ_Sorted.pdf", "Part 2: Sorted PYQs (Winter 2023, Summer 2024, Summer 2025)"), (f"{src_dir}/Practice_of_Medicine_PYQ_Sorted_v2.pdf", "Part 3: Sorted PYQs - Updated (Winter 2023, Summer 2023, Summer 2024, Winter 2024, Summer 2025)"), ] # Build cover page buf = io.BytesIO() c = canvas.Canvas(buf, pagesize=letter) width, height = letter c.setFont("Helvetica-Bold", 20) c.drawCentredString(width/2, height-100, "Practice of Medicine") c.drawCentredString(width/2, height-130, "Combined Sorted PYQ Compilation") c.setFont("Helvetica", 12) c.drawCentredString(width/2, height-170, "4th BHMS - Combined Previous Year Question Analysis") y = height - 230 c.setFont("Helvetica-Bold", 13) c.drawString(80, y, "Contents:") c.setFont("Helvetica", 11) y -= 30 for _, label in files_in_order: c.drawString(100, y, "- " + label) y -= 25 c.showPage() c.save() buf.seek(0) writer = PdfWriter() cover_reader = PdfReader(buf) for page in cover_reader.pages: writer.add_page(page) for fpath, label in files_in_order: reader = PdfReader(fpath) for page in reader.pages: writer.add_page(page) out_path = "/tmp/workspace/combined/Practice_of_Medicine_Combined_PYQs.pdf" with open(out_path, "wb") as f: writer.write(f) print("Total pages:", len(writer.pages)) print("Saved to", out_path) EOF
Practice of Medicine Combined PYQs
PDF Document · PDF