pagiko
v0.1.0
Published
PDF generation library that feels like home. Make PDFs the way you build UIs thanks to Tailwind and Flexbox.
Downloads
8
Maintainers
Readme
Pagiko
Installation
bun add pagikoQuick Start
You can quickly get started by creating an empty PDF.
import { pdf, page } from "pagiko";
const file = pdf().child(page());Here, we created a PDF document with a single page. Once you've done with your layout, you can render the file into bytes.
const bytes = await file.renderToBytes();
// ^ UInt8ArrayWith those bytes, you can write the file to your filesystem for example.
import { writeFile } from "node:fs/promises";
await writeFile("document.pdf", bytes);But since this library also works in browsers, you can use whatever method you like to display or download the PDF depending on your needs.
API
pdf() - create a new document
.author() - set the author of the document
Set document's author metadata. The author will appear in the document properties section of most PDF readers.
pdf().author("Vexcited");.font() - load a font to later use
This will add the font to the document, needed when you want to use a custom font later on. The default font is Helvetica.
import { pdf, font, StandardFonts } from "pagiko";
const times = font(StandardFonts.TimesRoman);
const buffer = new Uint8Array(/* ...a font file... */);
const custom = font(buffer);
// Load both fonts to be later used.
pdf().font(times).font(custom);.child() - add a new page to document
Just like a tree, if you want to add pages to your document,
you must use child for each page.
import { page } from "pagiko";
pdf()
.child(page()) // Page 1
.child(page()); // Page 2page() - create a new page
.h() - set the height
Define a new height for the page, provided in pt.
Defaults to 841.89 which is the height in pt for an A4.
page().h(100.5);.w() - set the width
Define a new width for the page, provided in pt.
Defaults to 595.28 which is the width in pt for an A4.
page().w(200.25);.size() - set the width and height at the same time
Define a new width and height for the page, provided in pt.
Defaults to [595.276, 841.8898] which the width and height in pt for an A4.
import { PageSizes } from "pagiko";
page().size([200.25, 100.5]);
page().size(PageSizes.A7);.child() - add elements to the page
Add elements to the root of the page, you can chain this function to add multiple elements to the root.
import { div, text } from "pagiko";
page
.child(div()) // Add an empty div to the page
.child(text("")); // Add an empty text to the pageContributing
Quick Start
git clone https://github.com/Vexcited/Pagiko && cd Pagiko
bun install
bun run ./examples/... # run any example!Release
I am using Mentor to automatically create releases for this package.
mentorWe're using semver for versioning.
