DEV Community

Aniket Chaturvedi
Aniket Chaturvedi

Posted on

Sign a PDF in Node.js with PAdES, LTV and a green tick

Signing a PDF in Node.js so that Adobe Reader shows the green tick"Signed and all signatures are valid" — with a trusted timestamp and long-term validation (LTV) has always been awkward in the Node ecosystem.

ATick makes it a few lines.

ATick's verified signature appearance — a green-tick validity mark with signer, date, reason and location

Install

npm install atick
Enter fullscreen mode Exit fullscreen mode

Sign with a green tick, timestamp and LTV

const atick = require("atick");
const fs = require("fs");

const pdf = fs.readFileSync("doc.pdf");
const pfx = fs.readFileSync("my.pfx");

const signed = atick.signPfx(pdf, pfx, JSON.stringify({
  password: "your-password", cn: "Axonate Tech", reason: "Approved",
  green_tick: true, page: 1, rect: [300, 55, 575, 175],
  pades: true, timestamp: true, ltv: true,           // PAdES-B-LT
}));

fs.writeFileSync("signed.pdf", signed);
Enter fullscreen mode Exit fullscreen mode

TypeScript works the same (import * as atick from "atick"). Open signed.pdf in Adobe Reader — with a trusted certificate it shows the green tick and "Signed and all signatures are valid."

Adobe Reader:

  • green_tick → the validity mark Adobe greens for a valid + trusted certificate
  • pades / timestamp / ltv → PAdES-B-LT (add lta for B-LTA)

More than the basics

  • USB token / smart-card / HSM via PKCS#11 — atick.signPkcs11(...).
  • Deferred / remote-key / eSignatick.prepareDeferred(...) then atick.embed(...).
  • Certified (no-changes) signatures, encrypted output, and a fully customizable appearance.

The same API exists in Python, Java, .NET and PHP — one engine, five languages.

Links

ATick is free under AGPL-3.0 (a commercial license is only needed to resell it). A product by Axonate Tech.

Top comments (0)