Skip to main content

A Shiny app to convert LLM Markdown exports to PDF with Quarto

Project description

Markdown to PDF Converter (llmmd2pdf)

A local Python application built with Shiny for Python that allows you to paste Markdown text, preprocess it, and convert it to PDF using Quarto.

Currently, markdown input needs to be generated by other programs, such as SaveYourChat or manual copy-pasting from LLM chat windows (e.g., ChatGPT, Gemini, Claude).

Features

  • GUI Interface: Clean Shiny layout for text input and settings.
  • Smart Preprocessing: Cleans "Gemini Apps Activity" footers, removes profile placeholders, and cleans artifact tags.
  • Native Directory Picker: Robustly handles native macOS file dialogs via a subprocess.
  • Quarto Integration: High-quality PDF conversion.
  • Metadata & Config: Autosaves your favorite models, author name, and stores them in the standard OS configuration path.

Prerequisites

  1. Python 3.9+
  2. Quarto CLI: Required for PDF generation.

Option 1: Installation via PyPI (Recommended)

This is the easiest way to use the tool.

  1. Install the package:
    pip install llmmd2pdf

  2. Run the app:
    llmmd2pdf

    The app will open in your browser automatically.

Option 2: Installation from Source (GitHub)

Use this if you want to modify the code or contribute.

  1. Clone the repository:
    git clone [https://github.com/yourusername/llmmd2pdf.git\](https://github.com/yourusername/llmmd2pdf.git)
    cd llmmd2pdf

  2. Install in editable mode:
    pip install -e .

  3. Run the app:
    llmmd2pdf

Configuration

The application stores settings in the standard Application Support folder for your OS.

  • macOS: ~/Library/Application Support/llmmd2pdf/config.toml
  • Windows: %APPDATA%/llmmd2pdf/config.toml
  • Linux: ~/.config/llmmd2pdf/config.toml

This file is automatically created when you run the app. You can modify it to set default models, your name, or the server port.

Default Config:
models = [ "Claude Haiku 4.5", "Claude Opus 4.5", "Claude Sonnet 4.5", "GPT-4o", "GPT-4o mini", "GPT-5", "GPT-5.1", "Gemini 3 Pro"]
author = "Karl Dafoe"
port = 5555 # Change this to run on a different port

Changing the Port

You can change the port by editing the port value in the config file above. The next time you run llmmd2pdf, it will bind to that port.

Roadmap

  • Add Testing
  • maybe add API-based direct fetching of conversations
  • Improve Quarto template customization options

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llmmd2pdf-0.1.2.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llmmd2pdf-0.1.2-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file llmmd2pdf-0.1.2.tar.gz.

File metadata

  • Download URL: llmmd2pdf-0.1.2.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for llmmd2pdf-0.1.2.tar.gz
Algorithm Hash digest
SHA256 5ec6d2d125189ca536ff7ef49ef03fd0e42c571a184457611c4c18b62f563731
MD5 a7565bf17ffe5be294aba46184d9fc35
BLAKE2b-256 d6223a91d832d31eb9bb8dad23ebffcafd414b0ae54eaf6a47959ef280a46175

See more details on using hashes here.

File details

Details for the file llmmd2pdf-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: llmmd2pdf-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 20.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for llmmd2pdf-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5087da43171b5758d02072c5384a11d67f28dba3969cef82a4601a3a06421582
MD5 9b41d8be6566dab4b0104f896fda7201
BLAKE2b-256 9fff32283265100f46bd16b412c9501cea1f7504c79971b4ceca9fda4b4454d1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page