Skip to content
| Marketplace
Sign in
Visual Studio Code>Formatters>Lynx PDF StudioNew to Visual Studio Code? Get it now.
Lynx PDF Studio

Lynx PDF Studio

Lynx DI

|
37 installs
| (3) | Free
Agentic, git-native PDF automation for VS Code. Edit an OpenPDF Workflow (OPW) file as code; a deterministic engine renders the PDF. pdf-lib bundled; PyMuPDF/pikepdf/qpdf optional.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Lynx PDF Studio — PDFs as code

Lynx PDF Studio for VS Code

Agentic, git-native PDF automation.
Edit an OpenPDF Workflow file; a deterministic engine renders the PDF.

Marketplace 77 operations pdf-lib bundled MCP

You don't click around a PDF editor — you edit an OpenPDF Workflow (OPW) file, and a deterministic engine renders the PDF. The workflow is the source of truth; the PDF is a build artifact; git is your undo stack.

# workflow.opw.yaml
version: 1
kind: pdf
inputs:
  - input/contract.pdf
  - input/appendix.pdf
operations:
  - merge: {}
  - delete_pages: { pages: [10, 11] }
  - watermark: { text: INTERNAL, opacity: 0.15 }
  - add_page_numbers: { format: "Page {n} of {total}", position: bottom-right }
  - set_metadata: { title: Contract, author: Legal }
output:
  file: output/contract_final.pdf

See it in action

Save the file and the PDF re-renders. Diff it, revert it, review it in a PR — it's just code.

Editing an OPW workflow with live PDF preview, the operations sidebar, and color-coded dependencies

Why it's different

  • Code-first, not click-first. Every change is a line in a human-readable YAML file — versionable, diffable, reproducible. No opaque binary edits.
  • Deterministic pipeline. parse → validate → optimize → plan → render. The same workflow always produces the same PDF; the plan is previewable and hashable.
  • Agent-native. A local MCP server exposes deterministic OPW helpers so any MCP-capable coding agent can edit your workflow safely — with a generated CLAUDE.md / AGENTS.md that teaches it your project.
  • Batteries included, nothing required. The bundled engine renders many operations with zero external dependencies; advanced ones light up when their optional backend is present.

Discover and build without memorizing YAML

Searchable Operations panel — all 77 operations grouped by category. Search, click to open the docs, or + to add one to the active workflow.

Guided Add Operation — pick an operation and fill its parameters with native controls: dropdowns for choices, validated number boxes, list inputs. No hand-typing raw YAML.

Per-operation Documentation — every op has a page with a summary, a parameter table, and a complete, copy-pasteable example workflow.

Live preview & color-coded Dependencies — the output re-renders on save; every backend shows green when ready, amber with a one-click install hint when not.

Searchable Operations panel grouped by category

Guided Add Operation with native dropdowns

77 operations, thirteen categories

Every operation is one line in the operations: list. A quick reference:

Pages & layout (15)

  • merge — concatenate all inputs into one PDF
  • split — split into multiple PDFs by page ranges
  • split_invoices — split a multi-invoice PDF into one file per invoice (auto-named)
  • delete_pages — remove the given pages
  • reorder_pages — reorder pages to a new order
  • rotate_pages — rotate pages by a multiple of 90°
  • flip_pages — mirror pages horizontally or vertically
  • insert_blank — insert a blank page at a position
  • extract_pages — keep only the given pages
  • crop — crop pages to a rectangle
  • scale_pages — resize to A4/Letter/Legal or by a factor
  • n_up — place multiple source pages per sheet in a grid
  • booklet — impose 2-up in saddle-stitch booklet order
  • poster — split each page into a grid of tiles (also halves a 2-up scan)
  • single_page — combine every page into one tall page

Stamps & overlays (5)

  • watermark — stamp a diagonal text/image watermark
  • stamp — stamp positioned text or an image
  • annotate — add text, highlights, notes, shapes, or images
  • add_page_numbers — stamp page numbers on every page
  • overlay — overlay another PDF's pages on top

Metadata, bookmarks & tables (8)

  • set_metadata — set title/author/subject/keywords
  • set_bookmarks — replace the outline/bookmarks
  • extract_bookmarks — export the outline as JSON
  • extract_fields — export form fields to CSV
  • extract_tables — detect tables and export each as CSV
  • pdf_info — write a JSON report (pages, sizes, metadata, fonts, security)
  • compare_pdfs — page-aligned text + visual diff of two PDFs
  • set_view_preferences — control how a PDF opens (layout, full-screen, zoom)

