The PDFs it created

Click a preview to open the PDF, or download it: the file you get is the one the engine wrote, not a preview made for this page.

Back to the catalogue

Complete business documents

A commercial invoice

An invoice whose lines and totals fall where the text puts them, and whose square code lets a telephone pay the exact sum into the exact account with nothing retyped.

Read the source in: Rust Python JSON

A commercial invoice, first page

A delivery note

The note that travels with the goods: a barcode against each article, a box the receiver ticks, and the consignment's own code.

Read the source in: Rust Python JSON

A delivery note, first page

A payslip

A payslip: eighteen contribution lines with employee and employer shares, the month against the year to date.

Read the source in: Rust Python JSON

A payslip, first page

A two-page services contract

A services agreement over two pages where no clause is ever cut in half by a page turn, ending in signature, name and date fields filled in on screen.

Read the source in: Rust Python JSON

A two-page services contract, first page

A landscape certificate

A certificate whose border, ribbon and seal are drawn as lines rather than photographed: sharp at any size, and a fraction of the weight.

Read the source in: Rust Python JSON

A landscape certificate, first page

A boarding pass

A boarding pass carrying, as a square code, the one line the gates at an airport read — one character out of place and it is refused.

Read the source in: Rust Python JSON

A boarding pass, first page

A sheet of shelf labels

Fifteen shelf labels on one pre-cut sheet, each with its price and its scannable code, and trim marks in the margins. Six numbers describe the paper.

Read the source in: Rust Python JSON

A sheet of shelf labels, first page

A till receipt on a paper roll

The ticket a counter till prints on a roll 80 mm across: six articles, the tax gathered by rate, the change worked out from the note handed over, and the barcode the shop scans when the ticket comes back.

Read the source in: Rust Python

A till receipt on a paper roll, first page

A snag list, with every defect marked on the plan

The sheet a handover of premises produces: a plan of the floor at 1:300 with nine defects marked where they sit, the list of those defects one to a line, and what they come to. The marks stand above the page, and reading software lists them, filters them, and prints them or leaves them off the paper.

Read the source in: Rust Python

A snag list, with every defect marked on the plan, first page

A statement released in part

Three marks measured on the very words they cover: one showing the reason in the middle of its gap, one repeating it along the length of a wider one, one covering without a word. A mark states what must go; it does not take it out.

Read the source in: Rust Python JSON

A statement released in part, first page

A tender pack of three lots

Three lots, each travelling as a file of its own, under the columns the document itself states — lot, day sent, total — sorted on the day, newest first. The cover sheet lays the same columns out for reading software that shows no pack.

Read the source in: Rust Python JSON

A tender pack of three lots, first page

The notes a program leaves itself

A press proof carrying the run on the file, the plate on the page and the ink on the colour bar placed twice. None of it is drawn and no reading software shows it: it is there for the program that wrote it.

Read the source in: Rust Python JSON

The notes a program leaves itself, first page

Three statements in one file

Four pages carrying three customer statements. Each one claims the pages it runs to, states who it is for and how many copies are owed, and carries its own attachment.

Read the source in: Rust Python JSON

Three statements in one file, first page

One letter each, in one file

Four personal letters behind a contents page. No letter names a page number: each recipient takes the pages that follow, as many as are needed, and every line of the contents leads to the recipient.

Read the source in: Rust Python JSON

One letter each, in one file, first page

Pages, text and fonts

A minimal PDF

Two identical pages carrying the bones of an invoice in plain shapes, and not a word of text: a file of a dozen kilobytes, with no font embedded.

Read the source in: Rust Python JSON

A minimal PDF, first page

Showing page one before the file has arrived

The same document written twice, the ordinary way and with its first page moved to the head of the file, with how much of each must arrive before page one appears.

Read the source in: Rust Python

Showing page one before the file has arrived, first page

Making the file smaller

The same document written twice, plainly and packed, with what each one weighs and what the packing saved.

Read the source in: Rust Python JSON

Making the file smaller, first page

A document that reads freely and asks not to be copied

A page that opens with nothing typed and prints like any other, and that asks the reading software to leave its text where it is. Every word of it is scrambled inside the file.

Read the source in: Rust Python JSON

A document that reads freely and asks not to be copied, first page

