Sign a PDF with Vue
Embed signing in a Vue or Nuxt app, with the document created server-side.
Drop your document here and sign it now. PDF, Word and Excel all work: a .docx or .xlsx is laid out in your browser exactly as it was written, so there is nothing to convert first. Add a signature, a date, a company stamp or a watermark, then download it sealed. Free to start, no account, and the file is never uploaded to open it.
Create a document and get a signing link
Vue runs in the browser, so this half belongs on your server. What the browser receives is a signing URL, never the API key.
<script setup>
import { ref, onMounted } from "vue";
const signingUrl = ref(null);
onMounted(async () => {
// Your own endpoint. It holds the key and decides who may sign.
const res = await fetch("/api/agreements", { method: "POST" });
signingUrl.value = (await res.json()).signingUrl;
});
</script>
<template>
<iframe v-if="signingUrl" :src="signingUrl" class="sign" title="Sign the agreement" />
<p v-else>Preparing your document…</p>
</template>What this ecosystem gets wrong first
- In Nuxt, put the create call in server/api/ rather than in a composable. Anything under server/ stays on the server; anything else may be rendered on both sides, and "may be" is not good enough for a key.
- Nuxt runtimeConfig has a public section and a private one, and the distinction is exactly this. Keys go in the private half.
- Show something while the signing URL is being created. It is a network round trip, and a blank pane for two seconds reads as broken.
Handling the webhook
When a signer completes, we POST the document id, the completion time, the signer record and the SHA-256 fingerprint of the sealed file to your webhook_url. Verify the signature header against the raw request body before you trust any of it, and respond 2xx quickly: do the slow work afterwards, because a webhook that takes ten seconds to answer is a webhook that gets retried.
The fingerprint in that payload is the same value the public verification page checks against, so you can store it and let anybody confirm a document you hold is the one that was signed.
What you get back
- A sealed PDF, with the signature part of the page rather than an annotation some viewers skip
- An audit certificate naming each signer, the time, the address and which checks they passed
- A SHA-256 fingerprint, and a public verification URL that needs no account to open
- Optional company stamps with serial numbers, applied in the same call
The REST API is included on the Business plan at $15 a month rather than sold as an add-on, which is the part worth comparing: several of the platforms a developer evaluates price the API separately and considerably higher.