Receber por email
← Voltar para o catálogo

brewdoc:md-to-pdf

Converts Markdown to professional PDF. Two engines - reportlab (lightweight) or weasyprint (full CSS). Style customization, test mode, dependency management. Triggers - pdf, md to pdf, markdown to pdf, convert pdf, generate pdf.

28estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: NOASSERTION

Como adicionar

/plugin marketplace add kochetkov-ma/claude-brewcode

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/brewdoc-md-to-pdf/svg)](https://www.skillteca.com.br/skills/brewdoc-md-to-pdf)

Skills relacionadas

Ver todas de Desenvolvimento →

Alerta por categoria

Receba novas skills de Desenvolvimento toda segunda

1 email curto, só com as skills novas de Desenvolvimento. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

MD to PDF

Converts Markdown files to professional PDF using one of two rendering engines.

Step 0: Parse Arguments

Parse $ARGUMENTS to determine mode and components.

| Component | Required | Description | |-----------|:--------:|-------------| | md_file | per mode | Path to .md file | | --engine | No | reportlab or weasyprint (overrides saved config) | | custom_prompt | No | Last argument in double quotes = LLM preprocessing instructions |

Mode detection rules:

| Condition | Mode | |-----------|------| | Empty or help | HELP | | styles or config | STYLES | | test | TEST | | Path to .md file + quoted string at end | CONVERT+PROMPT | | Path to .md file (no quoted string) | CONVERT |

Extract --engine <name> from anywhere in arguments if present. Remove it before further parsing.

Step 1: Dependency Check

Determine the target engine (from --engine flag, saved config, or default reportlab).

EXECUTE using Bash tool:

bash "${CLAUDE_SKILL_DIR}/scripts/check_deps.sh" check ENGINE_NAME 2>&1; echo "EXIT_CODE=$?"

Replace ENGINE_NAME with the target engine.

If output contains MISSING_PIP or MISSING_SYSTEM:

Use AskUserQuestion presenting the engine comparison table:

| Feature | reportlab | weasyprint | |---------|-----------|------------| | Install | pip only | pip + brew | | Quality | Good | Excellent | | Speed | Fast | Moderate | | Images | Basic | Full | | CSS Styling | No | Yes | | Code highlight | No | Yes (Pygments) |

Options:

  • "Install ENGINE_NAME dependencies"
  • "Switch to OTHER_ENGINE" (if the other engine is available)
  • "Cancel"

If user chooses install, EXECUTE using Bash tool:

bash "${CLAUDE_SKILL_DIR}/scripts/check_deps.sh" install ENGINE_NAME 2>&1 && echo "---INSTALL_OK---" || echo "---INSTALL_FAILED---"
STOP if INSTALL_FAILED -- report error and exit.

If user cancels -- STOP.

Step 2: Engine Selection (first run only)

Check for saved config in order:

  1. Project: .claude/md-to-pdf.config.json
  2. Global: ~/.claude/md-to-pdf.config.json

If --engine flag was provided -- use it (skip config lookup).

If no saved preference and no --engine flag -- use AskUserQuestion with the engine comparison table from Step 1. Save the choice:

{
  "engine": "reportlab",
  "pygments_theme": "github"
}

Write to project config .claude/md-to-pdf.config.json (create .claude/ dir if needed).

Step 3: Mode Execution

HELP Mode

Print formatted usage:

MD to PDF Converter

Usage:
  /brewdoc:md-to-pdf <file.md>                     Convert with saved engine/style
  /brewdoc:md-to-pdf <file.md> --engine weasyprint  Convert with specific engine
  /brewdoc:md-to-pdf <file.md> "remove section X"   Preprocess MD then convert
  /brewdoc:md-to-pdf styles                          Configure page/color/font
  /brewdoc:md-to-pdf test                            Convert bundled test file
  /brewdoc:md-to-pdf help                            Show this help

Engines:
  reportlab    -- Pure Python, fast, no system deps (pip install reportlab)
  weasyprint   -- HTML/CSS pipeline, best quality (pip + brew deps)

EXIT after printing.

CONVERT Mode

  1. Read the input MD file with Read tool. If not found -- STOP with error.
  2. Determine output path: same directory, same name, .pdf extension.
  3. Build the config path argument (if project or global config exists, add --config CONFIG_PATH).

EXECUTE using Bash tool:

python3 "${CLAUDE_SKILL_DIR}/scripts/md_to_pdf.py" "INPUT_PATH" "OUTPUT_PATH" --engine ENGINE --quiet 2>&1 && echo "---CONVERT_OK---" || echo "---CONVERT_FAILED---"

Replace INPUT_PATH, OUTPUT_PATH, ENGINE with actual values. Add --config CONFIG_PATH if a style config JSON exists. Add --pygments-theme THEME for weasyprint if configured.

STOP if CONVERT_FAILED -- read error output, attempt fix, retry once. If still failing -- report error.
  1. Parse structured output lines: STATUS, OUTPUT, PAGES, SIZE, ENGINE.

CONVERT+PROMPT Mode

  1. Read the input MD file with Read tool.
  2. Apply LLM transformations per the custom_prompt instructions (delete sections, rewrite headings, restructure, etc.).
  3. Write modified content to temp file: {original_dir}/.tmp_{original_name}.md
  4. Run the converter on the temp file (same command as CONVERT mode, using temp file as input, original name for output).
  5. Delete the temp file.

EXECUTE using Bash tool:

rm -f "TEMP_FILE_PATH"
  1. Proceed to Step 4 with preprocessing: true.

STYLES Mode

Run interactive configuration via AskUserQuestion dialogs:

Question 1 -- Page size: Options: A4 (default), Letter, Legal

Question 2 -- Color scheme: Options: Default blue (primary #1a3a5c), Dark (primary #2d3748), Custom (ask for hex values)

Question 3 -- Code theme (weasyprint only): Options: github (default), monokai, friendly, solarized-dark, solarized-light

Question 4 -- Footer format: Options: Page {page} of {total} (default), {page}/{total}, Disabled

Build JSON config matching styles/default.json structure, overriding changed values. Write to .claude/md-to-pdf.config.json.

Report saved settings table and EXIT.

TEST Mode

  1. Use bundled test file at ${CLAUDE_SKILL_DIR}/test/test-all-elements.md as INPUT_PATH.
  2. Determine output path: /tmp/md-to-pdf-test-ENGINE.pdf
  3. Run converter (same command as CONVERT mode, using test file as input, /tmp/ output).
  4. Proceed to Step 4.

Step 4: Report Results

| Parameter | Value | |-----------|-------| | Source | absolute path to input MD | | Output | absolute path to output PDF | | Pages | from PAGES= in script output | | Size | from SIZE= in script output | | Engine | reportlab or weasyprint | | Preprocessing | custom_prompt summary (if used) or none |

Compartilhar X LinkedIn