A document that asks for a password before it opens

A page nothing shows until its password is typed in: no first line, no preview, no picture of it anywhere. The password is given on the example's page, to be tried.

Read the source in: Rust Python JSON

No picture of this document can be shown: no page of it appears until its password is typed in. Its own page gives the password.

Fonts embedded in the file

Text set in a font embedded in the file, cut down to the letters actually used, and still searchable, copyable and readable aloud.

Read the source in: Rust Python JSON

Fonts embedded in the file, first page

Letters you draw yourself

A tick, a cross and a dash drawn by the program, added to the document as a font, and set among ordinary words.

Read the source in: Rust Python JSON

Letters you draw yourself, first page

A page that carries no font

Four fonts all reading software draws on its own, set on one page, so the file carries no font at all — and the example weighs the same lines both ways to say what that saves.

Read the source in: Rust Python JSON

A page that carries no font, first page

A page set in a font from 1990

A font in Adobe's oldest format, the kind a print shop bought twenty years ago and almost nothing reads any more, carried whole into the file. Every figure the page states about it was read out of the font itself.

Read the source in: Rust Python JSON

A page set in a font from 1990, first page

A page whose letters cost one byte each

The same three lines written twice over — the ordinary way, then with each letter kept as a single byte — and the page states what each of the two came to. The short way also lets the space between the words of a line be set, which the ordinary way does not.

Read the source in: Rust Python JSON

A page whose letters cost one byte each, first page

Dashed and dotted lines

Dashes and dots, the shape of a line's ends, the shape of its corners: each drawn as one line under those settings. The statement at the bottom is ruled with dots, and its total held off by a dashed line.

Read the source in: Rust Python JSON

Dashed and dotted lines, first page

Paragraphs, columns and typography

Breaking a paragraph up, and aligning it

A paragraph broken into lines, then laid out four ways: left, right, centred, justified.

Read the source in: Rust Python JSON

Breaking a paragraph up, and aligning it, first page

Breaking an overlong word

A word longer than the column that holds it: the library leaves it whole, or cuts it at the column's edge.

Read the source in: Rust Python JSON

Breaking an overlong word, first page

Soft hyphens and no-break spaces

A justified column set twice: the long words breaking at their soft hyphens with a hyphen shown, or left whole, and a figure a no-break space keeps together.

Read the source in: Rust Python JSON

Soft hyphens and no-break spaces, first page

Break points after a slash or a hyphen

A justified column set twice: file paths and compounds running past the edge with no break points, then wrapping where a break after a slash or a hyphen is allowed.

Read the source in: Rust Python JSON

Break points after a slash or a hyphen, first page

A report that lays itself out

A title, a rule, two paragraphs, a heading, a table of twenty-six rows and a footnote, handed over in reading order and broken across two pages by the engine.

Read the source in: Rust Python JSON

A report that lays itself out, first page

A font behind the font

One line of statuses set twice: in a company font alone, where the characters it has no glyph for come out as empty boxes, then with a second font behind it that draws them.

Read the source in: Rust Python JSON

A font behind the font, first page

What a font knows about its own letters

Four samples set twice each, once plain and once with a single setting activated: joined letters, small capitals, figures that hang below the line, and pairs moved closer together.

Read the source in: Rust Python JSON

What a font knows about its own letters, first page

Text poured into columns

One long passage poured into three columns, each fitting the lines its height allows and handing the rest to the next.

Read the source in: Rust Python JSON

Text poured into columns, first page

Paragraph indents and spacing

The same two paragraphs six ways: as they come, a first line pushed in, a first line pulled out, the room above and below, a justified block whose last line is centred, and where the first and last lines sit in their rectangle.

Read the source in: Rust Python JSON

Paragraph indents and spacing, first page

A contents page with dot leaders

A contents page whose entries are led to their page numbers by dots the layout draws.

Read the source in: Rust Python JSON

A contents page with dot leaders, first page

Changing style in the middle of a paragraph

A paragraph whose style changes inside it: size, underline, colour.

Read the source in: Rust Python JSON

Changing style in the middle of a paragraph, first page

Tabs and tab stops

