@passport-mrz/renderer
v1.0.0
Published
A passport MRZ string rendering library that supports both browser and Node.js environments
Readme
@passport-mrz/renderer
Renders passport MRZ (Machine Readable Zone) strings as images using the OCR-B font.
Installation
# ✨ Auto-detect
npx nypm install @passport-mrz/renderer
# npm
npm install @passport-mrz/renderer
# yarn
yarn add @passport-mrz/renderer
# pnpm
pnpm install @passport-mrz/renderer
# bun
bun install @passport-mrz/renderer
# deno
deno install @passport-mrz/rendererUsage
Programmatic API
import type { Input } from '@passport-mrz/builder'
import { renderMRZToPNG } from '@passport-mrz/renderer'
const input: Input = {
documentType: 'PP',
issuingState: 'JPN',
documentNumber: 'XS1234567',
primaryIdentifier: 'GAIMU',
secondaryIdentifier: 'SAKURA',
nationality: 'JPN',
dateOfBirth: '790220',
sex: 'F',
dateOfExpiry: '110101'
}
// Generate PNG buffer
const pngBuffer = await renderMRZToPNG(input)Output Example

The above image shows the rendered output for the input data in examples/XS1234567.json.
Command Line Interface
Basic usage with command line arguments:
npx @passport-mrz/renderer \
--documentType P \
--issuingState JPN \
--documentNumber XS1234567 \
--primaryIdentifier GAIMU \
--secondaryIdentifier SAKURA \
--nationality JPN \
--dateOfBirth 790220 \
--sex F \
--dateOfExpiry 110101Load input from JSON file:
npx @passport-mrz/renderer --json input.jsonCustom output directory and filename with placeholders:
npx @passport-mrz/renderer \
--json input.json \
--outdir ./output \
--filename passport-{documentNumber}.pngFeatures
🖼️ OCR-B font rendering - Uses authentic OCR-B font for accurate MRZ appearance 🌐 Cross-platform support - Works in both Node.js and browser environments 🎯 CLI included - Command-line tool with flexible input options 📄 Dynamic filenames - Supports placeholder substitution in output filenames
API
renderMRZToPNG(input)
Renders MRZ as a PNG image buffer.
input
Type: Input (from @passport-mrz/builder)
Passport information object containing document details.
Returns
Type: Promise<Buffer>
PNG image data as a Buffer (Node.js only).
renderMRZToCanvas(input)
Renders MRZ to an HTML5 Canvas object.
input
Type: Input (from @passport-mrz/builder)
Returns
Type: Canvas
Canvas object with rendered MRZ text.
CLI Options
--json <file>- Load input data from JSON file--outdir <directory>- Output directory (default: current directory)--filename <name>- Output filename (default:{documentNumber}-{primaryIdentifier}_{secondaryIdentifier}.png)- Individual passport fields:
--documentType,--issuingState,--documentNumber, etc.
Filename Placeholders
The output filename supports these placeholders:
{documentType}- Document type{issuingState}- Issuing state code{documentNumber}- Document number{primaryIdentifier}- Primary identifier (surname){secondaryIdentifier}- Secondary identifier (given names){nationality}- Nationality code{dateOfBirth}- Date of birth{personalNumber}- Personal number{sex}- Sex{dateOfExpiry}- Date of expiry
Related
- Passport MRZ Simulator - Interactive web app using this library
- @passport-mrz/builder - Generate MRZ strings
License
MIT