Text, image & Markdown extraction (5)

  • extract_text — extract page text (optional header/footer + reflow cleanup)
  • extract_markdown — extract content as Markdown (tables included)
  • extract_images — extract embedded images
  • render_pages — render pages to PNG/JPG or vector SVG
  • replace_image — replace an embedded image object

Redaction & cleanup (8)

  • redact — permanently remove content in regions
  • auto_redact — find and truly delete matching text / PII patterns
  • sanitize — strip JavaScript, embedded files, metadata, and links
  • remove_annotations — remove all annotations
  • remove_images — remove all images
  • remove_blank_pages — detect and delete blank pages
  • ocr — add a searchable text layer via OCR
  • extract_js — report embedded JavaScript for inspection (read-only)

Forms (4)

  • fill_form — fill a known form from your records (see the supported forms below)
  • fill_field — set a single form field's value
  • flatten — bake form fields + annotations into the page
  • unlock_forms — clear the read-only flag so fields can be filled

Attachments (2)

  • extract_attachments — extract embedded file attachments
  • add_attachments — embed a file as an attachment

Encryption & permissions (3)

  • encrypt — password-protect with AES-256
  • decrypt — remove password protection (supply the password)
  • set_permissions — restrict print/copy/modify via an owner password

Optimize, repair & archival (8)

  • compress — reduce file size (deep compression when available)
  • linearize — linearize for fast web view
  • repair — repair/rewrite a broken PDF
  • decompress — uncompress content streams (debuggable PDF)
  • rasterize — flatten every page to an image
  • recolor — dark mode / invert / grayscale (dark mode keeps photos intact)
  • scanner_effect — make a clean PDF look scanned (skew, softening, grain)
  • pdf_to_pdfa — convert to PDF/A for archival

Convert to PDF (7)

  • images_to_pdf — build a PDF from images (PNG/JPEG/WEBP/TIFF/SVG/HEIC)
  • html_to_pdf — render an HTML file to PDF
  • markdown_to_pdf — render Markdown to a styled PDF
  • url_to_pdf — fetch a web page and render it to PDF
  • eml_to_pdf — render an .eml email to PDF (remote images blocked)
  • epub_to_pdf — convert an EPUB ebook to PDF
  • office_to_pdf — convert docx/xlsx/pptx/odt to PDF

Convert from PDF (6)

  • pdf_to_docx — convert a PDF to Word
  • pdf_to_pptx — convert a PDF to PowerPoint
  • pdf_to_xlsx — convert a PDF to Excel
  • pdf_to_html — convert a PDF to HTML
  • pdf_to_markdown — convert a PDF to Markdown (tables included)
  • pdf_to_epub — convert a PDF to a reflowable EPUB (Kindle)

Document intelligence (AI) (3) — local LLM (Ollama) by default, or Claude with an API key; opt-in, private

  • summarize — LLM Markdown summary of the document
  • translate — LLM translation to a target language
  • semantic_search — ask a PDF a question; ranked passages with page numbers (local embeddings)

Digital signatures (3)

  • sign — digitally sign with a PKCS#12 certificate
  • validate_signature — validate signatures; emit a JSON report
  • timestamp — add an RFC-3161 trusted timestamp

Fillable forms (fill_form)

fill_form fills these real forms from a local, gitignored people.yaml (or inline values:), mapping friendly keys to each form's actual fields — 9 forms across 4 categories:

  • Passport — ds11 (U.S. Passport Application) · ds82 (U.S. Passport Renewal)
  • Tax — f1040 (IRS 1040) · w9 (IRS W-9) · w4 (IRS W-4) · w7 (IRS W-7 / ITIN) · nec1099 (IRS 1099-NEC)
  • Employment — i9 (USCIS I-9, Employment Eligibility)
  • Immigration — i765 (USCIS I-765, Employment Authorization / EAD)

The PDF Fill sidebar and the form_fields MCP tool show each form's fields plus a copy-paste starter workflow. New forms are drop-in JSON packs.

Batch — one workflow over many files

Put a glob in inputs and the whole workflow runs once per matched file:

inputs:
  - "invoices/*.pdf"        # each match runs the ops below
operations:
  - compress: {}
  - watermark: { text: PAID }
output:
  folder: output/processed  # → output/processed/<input-name>.pdf per file

