Skip to content

Oicana

Generate print-ready PDFs from your code in Node, Python, Java, Rust, C#, PHP, or the browser. One template format. No headless Chrome, no per-document SaaS bills.

Invoices, reports, contracts, certificates, and statements designed in Typst, compiled in milliseconds, and deployed wherever you already run code.

Template main.typ
#import "@preview/oicana:0.1.1": setup
#import "certificate.typ": *
#let project-file(path) = read(path, encoding: none)
#let (input, _, _) = setup(project-file)
#let name = input.certificate.name
#show: certificate.with(name: name)
Compile from
import { Template } from "@oicana/browser";
const template = new Template(templateBytes);
const inputs = new Map<string, string>();
inputs.set("certificate", JSON.stringify({ name: "Alex Kim" }));
const pdf = template.compile(inputs, new Map());
import { Template } from "@oicana/node";
const template = new Template(templateBytes);
const inputs = new Map<string, string>();
inputs.set("certificate", JSON.stringify({ name: "Marcus Lee" }));
const pdf = template.compile(inputs, new Map());
from oicana import Template
import json
template = Template(template_bytes)
pdf = template.compile(
json_inputs={"certificate": json.dumps({"name": "Priya Patel"})}
)
import com.oicana.Template;
Template template = new Template(templateBytes);
byte[] pdf = template.compile(
Map.of("certificate", "{\"name\": \"Jakob Müller\"}"),
Map.of()
);
using Oicana;
using System.Text.Json.Nodes;
var template = new Template(templateBytes);
var inputs = new Dictionary<string, JsonNode>
{
["certificate"] = JsonNode.Parse("{ \"name\": \"Sofía García\" }")!
};
var pdf = template.Compile(inputs, new(), ExportFormat.Pdf(),
new CompilationOptions(CompilationMode.Production));
use oicana::Template;
use oicana_input::{TemplateInputs, input::json::JsonInput};
let mut template = Template::init(Cursor::new(template_bytes))?;
let mut inputs = TemplateInputs::new();
inputs.with_input(JsonInput::new(
"certificate".into(),
json!({ "name": "Yui Tanaka" }).to_string(),
));
let pdf = template.compile(inputs)?;
use Oicana\Template;
$template = new Template($templateBytes);
$pdf = $template->compile(
jsonInputs: ['certificate' => ['name' => 'Anya Volkov']]
);
Output certificate.pdf
Certificate for Alex KimCertificate for Marcus LeeCertificate for Priya PatelCertificate for Jakob MüllerCertificate for Sofía GarcíaCertificate for Yui TanakaCertificate for Anya Volkov

Performant

Templates can be “warmed up” and can produce non-trivial PDF files in single digit milliseconds.

Multi-platform

The same templates can be compiled from the browser or server-side with C#, Java, Node.js, Rust, Python, and PHP.

Version Control and AI Ready

Templates are plain text files and can be checked in to version control and AI can assist in writing them.

Escape Vendor Lock-in

Reuse templates with other Typst based solutions; The Typst compiler is open source!

Documentation

Pricing

Non-commercial

Free

Oicana is source-available under the PolyForm Noncommercial License 1.0.0 . Any non-commercial use is free — personal projects, hobby use, research, and education. The license also explicitly permits use by charitable organizations, educational institutions, public research organizations, and government institutions, regardless of their funding source.

View license →

Commercial

Free 30-day trial

Flat fee, no metering. Licenses are per application, priced by company size. Pay once for unlimited seats, environments, and documents. Every subscription includes all Oicana components like the CLI and the integrations.

Startup

For small companies and individuals

Up to €2M yearly revenue

19.00€ / month

Scaleup

For growing companies

Up to €25M yearly revenue

49.00€ / month

Enterprise

For large organizations

Above €25M yearly revenue

99.00€ / month

Already subscribed? Manage your subscriptions.

FAQ

What counts as one application?

An application is one distinct software product or internal tool, regardless of how many services, environments, or users it has. See Section 4.3 of our Terms of Service for the binding definition.

  • A SaaS with multiple microservices generating documents 1 application
  • Web, iOS, and Android apps sharing one backend 1 application
  • Production, staging, and dev environments 1 application
  • A customer-facing SaaS plus a separate internal admin tool 2 applications
  • One codebase white-labeled and sold as 3 separate products (reach out to us for a custom solution) 3 applications
Can I try Oicana commercially before buying?

Yes, commercial evaluation is free for 30 days from your first commercial use. You can follow the getting-started guide, build a proof-of-concept integration, and test Oicana internally without a subscription. Documents generated during evaluation must not be distributed externally or used in production. See Section 4.2 of our Terms of Service for the full terms.

Do you offer a money-back guarantee?

Yes, we offer a 30-day money-back guarantee. If Oicana isn't the right fit, just email support@oicana.com within 30 days of your purchase and we'll refund you in full. See our Refund Policy for the full terms.