v1.0.0 — Initial Release #16
Nizoka
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
v1.0.0 — Initial Release
This is the first stable release of pdfnative, extracted from plika.app where it has
been powering production multi-language PDF generation across 16 Unicode scripts.
Install
What's in this release
Zero-dependency PDF engine
Built from scratch in pure TypeScript — no PDFKit, no Puppeteer, no native binaries, no runtime
dependencies. Works in Node.js ≥ 22, browsers, Deno, Bun, and Web Workers out of the box.
Dual ESM + CJS build, tree-shakeable with
sideEffects: false.16 Unicode scripts with OpenType shaping
Full glyph shaping pipelines for Thai (GSUB + GPOS mark-to-base/mark-to-mark), Arabic
(positional GSUB: isol/init/medi/fina + lam-alef), Devanagari, Bengali, Tamil, and Unicode BiDi
(UAX #9) layout including bracket pairing and punctuation affinity.
Supported scripts: Thai, Japanese, Chinese (SC), Korean, Greek, Devanagari, Turkish, Vietnamese,
Polish, Arabic, Hebrew, Cyrillic, Georgian, Armenian, Bengali, Tamil.
Tagged PDF / PDF/A compliance
Full structure tree (
/Document → /Table → /TR → /TH|/TD,/H1–H3,/P,/L,/Figure,/Link,/TOC → /TOCI),/ActualTexton every marked content sequence, XMP metadata, sRGB ICCOutputIntent.
Encryption, Signatures & Forms
bitmask
X.509 DER parsing; all crypto is zero-dependency pure TypeScript
/APappearance streams (ISO 32000-1 §12.7)Document builder
12 block types for free-form document composition:
HeadingBlock,ParagraphBlock,ListBlock,TableBlock,ImageBlock,LinkBlock,SpacerBlock,PageBreakBlock,TocBlock,BarcodeBlock,SvgBlock,FormFieldBlock.Header/footer templates with
{page}/{pages}/{date}/{title}placeholders, text andimage watermarks with transparency, table of contents with dot leaders and internal
/GoTolinks.Barcodes, SVG & Streaming
Five barcode formats as pure PDF path operators (zero image dependency): Code 128, EAN-13, QR Code
(ISO 18004), Data Matrix ECC 200, PDF417. SVG element rendering (7 types). AsyncGenerator
streaming output with configurable chunk size.
PDF Parser & Modifier
Read and incrementally modify existing PDFs — tokenizer, xref table/stream parser, FlateDecode
inflate, object parser with discriminated union type guards,
PdfReader, andPdfModifierwithnon-destructive incremental
/Prevchain.Security
Three CWE mitigations are included and exposed as public API:
MAX_PARSE_DEPTHsetMaxInflateOutputSize()/DEFAULT_MAX_INFLATE_OUTPUTMAX_XREF_CHAINURL validation blocks
javascript:,file:, anddata:schemes as well as control characters(U+0000–U+001F, U+007F–U+009F) in link annotations. Color values are validated and sanitized
before interpolation into PDF content streams.
Quality metrics
Breaking changes
None — this is the initial stable release.
Full changelog
See CHANGELOG.md for the
complete list of added features, fixes, and security hardening details.
Links
This discussion was created from the release v1.0.0 — Initial Release.
Beta Was this translation helpful? Give feedback.
All reactions