The output is per-input — an output.folder (named by the input) or a templated output.file ({stem}/{name}/{ext}/{i}). One bad file is skipped and reported, not fatal; progress shows "file i/N".

Markdown / HTML / URL → PDF, high fidelity, no bloat

markdown_to_pdf, html_to_pdf, url_to_pdf, and eml_to_pdf render through a system Chrome or Edge in headless print mode for full-fidelity output — no 200 MB bundled browser. When no browser is present they fall back to WeasyPrint and then a pure-Python engine, so they always work.

Scanned books & documents → Markdown (AI OCR)

Old scans with a poor or missing text layer? extract_markdown and pdf_to_markdown can run Marker (Surya OCR + layout models) to rebuild clean, GitHub-flavored Markdown — headings, lists, and tables intact — straight from the page images:

operations:
  - extract_markdown: { engine: marker }

Marker is accurate but heavy. For a full book, offload it to a GPU box over SSH with one parameter — minutes on a GPU vs hours on a CPU:

operations:
  - extract_markdown: { engine: marker, remote: user@gpu-box }   # 138-page scan → ~1 min on a 4090

The PDF is uploaded, Marker runs on the remote GPU, and the Markdown is downloaded. Off by default — enable pdfStudio.allowRemoteRender; it runs over key-based SSH, and the host is validated to block command injection. For lighter scans, ocr_first: true runs an OCRmyPDF/Tesseract pass before extraction — no GPU needed.

Convert any file to Markdown

Beyond PDFs: right-click any file in the Explorer → Convert File to Markdown, or run it from the palette. Powered by Microsoft MarkItDown, it turns Word / PowerPoint / Excel / HTML / EPUB / CSV / images and more into clean Markdown — handy for docs, diffs, and LLM ingestion. (Install MarkItDown when prompted; it's an optional backend.)

Execution backends

The bundled pdf-lib backend runs page layout, stamps, watermarks, metadata, and image→PDF with zero external dependencies. Advanced operations use optional backends the extension auto-detects:

Backend Unlocks
Python (PyMuPDF / pikepdf / OCRmyPDF / pymupdf4llm) extraction, redaction, sanitize, forms, encryption, OCR, PDF/A, info
Marker (Surya OCR + layout) AI OCR: scanned books / PDFs → clean Markdown; optional remote GPU render
Ghostscript / qpdf deep compression, linearization
Tesseract OCR text layer
LibreOffice Office ⇆ PDF conversion
Chrome / Edge high-fidelity Markdown / HTML / URL → PDF
pyHanko digital signatures, timestamps

Until a backend is installed, opw_compile reports its operations as unsatisfied — nothing fails silently.

Getting started

  1. Lynx PDF Studio: Initialize Project — seeds workflow.opw.yaml + sample inputs.
  2. Edit the workflow — by hand, the Operations panel, guided Add Operation…, or your coding agent.
  3. Render Workflow (▶ in the sidebar) — writes output/*.pdf.
  4. Open Preview — see the result; it re-renders on save.

Agent-native (MCP)

A local MCP server exposes deterministic OPW helpers — opw_validate, opw_compile, opw_optimize, opw_diff, opw_scaffold, opw_operations — so an MCP-capable agent can author and check workflows without ever touching the PDF directly. The server never renders and never writes files. Set Up MCP for This Workspace wires it into your project in one step.

Security & trust model

A workflow is treated as potentially untrusted — it may be cloned, shared, or agent-authored. Input/output/asset paths are confined to the project directory, ${ENV_VAR} expands only in password params (never into text/url/metadata), the Python interpreter is pinned, and webviews use a strict CSP. Because url_to_pdf / html_to_pdf fetch network and local resources by design, review an untrusted workflow before rendering it. Full details: docs/security.md.

Telemetry

Lynx PDF Studio collects anonymous, non-identifying usage events (which features and operations are used, and whether a render succeeded) to help prioritize development. It never collects file paths, document contents, names, or any personal data — only vscode.env.machineId (an anonymized per-install id). Events are only sent when VS Code's global telemetry setting (telemetry.telemetryLevel) is enabled; you can also turn off just this extension's analytics with pdfStudio.telemetry.enabled. Set pdfStudio.telemetry.debug to see exactly what is sent.

About

Lynx PDF Studio is built by Lynx DI. Explore more at lynxdi.com.

License

Proprietary — Copyright © 2026 Lynx DI. All rights reserved. See LICENSE. Bundled third-party components remain under their own licenses (see NOTICE).

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft