# Changelog of EPUB to PDF Converter - Ebook to PDF Online (`marcel-rbro/epub-to-pdf`) Actor

- **URL**: https://apify.com/marcel-rbro/epub-to-pdf/changelog.md
- **Full Actor documentation**: https://apify.com/marcel-rbro/epub-to-pdf.md

## Changelog

### 0.1 - unreleased

Initial version.

- Converts EPUB, AZW3, MOBI, FB2, CBZ, LIT and PalmDOC ebooks to PDF with calibre's `ebook-convert`.
- Surfaces the PDF options that decide how the page reads: page size, base font size, all four
  margins, serif/sans/monospace body font and family, page numbers, and header and footer templates.
- Batch by default. Upload a list of ebooks and each one is converted on its own; results come back
  as a ZIP, or as a JSON manifest of keys and URLs when the bundle would be too large to hold in
  memory for the upload.
- Per-file failure isolation: a DRM-protected or unreadable book is recorded with a reason and the
  rest of the batch carries on. The run fails only when nothing converted at all. The end-of-run log
  reports how many converted, how many failed, and how many failed specifically on DRM.
- Inspects the source before calibre sees it. For EPUB that means reading the OCF container - the zip
  central directory, the stored `mimetype` entry, `META-INF/container.xml` and the package document -
  to identify the file, report its EPUB version, and tell Adobe ADEPT, Apple FairPlay and encrypted
  content apart from IDPF font obfuscation, which is not DRM. For Kindle formats it reads the
  encryption flag in the PalmDB header.
- Names the two failures people actually hit: a PDF passed in by mistake, and a truncated download,
  which is a valid-looking zip with no readable central directory.
- Caps a run by file count, per-file size, total input size and a whole-run conversion time budget,
  so a batch of omnibus collections is refused or curtailed with a reason rather than timing out.
- Writes each PDF to the key-value store under its own filename, de-duplicating collisions, and sets
  `OUTPUT` to the PDF for a single conversion or the ZIP for a batch. Pushes one dataset record per
  input ebook as it is produced.
