Laravel 11 / 12 - PHP 8.2+ document workspace

PDF annotation, canvas notes and signatures inside your app.

Install DocCanvas into Laravel and give users a polished PDF reader with highlights, workspace clips, pen drawing, signer links, and browser-side exports. Your app keeps the auth, ownership rules, and data.

6 annotation modes
1 Composer install
0 external document SaaS
/doccanvas/1
DocCanvas interface
Ready for
Angular React Vue

What's inside

A full PDF workspace, dropped into your Laravel app.

One composer require gives you the viewer, six kinds of annotations, a side canvas for research clips, multi-file PDF merging, Office-to-PDF conversion, signer-link workflows, and an iframe bridge — all bound to the user who is already logged into your app.

Highlights, notes, pins

Six kinds of annotation — highlight, note, pin, region, excerpt, link. Each one stays anchored to its exact spot on the page, no matter how the reader zooms or re-flows.

Pull-out excerpts

Lift any selection onto a side canvas. Drag clips around, group them, and link them across pages or documents — the way you would on real index cards.

Free-form canvas

Sketch with a mouse, a finger, or an Apple Pencil on a pressure-sensitive layer. Add free-floating text boxes wherever you need them.

Workspace + notepad

Every document comes with its own workspace canvas and notepad. Text and pen strokes are saved straight into your database.

Signer link workflow

Generate a one-time signer link and the recipient signs in a stripped-down viewer. Stamps and a full audit trail are saved back against the document.

Multi-PDF merge upload

Drop a stack of PDFs at once. The browser merges them with pdf-lib before a single upload reaches your server.

Office to PDF

Word, Excel, PowerPoint, OpenDocument, RTF, and plain text are all accepted. LibreOffice converts them on the server, and the original file stays available for download.

Signed sharing

Share a viewer link a recipient can open without an account. Only a small whitelist of read routes skip your auth — the rest stay locked down.

Annotated PDF export

Bake highlights, pins, and signatures back into a downloadable PDF right in the browser. No server round-trip needed.

Touch-first UX

Built for phones and tablets — swipe-close drawers, double-tap to fit width, safe-area insets, and full Apple Pencil pressure on the canvas.

Iframe + postMessage bridge

Embed inside Angular, React, or Vue with a signed URL. The bridge sends page and annotation events out to the parent window and takes navigation commands back.

Owner-scoped + policy hook

Records belong to whichever guard and owner key you configure. Plug in a Laravel policy to add workspace or team rules without touching the package source.

Screenshots

Captured straight from the running app.

Every image below is generated by scripts/screenshots.mjs. The script walks Playwright through each flow on the seeded document and saves the PNGs into public/screenshots/.

Viewer + workspace

Viewer + workspace

PDF on the left, draggable excerpts on the right.

Highlights

Highlights

A live yellow highlight saved against the document.

Free-form canvas

Free-form canvas

Pen strokes and a text box sharing the same canvas.

Signature request

Signature request

Signature pad mid-flow from a signed-URL session.

Pricing

Buy a license — ship it in your app.

One-time purchase per project. Includes the private Composer repository token, lifetime updates within the major version, and email support. Use it in commercial work, white-label it, and ship as many documents as your server can hold.

Solo

For independent developers shipping a single product.

$149 one-time
  • 1 production domain
  • Unlimited dev / staging installs
  • 1 year of updates
  • Email support
Buy Solo license

Enterprise

For unlimited deployments and custom terms.

Let's talk
  • Unlimited domains
  • Lifetime updates
  • SLA-backed support
  • Custom contract / invoicing
  • Optional roadmap input
Talk to sales

How licensing works

After purchase we email a license key plus credentials for our private Composer registry. Add them to auth.json, run composer require aim/laravel-doccanvas, publish the assets, migrate — same Laravel workflow you already know.

Chat on WhatsApp