PolyPDFPolyPDF Back to Home

Build your own plugin

Add your office’s symbols to PolyPDF. No code, no marketplace, no approval queue.

Requires PolyPDF 1.3.1 or newer

If your team stamps the same north arrow, revision triangle or room tag onto every sheet, you can package that set yourself and hand it to your colleagues as a single file. It takes a text editor, a drawing tool, and Node.

A plugin is data, not a program

  • A PolyPDF plugin is a signed folder of artwork and JSON. There is no JavaScript entry point and nothing in the package is ever executed.
  • Your package supplies a symbol catalogue, the SVG artwork for it, and a form described in JSON. PolyPDF renders the form, runs its own generator, and adds the result to the drawing as ordinary markups in a single undoable step.
  • The trade is deliberate: you give up arbitrary behaviour, and in exchange your plugin cannot leak a customer’s drawings, cannot break their app, and needs no review process before anyone can safely install it.

What people build with it

  • North arrows matched to a sheet’s true north, revision triangles, room and equipment tags, detail markers, welding symbols, ADA and fire-safety symbols, utility callouts — an office’s own standard symbol set, stamped at the right printed size every time.
  • Symbols are placed at a size in inches, keep their drawn proportions, rotate, and can carry a caption — underneath for a north arrow, inside the shape for a revision number or a room number.
  • Once placed they are normal markups: selectable, movable, styleable, exportable, and still there if the plugin is later switched off or removed.

What a plugin can never do

  • Run code. No JavaScript, no WASM, no native library.
  • Reach the network. No requests, of any kind, ever — artwork carrying an external reference is refused at install time precisely so a symbol cannot phone home when a sheet is opened.
  • Read your documents. A plugin is told the page size, rotation and where you clicked. Not the text, not the markups, not the file name, not the PDF bytes.
  • Touch your files, see your licence details, change an existing markup, or save anything.
  • This is architectural, not a policy we promise to enforce: there is no API for any of it.

What you write

A plugin is a folder. The manifest describes what it is and what it adds to the Tools menu; the catalogue lists your symbols and their printed sizes; the assets are plain SVG files.

my-plugin/
  manifest.json          identity, permissions, commands, the form
  data/symbols.json      each symbol: id, label, artwork, size in inches
  assets/*.svg           the artwork
  icons/icon.png         optional, 256 x 256

How you build it

One file, no dependencies, Node 18 or newer. It validates the whole package before it writes anything — layout, manifest, permission names, your catalogue, and whether your artwork is acceptable — and names the file and the fix for anything wrong.

curl -O https://www.polypdf.com/plugins/polypdf-plugin-pack.mjs

node polypdf-plugin-pack.mjs keygen --out ~/.polypdf-keys
node polypdf-plugin-pack.mjs pack my-plugin --key ~/.polypdf-keys/polypdf-plugin-key.pem

Then install it in PolyPDF: Plugins… ▸ Install from File.

About that signature

You sign with a key you generate, and PolyPDF is careful about what that means — both to you and to the people you send the file to.

  • It proves the package has not been altered since you built it, and it pins your plugin to your key: an update signed by anyone else is refused.
  • It does not mean PolyPDF reviewed or approved your plugin. Plugins included with the app carry PolyPDF’s own signature; yours is a separate, clearly-labelled tier.
  • Anyone installing your plugin sees a consent screen first: what it can do in plain language, your key’s fingerprint, and the package checksum. Its row in the Plugin Manager says Installed from a file for as long as it is installed.
  • Back up your private key. Because installs are pinned to it, a lost key means your users must uninstall before they can take your next release.

The full guide

The complete reference — every manifest field, the package format, the artwork rules, versioning, distribution and a troubleshooting section — ships with PolyPDF at docs/plugins/PLUGIN-AUTHORING.md, alongside a worked example plugin you can build and install in about a minute.

There is no marketplace. A plugin file is the distribution: put it on your intranet, in a release, or in an email. Publish its checksum and your key fingerprint next to the download and anyone can verify they got your file and not somebody else’s.

Questions

If the runtime cannot express the drawing task you have in mind, say so rather than working around it — new runtimes ship with the app, and knowing what people actually need is how the next one gets chosen.

Contact support

© 2026 PolyPDF. All rights reserved.

HomeBlogSupportTerms of UsePrivacy Policy