{"library":"markdown-pdf","title":"Markdown-pdf","description":"markdown-pdf is a Python library designed to convert Markdown documents into PDF files. It utilizes `markdown-it-py` for efficient Markdown to HTML conversion and `PyMuPDF` for robust HTML to PDF rendering. Currently at version 1.13.1, the library is actively maintained with several releases per year, continuously adding new features and improvements.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install markdown-pdf"],"cli":{"name":"markdown-pdf","version":"sh: 1: markdown-pdf: not found"}},"imports":["from markdown_pdf import MarkdownPdf","from markdown_pdf import Section"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from markdown_pdf import MarkdownPdf, Section\nimport os\n\n# Create a PDF with a Table of Contents (up to level 2 headings) and optimized output\npdf = MarkdownPdf(toc_level=2, optimize=True)\n\n# Add the first section. The 'toc=False' ensures its title is not in the TOC.\npdf.add_section(Section(\"# Document Overview\\n\\nThis is an introduction to the document.\", toc=False))\n\n# Add a second section with external and internal hyperlinks\ntext_with_links = \"\"\"\n# Hyperlink Section\n\n- [External Link to GitHub](https://github.com/vb64/markdown-pdf)\n- [Internal Link to Subsection](#introduction-to-python)\n\n## Introduction to Python\nPython is a versatile programming language.\n\"\"\"\npdf.add_section(Section(text_with_links))\n\n# Add a third section with custom CSS applied to its headings\ntext_with_css = \"\"\"\n# Custom Styled Header\n\nThis section demonstrates custom CSS to center its main heading.\n\"\"\"\npdf.add_section(Section(text_with_css, user_css=\"h1 {text-align:center; font-size: 2em;}\"))\n\n# Set PDF document metadata\npdf.meta[\"title\"] = \"Markdown-pdf Example Guide\"\npdf.meta[\"author\"] = \"AI Assistant\"\n\n# Define the output file name\noutput_filename = os.environ.get('PDF_OUTPUT_FILE', 'example_document.pdf')\n\n# Save the generated PDF to a file\npdf.save(output_filename)\nprint(f\"PDF '{output_filename}' generated successfully.\")","lang":"python","description":"This quickstart demonstrates how to create a multi-section PDF from Markdown strings. It shows initializing `MarkdownPdf` with options like `toc_level` and `optimize`, adding individual `Section` objects with custom settings (like disabling TOC for a section or applying `user_css`), and finally setting document metadata before saving the PDF to a file.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"1.13.1","pypi_latest":"1.13.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3.7,"avg_import_s":2.18,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"markdown-pdf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"84.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"markdown-pdf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.9,"import_time_s":0.96,"mem_mb":27.9,"disk_size":"84M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"markdown-pdf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"88.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"markdown-pdf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.7,"import_time_s":3.6,"mem_mb":31.1,"disk_size":"88M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"markdown-pdf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"79.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"markdown-pdf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.4,"import_time_s":2.68,"mem_mb":30.4,"disk_size":"79M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"markdown-pdf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"79.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"markdown-pdf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":2.57,"mem_mb":31.7,"disk_size":"79M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"markdown-pdf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"81.9M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"markdown-pdf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":4.2,"import_time_s":1.07,"mem_mb":28.5,"disk_size":"82M"}]}}