The same tabulated rows under each of the three methods, then a contents block whose dots run out to a stop on the right. A tabulation can step on from wherever the text stopped, land on the regular grid of a typewriter, or aim at a stop of its own, on which the text that follows starts, centres, or lines up by its decimal point.

Read the source in: Rust Python JSON

Tabs and tab stops, first page

Lists made from an indent and a tab stop

Bulleted, numbered and nested lists, each built out of an indent that hangs out to the left and one tab stop rather than out of a dedicated list object: the marker sits in the room the indent opens, and every line below the first begins where the tabulation put the text.

Read the source in: Rust Python JSON

Lists made from an indent and a tab stop, first page

Stamps fitted to a rectangle

What a document says about itself — DRAFT, COPY, PAID — laid across rectangles of four different shapes and scaled to each.

Read the source in: Rust Python JSON

Stamps fitted to a rectangle, first page

Shrunk headings and a turned label

Headings of different lengths shrunk to share one column, and a label turned a quarter turn up the page's spine.

Read the source in: Rust Python JSON

Shrunk headings and a turned label, first page

Badges of one size, names of every length

Eight badges cut to the same size, carrying names that run from two short words to a double-barrelled surname. The library finds, for each name, the largest size that fits its rectangle, and that size is printed underneath.

Read the source in: Rust Python

Badges of one size, names of every length, first page

Words that follow a curve

A seal whose legend rides its ring and a second one bowed at its foot so those words stand upright, a title bent over an arch, and the same sentence begun at three places along one straight path.

Read the source in: Rust Python JSON

Words that follow a curve, first page

A whole novel in English

A public-domain English novel read into its twelve chapters and laid out across sixty-two numbered pages, behind a contents you can click, each chapter opening a page of its own and the engine choosing every line break.

Read the source in: Rust Python JSON

A whole novel in English, first page

A whole novel in French

The same layout on a French text: thirty-seven chapters over a hundred and sixty-nine pages, drawing the accented alphabet, so the font kept inside the file carries every shape a wider alphabet needs.

Read the source in: Rust Python JSON

A whole novel in French, first page

Prices crossed out, a shadow behind the title

A half-price shelf card: every line shows the old price with a line through it beside the new one, the sum of the three carries a rule over the top, and the title is set a second time behind itself, shifted and paler, so it reads over anything.

Read the source in: Rust Python JSON

Prices crossed out, a shadow behind the title, first page

Tables

A multi-page invoice table

Twelve invoice lines is one page and thirty is two, the second taking up the first's header and layout.

Read the source in: Rust Python JSON

A multi-page invoice table, first page

A cell's margin, border, inner room and fill

What a cell can do with its own rectangle: the margin, the border, the room inside, the background.

Read the source in: Rust Python JSON

A cell's margin, border, inner room and fill, first page

Coloured cell borders and fills

A cell's four sides in four different colours, and coloured fills told apart from coloured borders.

Read the source in: Rust Python JSON

Coloured cell borders and fills, first page

A self-paginating table

A long table handed over whole, deciding for itself where the pages break: its heading on top of every page, its footnote under every page, its grey grounds stated once for the whole table, and a note you draw under each page at the exact place the table reports.

Read the source in: Rust Python JSON

A self-paginating table, first page

Cells merged down the rows

A specification sheet whose cells are merged down the rows: each group named once beside all of its rows, with one note beside them; the thin lines stop at those cells' edges, and a note too long for the rows it covers makes them grow.

Read the source in: Rust Python JSON

Cells merged down the rows, first page

Columns measured from their cells

One parts list twice: four columns sharing the width equally, then the reference, the quantity and the price each as wide as their own widest cell and the description given everything they leave.

Read the source in: Rust Python JSON

Columns measured from their cells, first page

Pictures inside table cells

A catalogue whose first column is a picture rather than text: four pictures of very different sizes and proportions, each fitted whole and undistorted into the cell the table gives it and standing against a different corner of it, claiming no width from its column and no height from its row.

Read the source in: Rust Python JSON

Pictures inside table cells, first page

A page and a stamp inside table cells

A checking page for a pack somebody else sent: every row shows one of its pages, taken whole out of the file it arrived in, beside a stamp drawn once and placed in every row that was given it. Both are fitted to the cell the table leaves them, claiming no width from their column and no height from their row.

