Colour and ink / What the output device does to it
Designing a document that survives being photocopied and faxed
What a document has to be like to still work after it has been through a copier, a scanner or a fax, which is where most operational documents end up.
What actually happens
A copier does not reproduce a document, it re-photographs it, and each pass compresses the tonal range: light tones lighten toward paper, dark tones darken toward solid, and everything in the middle loses separation. Fine detail thickens or drops out. A second-generation copy of a copy loses the same amount again. So the design that survives is the one built with a lot of headroom: high contrast between text and background, no meaning carried by fine tonal differences, and nothing important that depends on a background printing at all. This is not a niche requirement. A delivery note, a permit, a method statement and an invoice are all routinely read from a copy rather than from the original.
Where this API stands on colour
This API renders HTML to PDF, and the colour in the output is the colour in your CSS, which is RGB. There is no colour-space option, no CMYK mode, no ICC embedding, no ink-limit control and no greyscale conversion. Two options touch colour at all and neither changes a colour value: print_background, which is on by default here and off by default in most renderers, decides whether backgrounds and background images are painted at all, and media decides whether your print stylesheet applies. Anything that converts this document into inks happens after the render, in a tool you choose, and that is where the decisions on this page are enforced.
The decisions that avoid it
Reasons rather than a description of the code. Each of these is a choice with a wrong answer, and the wrong answer usually looks correct on a screen.
- Set text in a strong dark on white with nothing between. A dark grey on a light tint is two steps of contrast loss away from illegible.
- Keep the smallest type larger than you would for a document read from the original, because the copy will thicken and fill the counters.
- Do not carry meaning in tint levels. Levels that are distinguishable on the original converge on a copy.
- Avoid reversed type entirely on anything that will be copied. It fills in first and fastest.
- Keep rules at half a point or heavier and in a definite grey rather than a light one, so they survive rather than dropping out.
- Test on a second-generation copy, not a first. Most documents are read from a copy of a copy and that is where the design actually has to work.
In the stylesheet
Where the decision is expressible in CSS, this is what it looks like. Where it is not, the snippet says so rather than inventing a property.
/* A copy-safe treatment: strong contrast, no meaning in tone, no
dependence on a background printing. */
.copy-safe {
color: #000000;
background: #ffffff;
font-size: 10pt; /* a size up from screen-comfortable */
line-height: 1.45;
}
/* Structure by rule and weight, not by tint. */
.copy-safe .section-head {
font-weight: 700;
border-bottom: 0.75pt solid #000;
padding-bottom: 2pt;
}
/* Status carried by a word and a border, not by a fill. */
.copy-safe .flag {
border: 1pt solid #000;
padding: 1pt 4pt;
font-weight: 700;
text-transform: uppercase;
font-size: 8pt;
}
/* Not this: the tint goes to paper white and the light text with it.
.flag { background: #eee; color: #888; border: 0; } */What people do instead
Testing on the original. Everything works on the original, which is the one copy nobody in the field is holding. The design decisions that matter here only reveal themselves on a second-generation copy, and that test takes two minutes.
How to find out rather than assume
Print the page, copy it, then copy the copy, and read the result at arm's length. Every piece of information that is still there survives. Anything that has faded, filled in or merged was carried by something the copier does not preserve.
Frequently asked
Can I ask the API for CMYK output?
No. There is no colour-space option on the render, and the document comes out in RGB. Converting to CMYK is a downstream step: a preflight tool or a converter rewrites the colour against a profile you choose, and that is also where an output intent and an ink-coverage check belong. Convert after rendering rather than trying to reach the conversion from a stylesheet.
Will my backgrounds and tints print?
From this API they are painted into the document by default, because print_background defaults to true here rather than to false. What happens afterwards is the reader's print settings, and a viewer told not to print backgrounds will still drop them. That is why every page in this cluster treats a background as an enhancement rather than as the thing carrying the meaning.
Does any of this apply to a document that is only ever read on screen?
Very little of it. Dot gain, ink coverage, registration and paper are properties of a physical process. If the document is genuinely never printed, photocopied or faxed, most of this cluster is not your problem. The reason it is worth reading anyway is that people are consistently wrong about which of their documents get printed.
Related colour and ink topics
The topics that cause each other, then the rest of the same group.
Greyscale conversion, and the two colours that become one grey
What happens when a colour document is printed on a monochrome device, which is most of the time for most documents.
Thin rules that vanish or thicken between screen and paper
Rules and borders specified below the width the output device can actually draw, which come out either heavier than asked or not at all.
White type on a coloured panel that stays readable on paper
Text knocked out of a solid colour so the paper shows through it, which is the most fragile way to set type in print and the most common on screen.
The same PDF on an office laser and on a commercial press
Two output devices with different resolutions, different colour behaviour and different physical limits, producing two different objects from one file.
How the paper changes the colour that was in the file
The stock the document is printed on, which is the white in every light area and therefore part of every colour on the page.
print-color-adjust in paged output
The property involved here, with its real support status.
Every colour and ink topic
The full list, grouped by whether it happens in the ink, in a conversion, or at the device.
Everything on this page is decided in your stylesheet or at the printer. Render the document, then put it on the paper it will actually be printed on.