PDF signer

Draw a signature and stamp it on page 1 of a local PDF with pdf-lib. PNG embed at 150×50 pt. Not a certificate signature.

Docify's PDF signer stamps a canvas drawing onto page 1 of a local PDF in the browser with pdf-lib. The pad is captured with canvas.toDataURL() (PNG), embedded via embedPng, and drawn at x: 50, y: 50 (150×50 pt, origin bottom-left). It is a visual stamp, not a certificate-based digital signature. Nothing is uploaded.

The signature is placed on the first page. Nothing is uploaded.
Document

No PDF uploaded

Signature

Draw with your mouse or trackpad

PDF waitingSignature waiting

How it works

  1. Choose a file in the application/pdf picker. Anything else is rejected with alert(). Preview is an iframe pointed at URL.createObjectURL. Nothing is sent to a server.
  2. The pad is a 500×200 canvas. The 2d context uses black stroke, line width 2, and round caps. Mouse down/move/up map through getBoundingClientRect. There are no touch handlers. Clear wipes the canvas and drops the stored data URL.
  3. Sign and download reads the file with arrayBuffer() and PDFDocument.load from pdf-lib. Only getPages()[0] is used. The drawing is canvas.toDataURL() (default PNG), fetched to bytes, and embedded with embedPng.
  4. The PNG is drawn at x: 50, y: 50 with width 150 and height 50 (PDF user space; origin at the bottom left). pdfDoc.save() becomes an application/pdf download named signed-document.pdf. This is a visual stamp, not a PKCS#7 or PAdES signature, and it does not let you move the image, sign later pages, or upload a signature file.

FAQ

Does this tool upload my PDF?
No. Preview uses a local object URL, the canvas stays in the page, and pdf-lib reads the file with arrayBuffer in your browser. The page does not send the PDF or the signature to a server.
Is this a certificate-based digital signature?
No. Sign and download embeds a PNG of the canvas drawing with pdf-lib embedPng and drawImage. It does not create a PKCS#7 or PAdES signature, attach a certificate, or prove identity. Treat it as a visual stamp only.
Where is the signature placed?
Only on the first page from getPages()[0]. pdf-lib draws it at x: 50, y: 50 (user space, origin at the bottom left) with width 150 and height 50. You cannot drag the stamp, pick another page, or upload a signature image.
How do I draw the signature?
The pad is a 500×200 canvas with a 2d context (black stroke, line width 2, round caps). Mouse down/move/up events map through getBoundingClientRect. The stamp is canvas.toDataURL() (default PNG). There are no touch handlers, and this is not a typed-name or uploaded-image signer.

Related