Read the source in: Rust Python JSON

A page and a stamp inside table cells, first page

Overlong text in a narrow cell

Overlong text in a narrow table cell: left to overflow the column, or cut to it.

Read the source in: Rust Python JSON

Overlong text in a narrow cell, first page

Two orders, one frame, one bottom edge

An order of four lines and one of seven, in frames of the same height, both ending on the same bottom edge. Underneath, two notes of unequal length whose lines are moved apart until each reaches the foot of its frame.

Read the source in: Rust Python

Two orders, one frame, one bottom edge, first page

A figure that says which headings reach it

Takings for thirty branches, quarter by quarter, over two pages. Every amount on the page carries the headings it stands under: the branch beside it, the quarter over it, and the year over the four quarters together. Read aloud, an amount is announced by its town, its quarter and its year before the sum itself.

Read the source in: Rust Python JSON

A figure that says which headings reach it, first page

Colour, inks and printing

Grey, screen and printing colours

Swatches in each of the three ways to say a colour — a grey as one number, a screen colour as three, a printing colour as four inks — each captioned with the instruction actually written into the file, and one mid-grey said three ways.

Read the source in: Rust Python JSON

Grey, screen and printing colours, first page

Colour the document defines

The same six colours said as bare numbers and then read through the screen profile the file carries, plus a ramp from light to dark and a sweep of measured hues: colour that still means the same thing on another screen and on a press.

Read the source in: Rust Python JSON

Colour the document defines, first page

Inks on plates of their own

Two inks the press carries on a plate of their own, each at ten strengths, a piece of work set in both, and the alignment crosses used to line the plates up — drawn in an ink every plate answers to.

Read the source in: Rust Python JSON

Inks on plates of their own, first page

Several plates at once, each at its own strength

Eight choices of plate among the four usual inks, each with the small program that shows it printed underneath, and two inks the press carries itself used together, every strength of one against every strength of the other.

Read the source in: Rust Python JSON

Several plates at once, each at its own strength, first page

A colour chart the drawing points into

A chart of house colours the file carries, and a drawing whose sixteen numbers are places in that chart rather than colours. The same drawing is shown twice through two charts: repainting a whole brand is one chart, not every drawing.

Read the source in: Rust Python JSON

A colour chart the drawing points into, first page

One hatch, laid down in any colour you like

One pattern that states no colour of its own, laid down in five colours and in five strengths of one press ink: the fill says what colour to lay it down in. Beside them, the same hatch made of patterns that carry their own colours, which is one pattern per colour.

Read the source in: Rust Python JSON

One hatch, laid down in any colour you like, first page

A sheet as it goes to the press

One drawing on three pages: a press sheet stating where the ink runs, where the blade falls and what is worth keeping, with trim marks; the same sheet cropped to the finished page; and a landscape page that states a quarter turn clockwise on an upright sheet.

Read the source in: Rust Python JSON

A sheet as it goes to the press, first page

A sheet prepared for the printing works

One sheet larger than the finished page: the colour runs three millimetres past the blade, the trim marks stand outside it in an ink every plate carries, every colour is said in the four printing inks, and the page names the paper, the edge of the ink and the cut. Hand it the profile of a press and it claims PDF/X-4, and the sheet prints on itself which profile it is standing on.

Read the source in: Rust Python JSON

A sheet prepared for the printing works, first page

The same numbers, said so they mean something

Six colours and a grey ramp painted three times over with the very same numbers: first left to the device, then said in two ways that state the white they are measured against, the curve applied to them, and how far the base colours reach. All of that travels in a handful of numbers, with no profile to carry.

Read the source in: Rust Python JSON

The same numbers, said so they mean something, first page

The device a file's colours are meant for

The device a file's colours were chosen for, named in plain words on the page it applies to, with a ramp and one patch per base colour painted through that device's own profile. Your printing works' description does just as well.

Read the source in: Rust Python JSON

The device a file's colours are meant for, first page

One rule instead of a hundred colours

Four ways of writing down the rule a colour follows rather than the colours themselves: measured colours read off a table, a range cut into flat bands, one printing ink shown on a screen, and two rules joined end to end.

Read the source in: Rust Python JSON

One rule instead of a hundred colours, first page

The embedded ICC profile

