To a printer, print-ready is not a feeling. It is a short list they check every file against, and a file that fails one item comes back to you, or gets printed with a white sliver along one edge. Here is the list:
| Check | What the printer wants | How to see it |
|---|---|---|
| Trim size | The page is exactly the finished size, plus bleed | pdfinfo -box |
| Bleed | Background art runs 3 mm (or 0.125 in) past the trim on every side | pdfinfo -box, then look at the edges |
| Safe margin | Text and logos at least 3 mm inside the trim | Look at the page |
| Colour | CMYK, or colour-managed for the printer's profile | pdfimages -list, the output intent |
| Resolution | Photos at about 300 PPI at the size they print | pdfimages -list |
| Fonts | Every font embedded, or turned into outlines | pdffonts |
| Standard | PDF/X-4 or PDF/X-1a, whichever they ask for | pdfinfo |
PDF/X is an ISO standard for exactly this job: a PDF whose fonts are embedded, whose page says where it will be trimmed, and which names the printing condition its colours were made for. It is a floor, not a guarantee. Bleed and resolution are not part of it.
Set the bleed in the document, then export with a PDF/X preset. The bleed has to be in the document before you export; the export only decides whether to include it.
- InDesign: set the bleed in File › Document Setup. Export with File › Export, format Adobe PDF (Print), preset PDF/X-4:2008. On Marks and Bleeds, tick Use Document Bleed Settings, and Crop Marks if the printer wants them.
- Illustrator: File › Save As, Adobe PDF, preset PDF/X-4:2008, then Marks and Bleeds › Use Document Bleed Settings.
- Affinity: File › Export, PDF, preset PDF/X-4 (or PDF/X-1a), and tick Include bleed.
- Scribus (free, every desktop system): turn on colour management, then File › Export › Save as PDF. Set Compatibility to PDF/X-4 on the General tab, and Use Document Bleeds on the Pre-Press tab. Its preflight verifier checks the document against the PDF/X rules before it exports.
Pick the output profile the printer names. If they don't name one, ask: it is the single most useful question you can send them.
Then check what came out. The rest of this guide is how, and it works the same on a PDF from any app, including one somebody sent you.
Check a PDF you already have
Five commands from Poppler and Ghostscript cover everything on the list except
the safe margin, which you check by eye. Install them with
brew install poppler ghostscript qpdf imagemagick on a Mac, or
apt install poppler-utils ghostscript qpdf imagemagick on Debian and Ubuntu.
On Windows, run them in WSL.
The examples use two files of the same A5 flyer. flyer.pdf was saved from an
app with no print settings. print.pdf is a PDF/X-4 export with 3 mm bleed.
Size and bleed
pdfinfo -box print.pdf | grep -E "Page size|Box"
Page size: 436.54 x 612.28 pts
MediaBox: 0.00 0.00 436.54 612.28
CropBox: 0.00 0.00 436.54 612.28
BleedBox: 0.00 0.00 436.53 612.28
TrimBox: 8.50 8.50 428.03 603.78
ArtBox: 0.00 0.00 436.54 612.28
The numbers are points: divide by 2.835 for millimetres. The TrimBox is where the guillotine cuts: 428.03 − 8.50 = 419.53 pt wide, which is 148 mm, the width of A5. The page itself is 8.50 pt (3 mm) bigger on every side, and that margin is the bleed.
flyer.pdf gives a different picture:
Page size: 419.53 x 595.28 pts
MediaBox: 0.00 0.00 419.53 595.28
CropBox: 0.00 0.00 419.53 595.28
BleedBox: 0.00 0.00 419.53 595.28
TrimBox: 0.00 0.00 419.53 595.28
ArtBox: 0.00 0.00 419.53 595.28
Every box is the page. That file has no TrimBox at all: when one is missing,
pdfinfo prints the page size in its place. Either way the answer is the same.
The page is exactly A5, so there is no bleed, and a background that touches
the edge will show a white line wherever the cut drifts.
How to add bleed and crop marks covers the
fixes.
A box in the right place does not prove the art fills it. Look at the edges of the page: the background has to run all the way out.
Fonts
pdffonts flyer.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
Helvetica-Bold Type 1 Standard no no yes 8 0
Helvetica Type 1 Standard no no yes 9 0
no under emb means the font is not in the file, so the printer's machine
uses whatever it has under that name. Every row has to say yes. In
print.pdf they do, and the six letters before the name (UVSAXG+Helvetica-Bold)
mean only the characters used were embedded, which is normal. A PDF with text
turned into outlines lists no fonts at all.
Images
pdfimages -list flyer.pdf
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 600 400 rgb 3 8 jpeg no 7 0 119 119 139K 20%
Two columns matter. x-ppi is the resolution at the size the image is
placed: 119 here, where print wants about 300. color says rgb. In
print.pdf the same photo is 1800 pixels wide and comes out at 357 PPI and
cmyk. If a photo is too small, no export setting fixes it; see
how to check an image is sharp enough to print.
An rgb image is not automatically wrong. PDF/X-4 allows colour-managed RGB and
converts it at the printer. PDF/X-1a does not allow it at all. If the printer
asks for CMYK, convert RGB to CMYK for print
before you send.
PDF/X, and which printing condition
pdfinfo print.pdf | grep "PDF subtype"
qpdf --json print.pdf | grep -o '"/OutputConditionIdentifier": "[^"]*"'
PDF subtype: PDF/X-4
"/OutputConditionIdentifier": "u:FOGRA39"
The first line is the claim. The second is the output intent, the printing
condition the colours were prepared for (FOGRA39 is coated paper on a European
offset press). A real PDF/X file has both; check the condition is the one the
printer asked for. flyer.pdf prints nothing for either, so it isn't PDF/X.
The qpdf line needs qpdf 11 or later.
Ink
gs -q -o - -sDEVICE=inkcov print.pdf
0.87878 0.98460 0.45626 0.36091 CMYK OK
One line per page: how much of the page each ink covers, cyan, magenta, yellow
and black, from 0 to 1. It is useful for one question: does a page that should
be black only, a text page in a book, use only black? Don't read more into it.
It is an average over the page, and it converts RGB as it goes, so the RGB
flyer.pdf also reports CMYK OK.
What a printer worries about is the total ink at the darkest point: cyan, magenta, yellow and black added together. Too much and the sheet doesn't dry. Render the page in CMYK and take the maximum:
gs -q -sDEVICE=tiff32nc -r150 -o page-%02d.tif print.pdf
magick page-01.tif -separate -evaluate-sequence mean -format "%[fx:round(maxima*400)]%%\n" info:
240%
That is the rich black band at the bottom of the flyer, 60/40/40/100. The
printer's spec sheet gives the limit, commonly around 300 % on coated paper.
flyer.pdf's plain RGB black, converted for FOGRA39, came out at 299 %, right
on that line. Run the second command once per page file.
This quick version is exact for CMYK, but it measures RGB through Ghostscript's own default profile rather than the printer's. For RGB content, a map of where the heavy areas are, and which ink causes them, see how to check total ink coverage.
Making PDF/X with Ghostscript
If your file is otherwise right (size, bleed, resolution) and only the PDF/X
part is missing, Ghostscript can write it. It needs two things: the ICC profile
for the printer's condition, and a short file that declares it. On Debian and
Ubuntu the FOGRA39 profile is in the colord-data package; on a Mac or Windows,
download ISO Coated v2 from the ECI (eci.org), which is the same condition. Use
the profile the printer names.
Save this as pdfx4.ps, next to the profile:
%!
[ /GTS_PDFXVersion (PDF/X-4) /Title (Summer Fair flyer) /Trapped /False /DOCINFO pdfmark
[ /_objdef {icc} /type /stream /OBJ pdfmark
[ {icc} << /N 4 >> /PUT pdfmark
[ {icc} (FOGRA39L_coated.icc) (r) file /PUT pdfmark
[ /_objdef {intent} /type /dict /OBJ pdfmark
[ {intent} << /Type /OutputIntent /S /GTS_PDFX
/OutputConditionIdentifier (FOGRA39)
/OutputCondition (Offset printing, coated paper)
/RegistryName (http://www.color.org)
/DestOutputProfile {icc} >> /PUT pdfmark
[ {Catalog} << /OutputIntents [ {intent} ] >> /PUT pdfmark
Then:
cp /usr/share/color/icc/colord/FOGRA39L_coated.icc .
gs -dPDFX=4 -dPDFSETTINGS=/prepress -sDEVICE=pdfwrite \
-sColorConversionStrategy=CMYK -sOutputICCProfile=FOGRA39L_coated.icc \
--permit-file-read=FOGRA39L_coated.icc -o print.pdf pdfx4.ps artwork.pdf
On Windows the command is gswin64c. That is how print.pdf above was made, by
Ghostscript 10.05.1: the photo converted to CMYK with the FOGRA39 profile, the
CMYK colours already in the file left exactly as they were, the fonts embedded,
the TrimBox and bleed kept, and the output intent written.
What it doesn't do matters as much:
- It doesn't check anything. The same command on
flyer.pdfproduced a file labelled PDF/X-4 with no bleed and the photo still at 119 PPI. It added a TrimBox the size of the page, because PDF/X requires one. - It embeds lookalikes for missing fonts.
flyer.pdf's Helvetica wasn't in the file, so Ghostscript embedded its own Nimbus Sans under that name. Close, but not the font you designed with. - Without the definition file it still says PDF/X.
-dPDFX=4alone wrotePDF/X-4into the file's metadata with no output intent at all, which is not a valid PDF/X file. The qpdf check above catches that. - Read the error, not the file. Ghostscript prefers its own
PDFX_def.ps(an example with a placeholder profile) over one of the same name in your folder, which is why the file above has a different name. A run that stopped on an error once left a blank A4 page labelled PDF/X-4 behind it.
It is an honest tool for a narrow job. It isn't a preflight.
PDF compressors, including Ghostscript's /ebook preset and our Compress PDF,
work by bringing photos down to screen resolution. That is the opposite of what
a printer needs. If a print file is too big to email, send it by a link.
No design software
If all you have is Word, a phone or a Chromebook, you can't set a bleed or export PDF/X. Your options are a design app (Scribus is free on Windows, macOS and Linux), asking the printer what they accept, or a design editor in the browser.
Two things to know before you start. Its output profiles are the US ones (GRACoL 2013, SWOP 2013, GRACoL 2006), so if your printer asks for FOGRA39 or another European condition, ask whether GRACoL is acceptable. And it turns text into outlines in the print PDF, so check spelling before you export. Then run the checks above on what it gives you, like any other file.
Spot colours, folds and finishes
A job with a Pantone colour, foil, white ink or a die line needs those as named spot colours, each on its own plate, named exactly as the printer asks. That is its own subject: how to match a Pantone colour in CMYK. Folded leaflets and books have their own page arrangements; the printer will send a template.
Before you send it
- Ask the printer for their spec: size, bleed, PDF/X version, output profile, total ink limit, and whether they want crop marks.
- Export from your design app with a PDF/X preset, the bleed included and their profile chosen.
- Run
pdfinfo -box: the TrimBox is the finished size, the page is bigger by the bleed. - Run
pdffonts: every row saysyes, or there are no fonts at all. - Run
pdfimages -list: photos at about 300 PPI. - Check the PDF/X line and the output intent match what they asked for.
- Look at every page at 300 dpi: art to the edge of the bleed, text inside the safe margin.
- Send the file under a name that says what it is and which version, and keep the original design file.
Most printers check the file again when it arrives and tell you if something is wrong before they print. A file that passes these checks means that email doesn't come.