Skip to content

v1.1.0 — pdfnative 1.3.0 coverage + an agent-native CLI (22 scripts, COLRv1 emoji, true streaming, PDF/UA, --json envelopes, schema)

Choose a tag to compare

@Nizoka Nizoka released this 14 Jun 07:39
· 8 commits to main since this release
c329762

Released 2026-06-14

v1.1.0 surfaces the new pdfnative 1.3.0 engine capabilities through the
CLI and makes the tool agent-native. render now reaches all 22 Unicode
scripts
and COLRv1 colour emoji through expanded --font / --lang
shortcuts, adds true constant-memory streaming (--stream-true), and a
--max-blocks cap for very large documents. inspect gains a read-only
PDF/UA (ISO 14289-1) structural validator (--pdfua, --check pdfua) for
CI accessibility gates. A new agent-native contract — global --json
envelopes, stable E_* error codes, a --dry-run validation mode, and a
schema command — lets autonomous AI agents and CI pipelines drive the CLI
deterministically. It also adds a token-economy output projection
(--summary / --fields + compact JSON under --json) that cuts agent output
~90% while preserving the fields orchestration code branches on. A CycloneDX
SBOM is now attached to every release.

100% backward-compatible with v1.0.0 — every existing invocation keeps working.

⭐ Star pdfnative — the
zero-dependency PDF engine that powers this CLI. Every star helps the
long-term project.

Highlights

  • 22 Unicode scripts + COLRv1 colour emoji. The six scripts new in
    pdfnative 1.3.0 — Telugu (te), Sinhala (si), Tibetan (bo), Khmer
    (km), Myanmar (my), Amharic/Ethiopic (am) — plus the existing 16 and
    native colour emoji are now selectable via --font.
  • True constant-memory streaming. --stream-true emits and frees PDF parts
    as it goes, so the fully-joined binary never materialises in memory.
    Byte-identical to the buffered builders.
  • Configurable block cap. --max-blocks <n> exposes pdfnative's
    layout.maxBlocks (default 100 000) for multi-thousand-page reports.
  • PDF/UA structural validation. inspect --pdfua reports
    { valid, errors, warnings }; inspect --check pdfua is a CI gate. It is a
    developer-time structural check, not a substitute for a full reference
    validator such as veraPDF.
  • Agent-native contract. Global --json status/error envelopes, stable
    E_* error codes, a --dry-run validation mode, and a schema command.
    Token economy is built in via --summary (minimal verdict), --fields
    (dot-path projection), and compact JSON under --json (--pretty opt-out)
    to reduce agent output by ~90% without changing human-readable defaults.
    See AGENTS.md.
  • Supply-chain transparency. A CycloneDX SBOM (sbom.cdx.json) is attached
    to every GitHub release and an OpenSSF Scorecard badge is published.

What's new

render

  • --font allow-list expanded to all 22 bundled scripts + color-emoji.
    Each shortcut name doubles as its --lang code; pdfnative routes each code
    point to the font whose cmap covers it, so mixed-script and emoji text render
    automatically once the relevant fonts are registered.

    # Telugu document
    pdfnative render --input te.json --font te --lang te --output te.pdf
    
    # COLRv1 colour emoji
    pdfnative render --input party.json --font color-emoji --lang color-emoji --output party.pdf
  • --stream-true — true constant-memory streaming via
    buildDocumentPDFStreamTrue / buildPDFStreamTrue. Same constraints as
    --stream (no TOC blocks, no {pages} placeholder), byte-identical output,
    and mutually exclusive with the other --stream* flags.

    pdfnative render --input big-doc.json --output report.pdf --stream-true
  • --max-blocks <n> — raise or lower the document-block ceiling
    (default 100 000).

    # Cap a potentially huge payload as a fail-fast guard
    pdfnative render --input big-doc.json --output report.pdf --max-blocks 50000

    See samples/render/document/06-max-blocks.*.

inspect

  • PDF/UA (ISO 14289-1) structural validation via validatePdfUA. The
    validator checks /MarkInfo /Marked, /StructTreeRoot + /ParentTree,
    /Metadata, /Lang, and per-page /MCID uniqueness — a fast developer-time
    gate that complements a full reference validator such as veraPDF.

    # Add a report to the inspection output
    pdfnative inspect --input report.pdf --pdfua
    
    # CI accessibility gate (exit 1 if structural prerequisites fail)
    pdfnative inspect --input report.pdf --check pdfua

Agent-native automation

The CLI is now designed so an autonomous AI agent — or any program — can drive
it deterministically (no MCP server, no daemon, just the process contract).

  • --json envelope. Pass --json to any command to get a single
    machine-readable object on stderr. On failure:
    { "ok": false, "command": "…", "error": { "code": "E_*", "message": "…" } }.
    On success, render / sign / batch emit a { "ok": true, … } status
    line. stdout stays reserved for the artifact (PDF, report, schema, script).

  • Stable error codes. Every failure carries a code (E_USAGE, E_INPUT,
    E_PARSE, E_IO, E_SIGN, E_VERIFY_FAILED, E_CHECK_FAILED,
    E_UNSUPPORTED, E_RUNTIME) so callers branch on a class, not on prose.
    Numeric exit codes (0/1/2) are unchanged.

  • --dry-run validates inputs for render / sign / batch without
    producing output.

  • schema command prints a versioned JSON Schema (Draft 2020-12) for the
    render input, the inspect / verify / batch output, and the compact
    inspect-summary / verify-summary / batch-summary shapes.

  • Token economy output projection. For JSON-on-stdout commands
    (inspect / verify / batch):

    • compact JSON is automatic under --json (--pretty forces indentation);
    • --summary emits a canonical minimal verdict:
      • inspect: { pages, encrypted, signatures, pdfa }
      • verify: { valid, signatures, invalid }
      • batch: { total, succeeded, failed } (drops per-file results)
    • --fields a,b.c keeps only named dot-paths (array segments map over items;
      unknown paths are omitted).
      This keeps stdout token-cheap for agents while preserving deterministic
      machine-readable behavior.
    pdfnative schema list
    pdfnative schema verify-summary
    pdfnative schema render
    pdfnative inspect --input doc.pdf --json --summary
    pdfnative verify --input doc.pdf --json --fields valid
    pdfnative render --input doc.json --output out.pdf --dry-run --json

    See AGENTS.md and samples/agent/.

Compatibility

  • Built on pdfnative ^1.3.0 (was ^1.2.0).
  • Node.js ≥ 20, Bun, Deno (node dist/cli.cjs).
  • Zero extra runtime dependencies — pdfnative remains the sole dependency.
  • 100% backward-compatible with v1.0.0.

Notes

  • Sign-side LTV (embedding timestamps / /DSS at signing time) remains
    upstream-blocked in pdfnative; sign --timestamp stays reserved and errors
    clearly. See ROADMAP.md and SECURITY.md.
  • The agent contract adds no network surface: --json and --dry-run are
    pure local presentation/validation. The CLI stays offline by default.