{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreiekmkztrleeys4rbzghsl22vcwl2bwmvucxhjogc6v6lpwpwx43ry",
"uri": "at://did:plc:25rdn5elo5izoxrmtis34zuk/app.bsky.feed.post/3mp5fyp3gbiw2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreia4eqtum2zd6klphuvuoz4h6ypmdusdeibb2zqvfjsxfurvyedyay"
},
"mimeType": "image/webp",
"size": 53176
},
"path": "/paperquire_e3fdb510bbe49c/paperquire-render-action-pdfs-in-your-ci-pipeline-4bc8",
"publishedAt": "2026-06-25T21:38:41.000Z",
"site": "https://dev.to",
"tags": [
"githubaction",
"cicd",
"automation",
"GitHub Action docs",
"paperquire/render-action"
],
"textContent": "## Your docs should build themselves\n\nYou write your documentation in Markdown. You keep it in a Git repo. Every time someone updates a spec or runbook, someone else has to open PaperQuire (or the CLI), render the PDF, and upload it somewhere.\n\nThat manual step is now gone. The **PaperQuire Render Action** generates branded, print-ready PDFs directly in your GitHub Actions workflow — on every push, every PR, or every release.\n\n## One step. That's it.\n\n\n - uses: paperquire/render-action@v1\n with:\n files: 'docs/*.md'\n template: executive-report\n output: build/pdfs\n\n\nEvery Markdown file matching the glob is rendered to PDF using the same Chromium engine as the desktop app. Same templates, same quality, no Pandoc or LaTeX to install.\n\n## What you can build\n\n### Auto-generate docs on push\n\nWhenever someone pushes to `docs/`, produce fresh PDFs and attach them as build artifacts:\n\n\n\n name: Generate PDFs\n\n on:\n push:\n paths:\n - 'docs/**/*.md'\n\n jobs:\n render:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n\n - uses: paperquire/render-action@v1\n with:\n files: 'docs/*.md'\n template: minimal-clean\n output: build/pdfs\n\n - uses: actions/upload-artifact@v4\n with:\n name: pdfs\n path: build/pdfs/\n\n\nTeam members download the latest PDFs from the Actions tab. No Slack messages, no \"can you re-export this?\"\n\n### Attach PDFs to releases\n\nShip documentation alongside your code:\n\n\n\n - uses: paperquire/render-action@v1\n with:\n files: 'docs/*.md'\n template: executive-report\n output: dist/\n\n - name: Upload to release\n env:\n GH_TOKEN: ${{ github.token }}\n run: gh release upload ${{ github.event.release.tag_name }} dist/*.pdf\n\n\nEvery release automatically includes the latest versions of your specs, guides, and reports.\n\n### PR previews\n\nUse the action in pull request workflows so reviewers can download rendered PDFs before merging:\n\n\n\n on:\n pull_request:\n paths: ['docs/**']\n\n jobs:\n preview:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n - uses: paperquire/render-action@v1\n with:\n files: 'docs/*.md'\n output: preview/\n - uses: actions/upload-artifact@v4\n with:\n name: pdf-preview\n path: preview/\n\n\n## Inputs and outputs\n\nThree inputs — only `files` is required:\n\nInput | Default | Description\n---|---|---\n`files` | — | Glob pattern (e.g. `docs/*.md`, `**/*.md`)\n`template` | `minimal-clean` | Any built-in template ID\n`output` | `output/` | Where to write PDFs\n\nThe action outputs `pdf-files` — a newline-separated list of generated paths you can reference in later steps:\n\n\n\n - uses: paperquire/render-action@v1\n id: render\n with:\n files: 'docs/*.md'\n\n - run: echo \"${{ steps.render.outputs.pdf-files }}\"\n\n\n## How it works under the hood\n\nThe action runs in a Docker container with Node.js and all Chromium dependencies pre-installed. It globs your files, runs `paperquire render` for each one, and collects the output paths. No shell tricks, no external binaries to install — everything is baked into the image.\n\nThe Docker image is published to GHCR (`ghcr.io/paperquire/render-action`), so subsequent runs pull from cache instead of rebuilding.\n\n## Get started\n\n 1. Add the step to your workflow (copy the YAML above)\n 2. Push to your repo\n 3. Check the Actions tab for your PDFs\n\n\n\nFull documentation: GitHub Action docs\n\nAction source: paperquire/render-action",
"title": "PaperQuire Render Action — PDFs in Your CI Pipeline"
}