The ICC profile the library embeds in a PDF/A file.

Read the source in: Rust Python

This sample is a colour profile, not a page. Download it to inspect it.

Drawing, patterns and transparency

A month's report, its charts drawn in curves

A pie of where the hours went, a ring gauge of how far into the year the work is, a card with eased corners, and arcs told where to go rather than how far to turn.

Read the source in: Rust Python JSON

A month's report, its charts drawn in curves, first page

Cutting out what you draw

The same area of stripes shown through two windows: a plain disc, and a ring whose middle is left bare.

Read the source in: Rust Python JSON

Cutting out what you draw, first page

Transparency and blend modes

Half-transparent fills that overlap and mix, and one orange square laid over a blue bar in four different ways of mixing colours.

Read the source in: Rust Python JSON

Transparency and blend modes, first page

Gradients in a line and in a circle

Four blends and what each one is for: a header that fades out, the same on the diagonal, a glow carried past its own circle so the corners fill, and one that goes by way of a third colour.

Read the source in: Rust Python JSON

Gradients in a line and in a circle, first page

Text and shapes filled with a gradient

A gradient used as the colour something is filled with: a headline whose letters are windows onto a blend of three colours, and a panel filled with a circular one.

Read the source in: Rust Python JSON

Text and shapes filled with a gradient, first page

Meshes of triangles, every corner its own colour

One triangle running red to green to blue, a grid of sixty with its edges stroked over the paint, the same grid in the four printing inks, and the mesh once more named as a fill and painted inside a disc.

Read the source in: Rust Python

Meshes of triangles, every corner its own colour, first page

One drawing, and each reader sees their own

The same floor plan on four layers shown and hidden one at a time: the furniture and the distances shown, the internal notes hidden until asked for, and a draft watermark meant for the screen and not for the paper.

Read the source in: Rust Python JSON

One drawing, and each reader sees their own, first page

A plan that shows what can be read

A land plan whose layers decide by themselves when to appear. A wide name stands over the plot while the plan is looked at whole, the fine wall figures come in once it is enlarged twice over, and the sentence under the plan is there in two languages, of which reading software shows the one it is set to.

Read the source in: Rust Python JSON

A plan that shows what can be read, first page

One drawing, placed many times

One badge built as a drawing and placed eight times, plus once at half size: the file carries the drawing once, however many times it is placed.

Read the source in: Rust Python JSON

One drawing, placed many times, first page

One pattern, repeated across whatever it fills

Six panels filled with repeating patterns — bars, dots, a slant got without redrawing the pattern, a brick wall, two patterns crossing, a wider gap — and a name in large letters set in the brickwork.

Read the source in: Rust Python JSON

One pattern, repeated across whatever it fills, first page

One colour, seen through four stencils

The same block of colour four times over, each seen through a stencil of its own: a fade for a photograph under a headline, darkened edges to hold the eye, letters cut clean out of it, and a stencil taken from a shape already drawn.

Read the source in: Rust Python JSON

One colour, seen through four stencils, first page

Images

Images on a page

A photograph that goes in exactly as it came out of the camera, and one with transparent parts that keeps them, each on a page cut to its own size.

Read the source in: Rust Python JSON

Images on a page, first page

Every picture a scanner put in one file

A file of three sheets and a file holding one photograph, each picture on a page cut to its own size; the photograph goes in exactly as the camera wrote it, since reading software reads a photograph itself.

Read the source in: Rust Python

Every picture a scanner put in one file, first page

A picture fitted into a rectangle

One picture fitted into a rectangle of one size eight ways: three ways of sizing it, the same one stood in the top left corner with a 12-point inset, a quarter turn left, a quarter turn right, a turn of 20 degrees, and a left-to-right mirror — every panel drawing the picture at the place and the size the library worked out.

Read the source in: Rust Python JSON

A picture fitted into a rectangle, first page

Barcodes and 2D codes

Code 128 and retail barcodes

Stripes for the two jobs that want them: Code 128 for any text at all, and the three a till reads — EAN-13, UPC-A, EAN-8 — each with its last digit worked out rather than typed.

Read the source in: Rust Python JSON

Code 128 and retail barcodes, first page

QR codes

