Try it in your browser
.ps in. PDF out.
Open a .ps or .eps file, or edit one of the samples. EfterScript, an interpreter compatible with the PostScript language, runs the program on your own computer, in WebAssembly, and hands back a PDF with its vectors, text, and colour intact. Your file is never uploaded.
- Written in Rust
- Memory-safe
- No dependencies
- MIT licence
Memory-safe
EfterScript is written in Rust. Its decoders, font parsers, and PDF writer are its own, with no third-party parsers behind them, and unsafe code is confined to a thin C interface for embedders.
No ambient authority
The interpreter reaches only what its host hands it. Here that is nothing: the engine imports no functions from the page, and the page's security policy allows no other hosts. Every run has an execution budget, so a runaway program stops cleanly.
Repeatable output
The same program gives the same bytes on every run, with no timestamps or random IDs, and a public corpus of reference outputs pins every behaviour. Paths, text with its Unicode map, and colour spaces carry through as the program set them.
MIT, embeddable anywhere
Rust crates, a C library, and the efterscript npm package this page runs, all from one codebase. Use it in a closed product or a hosted service with no licence fee and no copyleft terms.
Use the same engine in your own code
$ npm install efterscript
import { load } from "efterscript";
const engine = await load();
const { pdf } = await engine.convert(program);