Everything the library does, said in plain words
One engine writes all of it, and the same engine runs on Linux, on Windows and on macOS. Your own program calls it, whether that program is written in Rust or in Python: the two say the same things and produce the same documents, to the byte.
Below is the whole of it, group by group, with what each thing gives you on the finished document. Where an example shows one at work, the line leads to it: the document it produced and the code that produced it, in both languages.
Text and typefaces
- Put your own typeface into the document, so it reads the same on every screen and every printer, even where nobody installed that typeface. See it
- Only the letters the document actually draws travel with it. A typeface holds thousands of shapes and a letter uses a few dozen, and it is the few dozen that are carried. See it
- The text stays text: whoever opens the file can select it, copy it and search it, and so can a search engine. See it
- Ask how wide a piece of text will come out before drawing it, so nothing overruns the box you meant it for. See it
- Ask for the biggest size at which a title still fits across a given width: it shrinks rather than spills. See it
- Turn a block of text to any angle, around any point of the page. See it
- Spread the letters, the words or the lines apart, lift a figure above the line, or draw the text hollow.
Paragraphs, lists and columns
- Hand over a paragraph and a width, and the engine works out where every line breaks. See it
- Line the text up on the left, on the right, centred, or flush against both edges, with the last line treated in its own way. See it
- Indent the first line, indent the whole block, and leave air above it and below it. See it
- Decide what becomes of a word too long for the column: let it stick out, or cut it and carry on underneath. See it
- Break after a slash or a dash, so a long web address or a double-barrelled name fits where it should. See it
- Honour the hyphen a writer marked as optional, and the space that must never be broken. See it
- Fill the gap before a page number with a row of dots, the way a table of contents does. See it
- Set the stops a tab jumps to, lined up left, centre, right or on the decimal point. See it
- Bulleted lists, numbered lists and lists inside lists, the text hanging neatly under its marker. See it
- Ask how much of a text fits in a given height, and pour what is left into the next column or onto the next page. See it
- Change typeface, size, colour or underlining in the middle of a sentence, and the line still sits properly. See it
- Lay a word across the page like a rubber stamp, scaled to the space it is given and set at an angle. See it
Tables
- Set a column's width outright, as a share of the table, or let the engine measure the widest thing standing in it. See it
- A table longer than the page carries on over as many pages as it needs, asked for once. See it
- The heading rows, and the rows at the foot, come back at the top and the bottom of every page. See it
- Keep a group of rows together, so a total never lands alone at the top of a page. See it
- Merge cells across several columns and down several rows. See it
- Choose which lines are drawn at all — the frame, one row, every other row — and how thick and what colour each of them is. See it
- Give a single cell its own border, side by side, each side with its own thickness and its own colour. See it
- Colour the background of the heading, of the foot, of every other row, of one row or of one column. See it
- Line figures up on the decimal point, so a column of amounts reads straight down. See it
- Put a picture in a cell, fitted whole and never squashed. See it
- Cut a cell's text at the edge of its column rather than let it spill over its neighbour. See it
- Ask afterwards where a row, a column or a cell ended up, and draw or link on top of it. See it
Images
- Place a JPEG, a PNG or a BMP anywhere on the page, at any size. See it
- Fit a picture into a box: at its own size, contained inside it, covering it, stretched to it, or shrunk only if it is too big. See it
- Anchor it in that box — a corner, a side, the middle — turn it a quarter, a half or any angle at all, and mirror it. See it
- Read the resolution the file declares, and place the picture at the size it will actually print. See it
- Respect the way round a camera recorded a photograph, so one taken sideways is not shown sideways. See it
- Keep a picture's transparency, knock one colour out of it, or paint its shape in a colour you choose. See it
- Carry the picture's own colour description with it, so its colours still mean the same thing on a press. See it
Colour and printing
- State a colour in shades of grey, in screen colours, or in the four inks a press lays down. See it
- State it as a measurement instead, owing nothing to any particular screen or press. See it
- Carry the description of your colours inside the file, so what you chose is what comes out at the other end. See it
- Name a special ink — a house colour, a varnish, a metallic — printed on a plate of its own. See it
- Name several inks at once, each at its own strength. See it
- Declare which press or which screen the document was made for. See it
- Mark the trim, the bleed and the useful area a printer needs in order to cut the sheet. See it
- Force a document to print at its true size, and take the shrink-to-fit option away from whoever opens it. See it
- Ask for double-sided printing, a paper tray, a number of copies and the pages the print box offers by default. See it
Drawing
- Lines, rectangles and curves, filled, outlined, or both at once. See it
- Cut the drawing to a shape so nothing paints outside it — even to the shape of the letters themselves. See it
- One colour fading into another, along a line or outward from a circle, through as many steps as you like. See it
- Fill a shape, or a word, with that fade. See it
- Draw one small motif and have it repeat over any area. See it
- Make anything partly see-through, and blend it into what lies under it in sixteen different ways. See it
- Fade one drawing out using another as its mask. See it
- Draw something once and place it again and again, without the file growing each time. See it
- Layers whoever opens the file can switch on and off, each with its own state on screen and on paper. See it
Barcodes and square codes
- The striped kind, for a shop till or a warehouse scanner: Code 128, EAN-13, UPC-A and EAN-8. See it
- A QR Code holding a web address, a payment, or anything else a telephone should pick up in one go. See it
- A DataMatrix, for a label with almost no room on it. See it
- A PDF417, the wide flat one on a driving licence or a boarding pass. See it
- An Aztec, the one on a train ticket read off a lit screen. See it
- A payment code a banking application reads, so an invoice is settled without anybody retyping an account number. See it
Forms
- Boxes a reader types into, boxes they tick, lists they pick from, and sets of round buttons where only one may be chosen. See it
- Each with its own frame and colour, what it says to start with, and whether it may be left empty. See it
- An area set aside for a signature, framed on the page or leaving no mark at all. See it
- A form that still looks right in a reader that draws nothing itself, because every box carries its own picture. See it
Archiving and accessibility
- Write a file made to be opened in twenty years' time, carrying everything it needs inside itself. See it
- Mark the text up so a reading aid tells a heading from a paragraph and says the page in the right order. See it
- Describe a picture in words for somebody who cannot see it, and say which cell heads which column of a table. See it
- Attach any file inside the document — an invoice's figures, a spreadsheet, a source file — and say what it is there for. See it
- Write the electronic invoice: one file, a page for a person and the same amounts for a machine. See it
- Say who made the document, when, and what it is about, in the block archives and search engines read. See it
- Describe facts of your own — a batch number, an internal reference — in a way an archive checker still accepts. See it
Reading a PDF you already have
- Open a PDF that already exists and count its pages. See it
- Take a page out of it and put it into a new document, its typefaces and its colours exactly as they were. See it
- Lay your own text over that page, so an invoice lands on the headed paper your printer supplied. See it
- Make sense of a file whose index is broken, by reading it through from one end to the other.
Signing
- Seal a document with your own certificate, so whoever receives it can prove who sent it and that nothing has changed since.
- Seal a PDF that already exists, and add a second signature after the first without disturbing it.
- State what the seal still allows afterwards: nothing at all, filling in a form, or adding notes.
The file itself
- Every usual page size, from the largest poster down to a postcard, plus any size you name, upright or on its side. See it
- The same pages at about half the bytes, because nothing that nothing reads is carried.
- Choose how hard the file is squeezed, or leave it unsqueezed to read it with your own eyes. See it
- Choose which version of the PDF format is written, or let the engine ask for the oldest one that can carry what you used. See it
- The same figures give the same file, byte for byte, every time: the engine never looks at the clock.
- Nothing ever reaches the network. There is no connection to make, no account to check and no licence server to wait for.
- Write to a file, into memory, or straight down a stream that is already open. See it
Some of these deserve a page of their own
- The electronic invoice, and the dates it becomes compulsory
- Signing a document, and what a seal proves
- Documents that still open in twenty years, and that everybody can read
- Colour profiles: which ones the engine works with, and whose profile travels in your document
- A file ready for the press, and the part of the standard the engine writes
- Every worked example, by subject
What it does not do
Nobody is served by a list that only says yes. The engine writes PDFs and can take pages out of one that already exists; it does not pull the text or the pictures back out of somebody else's file, it does not put a password on a document, and it will not open one that already has a password on it.
Glossary
- Factur-X
- An invoice that is a page for a person and a data file for a machine, in one document. The page looks like any invoice; inside, the same amounts are attached in a form accounting software reads without anybody retyping them. French law requires this exchange between companies.
- CMYK
- The four inks a printing press lays down: cyan, magenta, yellow and black. A screen mixes light instead, so a document going to a press states its colours in inks, not in screen colours.
- QR Code
- The square of black and white dots you point a telephone at: on a poster, on a restaurant table, at the foot of a bill. It carries a web address, or the exact details of a payment, so nobody has to type anything in. On an invoice it turns paying into one tap.
- DataMatrix
- A tiny square code, sometimes smaller than a grain of rice, for things with no room for anything bigger: a box of medicine, an electronic part, a parcel. It is still read when a corner of it is scratched or smudged, which is why factories and pharmacies print it.
- Aztec
- The code with a little target in the middle, the one on a train ticket or on a boarding pass held up on a telephone screen. It was made to be read off a lit screen and through a scratched window, and it takes less room than the others for the same text.
- PDF417
- A wide, flat code made of stacked bars, the one on the back of a driving licence, on an airline boarding pass or on a shipping label. It holds several hundred characters — a whole identity, a whole delivery line — where an ordinary striped code holds a number.
- signature
- A seal inside the document that proves two things at once: who approved it, and that not one byte has changed since. A reader shows it as a banner at the top of the page.
Where this information comes from
Every text below was read on July 27, 2026, and is linked here so you can read it yourself. Rules change and dates written into law get moved, so if you are reading this a long time after that day, go and look.
- ISO 32000-1:2008 — Document management — Portable document format — Part 1: PDF 1.7
-
International Organization for Standardization — July 2008
What we do about it: The format itself. It is what the engine writes, clause by clause.
- ISO/IEC 18004:2024 — Information technology — Automatic identification and data capture techniques — QR code bar code symbology specification
-
International Organization for Standardization — August 2024
What we do about it: The QR Code the engine draws, in byte mode, at the middle level of error correction.
- ISO/IEC 16022:2024 — Information technology — Automatic identification and data capture techniques — Data Matrix bar code symbology specification
-
International Organization for Standardization — May 2024
What we do about it: The DataMatrix the engine draws, in the ECC 200 form.
- ISO/IEC 24778:2024 — Information technology — Automatic identification and data capture techniques — Aztec Code bar code symbology specification
-
International Organization for Standardization — April 2024
What we do about it: The Aztec code the engine draws.
- ISO/IEC 15438:2015 — Information technology — Automatic identification and data capture techniques — PDF417 bar code symbology specification
-
International Organization for Standardization — September 2015
What we do about it: The PDF417 the engine draws.
- ISO/IEC 15417:2007 — Information technology — Automatic identification and data capture techniques — Code 128 bar code symbology specification
-
International Organization for Standardization — June 2007
What we do about it: Code 128, the striped one for any text.
- ISO/IEC 15420:2025 — Information technology — Automatic identification and data capture techniques — EAN/UPC bar code symbology specification
-
International Organization for Standardization — November 2025
What we do about it: EAN-13, UPC-A and EAN-8, the striped ones a shop till reads.