GitHub Action
The PaperQuire Render Action lets you generate branded, print-ready PDFs directly in your GitHub Actions workflows. Every push to your docs folder can automatically produce up-to-date PDFs — no manual export needed.
Quick Start
Add this step to any workflow:
- uses: paperquire/render-action@v1
with:
files: 'docs/*.md'
template: minimal-clean
output: build/pdfs
- uses: actions/upload-artifact@v4
with:
name: pdfs
path: build/pdfs/
That's it. Every Markdown file matching the glob pattern is rendered to PDF using PaperQuire's built-in Chromium renderer — the same engine that powers the desktop app.
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
files | Yes | — | Glob pattern for Markdown files (e.g. docs/*.md, **/*.md) |
template | No | minimal-clean | PaperQuire template ID |
output | No | output/ | Output directory for generated PDFs |
Outputs
| Output | Description |
|---|---|
pdf-files | Newline-separated list of generated PDF file paths |
Examples
Render docs on push
Generate PDFs whenever documentation files change and upload them as build artifacts:
name: Generate PDFs
on:
push:
paths:
- 'docs/**/*.md'
jobs:
render:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: paperquire/render-action@v1
id: render
with:
files: 'docs/*.md'
output: build/pdfs
- uses: actions/upload-artifact@v4
with:
name: pdfs
path: build/pdfs/
Use a specific template
- uses: paperquire/render-action@v1
with:
files: 'reports/**/*.md'
template: executive-report
output: reports/pdf
Use rendered PDFs in subsequent steps
The action outputs the list of generated files so you can reference them downstream:
- uses: paperquire/render-action@v1
id: render
with:
files: 'docs/*.md'
- name: List generated PDFs
run: echo "${{ steps.render.outputs.pdf-files }}"
Attach PDFs to a GitHub release
name: Release PDFs
on:
release:
types: [published]
jobs:
pdf:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: paperquire/render-action@v1
with:
files: 'docs/*.md'
template: executive-report
output: dist/
- name: Upload to release
env:
GH_TOKEN: ${{ github.token }}
run: gh release upload ${{ github.event.release.tag_name }} dist/*.pdf
How It Works
- The action runs in a Docker container with Node.js and all Chromium dependencies pre-installed.
- It globs your Markdown files using the
filesinput pattern. - Each file is rendered to PDF using
paperquire render— the same headless Chromium engine as the desktop app. - Generated PDFs are placed in the
outputdirectory and their paths are set as thepdf-filesoutput.
No Pandoc, LaTeX, or WeasyPrint required. The action uses PaperQuire's built-in renderer, so your PDFs look identical to what the desktop app produces.
Templates
All built-in PaperQuire templates are available:
minimal-clean— Clean, minimal layout (default)executive-report— Corporate report with cover pagetechnical-doc— Technical documentation style
See Templates for the full list and previews.
Source
The action source is on GitHub: paperquire/render-action