Designer app
The designer app is a standalone desktop application (Windows, macOS, Linux - built with Avalonia, same toolkit as the companion app) for composing a document visually and getting back the exact C# fluent-builder code that reproduces it. It is a development tool: it never ships with your application, and nothing it produces is required at runtime - the generated code is plain Papyra, indistinguishable from what you’d write by hand.
Download
Section titled “Download”| Platform | Download |
|---|---|
| Windows x64 | papyra-designer.exe |
| Windows ARM64 | papyra-designer.exe |
| macOS Apple Silicon | Papyra Designer.app |
| macOS Intel | Papyra Designer.app |
| Linux x64 | papyra-designer |
| Linux ARM64 | papyra-designer |
These are self-contained, single-file builds of the latest main - no .NET runtime required. They’re unsigned: macOS Gatekeeper will refuse a plain double-click, so right-click the .app and choose Open the first time (or xattr -d com.apple.quarantine "Papyra Designer.app"); on Linux, chmod +x papyra-designer after downloading.
Start it
Section titled “Start it”dotnet run --project Papyra.Designer # or start the installed appIt opens with an empty document - there’s nothing to push from your code first, unlike the companion app.
How it works
Section titled “How it works”The designer is a three-pane editor:
- Document outline - a tree of the document’s elements. Toolbar buttons add paragraphs, tables, lists, rows, images, lines, page breaks, and a page header/footer; right-click (or the toolbar) adds the right child for whatever’s selected - a column or row inside a table, a run inside a paragraph, an item inside a list, a sub-list inside a list item, a nested table inside a cell. Drag and drop reorders siblings anywhere in the tree, including rows within a table (nested sub-lists and nested tables are singular children - deletable, not reorderable).
- Preview - a live render of the document, produced by the same layout engine and PDF renderer every other Papyra output goes through - not a separate mock-up renderer. Click an element on the page to select its node in the outline, and vice versa.
- Properties - the selected element’s fields: text content,
TextStyle/CellStyle(font, weight, color, alignment, borders including their solid/dashed/dotted style, background), table columns and spans, list kind, image fit, plus document-level watermark (text or image) and page background (solid color, two-stop gradient, or image) categories on the Document node - watermark/background images are picked via right-click on the Document node. Edits re-render the preview and update the generated code, debounced so typing doesn’t stutter.
A Generated code panel shows the equivalent Document.Create(doc => doc. ...) C# for the current document, live. Copy it to the clipboard or save it straight to a .cs file.
What it’s for
Section titled “What it’s for”Composing a report visually is faster than writing builder calls for a first draft, especially for someone new to Papyra’s API or exploring a layout idea before committing to it in code. The generated code is meant to be a starting point you paste into your project and keep editing by hand from there - the designer has no concept of a live link back to your source, and re-running it doesn’t update code you’ve already written. For an existing document you’re actively developing, use the companion app instead: it previews what your code renders, live, as you edit that code.
What it can’t do
Section titled “What it can’t do”The designer covers the fluent API’s core element set: paragraphs with mixed text/link runs, tables (columns, header/body/footer rows, cell spans, nested tables), lists (including nested sub-lists), rows, images, lines, and page breaks, plus document metadata, page size/margins, a default text style, a document-level watermark, and a document-level page background.
What it deliberately does not edit - build these through the fluent API:
- Sections - per-section page setup and bands are code-only; the preview renders them fine, the designer just doesn’t compose them.
- PDF render options, including encryption - the designer generates composition code (
Document.Create(...)), not render-pipeline configuration; passPdfRenderOptionstoRender(...)in your own code. The preview always renders unencrypted. - Multi-stop gradients and per-section page backgrounds - the background editor covers the two-stop
LinearGradient(angle, from, to)form. - Custom font registration (
RegisterFont) - add it to the generated code by hand.
© 2026 Stefan Nikolei. Payments are processed by Paddle.com as merchant of record.