Converting an EPUB to PDF on Linux is a five-minute job once you know the three routes: Calibre's command line, Calibre's GUI, or a browser tab. This guide covers all three, plus the permission and font errors that trip up most Linux users and how to fix them.
Why Bother Converting on Linux
EPUB is great for reading and terrible for printing or sharing with someone who doesn't care about reflow. PDF gives you a fixed page — fonts, layout, and page numbers locked in place. That's what you want for a manuscript submission, a printout, a legal document, or anything heading to a printer.
Linux doesn't ship a native EPUB-to-PDF button, but the tooling is free and mature. Pick the method that matches how many files you have.
Method 1: Calibre on the Command Line
If Calibre is installed, the conversion is a single command:
ebook-convert book.epub book.pdf
That handles a standard novel with no fuss. For more control, the flags matter:
--font-size 12— bump the base size if the output reads small--paper-size a4orletter— match your region--margin-top 36 --margin-bottom 36— measured in points, gives breathing room--pdf-page-numbers— print page numbers in the footer
Batch a folder with a one-liner loop:
for f in *.epub; do ebook-convert "$f" "${f%.epub}.pdf"; done
The CLI is the fastest path when you're already in a terminal and have dozens of files.
Method 2: Calibre's GUI
Not everyone lives in the shell. Open Calibre, then:
- Click Add books and pick your EPUB.
- Select the title, then Convert books.
- Set the output format dropdown (top-right) to PDF.
- Open the Page Setup and PDF Output panels to set paper size and margins.
- Click OK and wait for the job to finish, then Save to disk to pull the PDF out.
The GUI exposes the same options as the CLI, just with checkboxes instead of flags. Use it when you're converting one or two books and want to eyeball the settings.
Method 3: Convert in the Browser (No Install)
If you'd rather not install anything, BookConv's EPUB to PDF converter runs the same Calibre engine server-side. Drag the file up, hit convert, download the PDF.
Reach for this when the Linux machine is a locked-down work laptop, a borrowed box, or a server you don't administer. It's also the easy answer on a Raspberry Pi or a Chromebook where Calibre isn't worth installing. The trade-off is a file-size limit and a temporary download link, so grab the PDF as soon as it's ready.
Fixing the Errors Linux Actually Throws
Three problems account for almost every failed Linux conversion.
Permission denied — Calibre installed via snap or flatpak sometimes can't read files outside its sandbox. Run from a directory you own, or grant the flatpak access with flatpak override --user com.calibre_ebook.calibre --filesystem=home. A plain binary install avoids the sandbox entirely.
Missing fonts — if the PDF shows boxes or a default serif where your EPUB had something custom, the font isn't on the system. Install it (sudo apt install fonts-dejavu for a safe default set, or drop the .ttf into ~/.fonts and run fc-cache -f). Calibre only embeds fonts it can find.
Wrong output size — a PDF that comes out tiny or enormous is almost always a paper-size mismatch. Set --paper-size explicitly instead of trusting the default.
Which Method Should You Use
One file on a normal machine — the GUI. A folder of files or a script — the CLI. No install permission or a throwaway box — the browser converter. All three produce the same Calibre-based PDF, so the choice is purely about convenience.
Going the other way? PDF to EPUB is the move when you need editable, reflowable text instead of a fixed page. And if your EPUB started life as a Word document, EPUB to DOC gets it back into an editor.
Key Takeaways
- Three routes, one engine — the Calibre CLI, the Calibre GUI, and BookConv's browser converter all produce the same PDF.
- CLI for batches —
ebook-convert book.epub book.pdfplus a shell loop handles a whole folder. - Permission errors are a sandbox issue — snap/flatpak Calibre can't see your files until you grant filesystem access.
- Missing fonts mean missing glyphs — install the font or add it to
~/.fontsand runfc-cache -fbefore reconverting. - Set paper size explicitly — a wrong-sized PDF is almost always a default mismatch, fixed with
--paper-size.