The code an invoice, a boarding pass or a label ends up wanting, drawn into the document rather than fetched as a picture and pasted in.

Read the source in: Rust Python JSON

QR codes, first page

Data Matrix codes

The code industry marks small parts with: still readable at sizes where a QR code has given up, on a circuit board or a phial in a laboratory tray.

Read the source in: Rust Python JSON

Data Matrix codes, first page

PDF417 codes

The code on identity documents and shipping papers: it carries far more text than a row of bars, and it survives a laser scanner dragged across it.

Read the source in: Rust Python JSON

PDF417 codes, first page

Aztec codes

The code on rail and airline tickets, and the reason is room: it needs no band of white around it, which is the first thing trimmed off a layout that has run tight.

Read the source in: Rust Python JSON

Aztec codes, first page

Forms, stamps and overlays

An invoice laid on a letterhead template

An invoice laid over a letterhead supplied as a PDF file.

Read the source in: Rust Python JSON

An invoice laid on a letterhead template, first page

An agreement built on three supplied templates

A supply agreement standing on three templates the customer sent: a headed page under the front page, a plain page under every page the schedule runs to, and a page of conditions that goes in whole.

Read the source in: Rust Python JSON

An agreement built on three supplied templates, first page

The watermark a trial copy carries

What you get before you pay anything: a watermark across every page, and the same pages under it, laid out exactly as a paid copy lays them out. This is also the document that says what a licence key changes, and why every figure on this site is measured with one.

Read the source in: Rust Python JSON

The watermark a trial copy carries, first page

An interactive form

A form a reader fills in: text boxes, a check box, a drop-down, radio buttons.

Read the source in: Rust Python JSON

An interactive form, first page

An archivable PDF/A-3 form

A form that is also a PDF/A-3 file: every field already drawn, with a visible frame, expecting nothing from reading software.

Read the source in: Rust Python JSON

An archivable PDF/A-3 form, first page

Archiving, accessibility and metadata

A sheet that measures what it says

Three rulers — centimetres, inches and points — on a page that tells whatever prints it to put it out at exactly the size it was drawn, and to offer nothing else. Lay a tape measure on the printed sheet and you can check for yourself.

Read the source in: Rust Python JSON

A sheet that measures what it says, first page

A register whose pages say where they came from

Two sittings bound into one file. Each page carries a record of its own — what it is, whose hand wrote it, the day it was written — the photograph on the second page carries one too, and each transcription is tied to the page it transcribes rather than to the file at large.

Read the source in: Rust Python JSON

A register whose pages say where they came from, first page

A file that explains its own entries

A records office's reference, the department it came from, the date until which the document must be kept and its classification, carried inside a file an archive still accepts. No archiving rule knows what a keep-until date is, so each entry carries a description of itself, and that description is what makes a checker accept a fact you alone invented.

Read the source in: Rust Python JSON

A file that explains its own entries, first page

A delivery note that knows its own order

Every line of the note carries the order it was picked for, the article code and the shelf it came off, and prints none of them. The place where the driver signs carries the round and the van, and one beside the fold tick carries nothing but its own place.

Read the source in: Rust Python

A delivery note that knows its own order, first page

A document that can be read aloud

Two pages carrying a copy of themselves that nobody sees: this is a heading, this is a table, and this is the order to read them in. Software reading the document aloud follows that instead of the order the marks were drawn in, and skips the running head. On the page, nothing looks any different.

Read the source in: Rust Python JSON

A document that can be read aloud, first page

A list whose pictures speak too

A parts list whose first column is a picture rather than a word. Each picture carries the sentence somebody hears in its place, so nothing in the list is lost on a reader who cannot see it. On the page, the pictures are simply pictures.

Read the source in: Rust Python JSON

A list whose pictures speak too, first page

Factur-X: the electronic invoice

The electronic invoice French law has required since September 2026: one file, a page a person reads and the same invoice inside it as XML. Nothing to reconcile afterwards, because there is only ever one invoice.

Read the source in: Rust Python JSON

Factur-X: the electronic invoice, first page

An invoice that asks before it claims

The library reads the invoice as it stands and names, clause by clause, everything between it and Factur-X. Two things stand in the way, then one, then none — and only then is a file written.

Read the source in: Rust Python

An invoice that asks before it claims, first page