Free and open source · AGPL-3.0

A PDF editor for Linux.

Quirewright edits the content of PDF pages as vector objects. Paths, text, images and form fields can be selected on the rendered page, then moved, reshaped, recoloured or retyped. It also manages pages, forms and comments. Only the bytes that produced the edited object are rewritten.

Version 0.1.0, pre-release. Please read the notice on the download page before using it.

Quirewright with a report open: a curve on a bar chart is selected and the Inspector shows its geometry, stroke colour and width Quirewright with a report open, in the dark theme: a curve on a bar chart is selected and the Inspector shows its geometry, stroke colour and width

What it does

The full checklist, including what is not implemented, is on the checklist page.

Object editing

Select paths, text runs, images and groups on the rendered page. Move, resize, rotate, recolour, reorder, align and distribute them, with undo for every change.

Nodes and new shapes

Edit the nodes and Bézier handles of existing shapes. Draw rectangles, ellipses, lines and curves, and insert images.

Text

Edit a line of text in place even when the PDF stores it as several runs, re-wrap paragraphs, and change size and colour. When a font lacks a glyph, a bundled font is substituted and the status bar says so.

Forms

Create text fields, checkboxes, radio buttons, lists and buttons; edit their properties; fill them in. Calculation, format and validation scripts in the Acrobat style are evaluated locally for preview.

Pages

Rotate, reorder by dragging thumbnails, duplicate, insert blank pages or pages from another file, extract, split, crop, label, number and watermark.

Document

Edit metadata, set or remove passwords and permissions, browse and extract images, fonts and attachments, attach files, export pages as PNG, JPEG or SVG, print, and save a reduced-size copy.

Comments, find, OCR

Highlight, underline, strike out and add notes. Search across pages. Add a text layer to scanned pages with Tesseract, if it is installed.

Interface

Light and dark themes following the desktop setting, document tabs, rulers, guides and snapping, keyboard shortcuts for every tool, and the user guide built in. English, German, French and Spanish.

How editing works

Changes are written into the existing content stream

Quirewright parses a page's drawing instructions itself, tracks the graphics state, and replaces only the bytes that produced the object you changed. The page is not rasterised or regenerated, so untouched content stays as it was and should render the same in other viewers.

  • Paths are rewritten in their own coordinate space, so transforms are exact
  • Text blocks are regenerated with absolute positioning per run
  • Groups are form XObjects and can be entered and edited, nested
The Node tool showing the anchor points and Bézier handles of a curve
Forms

Field properties in the Inspector

Name, value, options, caption, font, colours, borders and flags are edited in the Inspector. Calculation, format and validation scripts use the AFSimple_Calculate family of functions and are evaluated locally so the result is visible while editing. Compatibility with other readers has only been checked by hand.

A text field selected with its properties shown in the Inspector
Documentation

Built-in guide

Press F1 for a help viewer with a contents tree and search. The same text is published here as the user guide.

The built-in help viewer
The name

Quire · wright

A quire is a gathering of folded sheets, the unit from which a bound book is assembled. A wright is a maker. The icon is three offset folded sheets with a bookbinder's awl.

Licence and origins

AGPL-3.0, built on MuPDF and Qt

Quirewright is licensed under the GNU Affero General Public License, version 3 or later. It uses MuPDF through PyMuPDF and Qt for Python. It was developed almost entirely by AI with limited human review; see the notice, SECURITY.md and CONTRIBUTING.md. It is not affiliated with Adobe and uses none of its code or trademarks.