# Changelog of PDF to JPG Converter - PDF Pages to Images (`marcel-rbro/pdf-to-jpg`) Actor

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

## Changelog

### 0.1 - unreleased

Initial version.

- Renders PDF pages to JPEG, PNG, WebP or TIFF with ImageMagick and Ghostscript, at 36 to 600 DPI.
- Converts one PDF or up to 100 in a single run. A batch returns one ZIP with a folder per source
  document, named after the file, de-duplicated so two `report.pdf` uploads cannot overwrite each
  other.
- Accepts the source files as URLs (including the Apify Console multi-file upload field), or a single
  file as base64. The old single-file `file` field is kept as a hidden alias so saved inputs and
  existing API callers keep working.
- Converts every page, a single page, a range, an open range or a comma-separated list, named by the
  real page number so `3-5` yields `page-3`, `page-4` and `page-5`.
- Puts the whole result at `OUTPUT`, so one `run-sync` call returns it: the image for a single page
  of a single document, otherwise the ZIP.
- Isolates per-file failures. A corrupt, encrypted or unreachable PDF gets `ok: false` and a reason
  on its own dataset record and the rest of the batch converts; the run fails only if every file did.
  Records are pushed as each document finishes, so a run that stops part way through keeps its
  results.
- Caps the ZIP at 200 MB, since it has to be assembled in memory to be uploaded, and writes a JSON
  manifest of every page's key and URL in its place past that. Pages are stored under their own keys
  either way.
- Gives downloads a timeout and a per-file size ceiling, which matter in a batch where one
  unresponsive host would otherwise stall every file behind it.
- Reads the `%PDF-` header before handing anything to Ghostscript, and names what was uploaded
  instead when it is a DOCX, an EPS, an image or an HTML error page.
- Detects encrypted PDFs from the trailer and fails that file with an explanation rather than a
  Ghostscript error.
- Caps files, input bytes, pages and pixels **across the whole run** rather than per document, so a
  batch of small files cannot bypass the ceiling one large file would hit. Failures name the limit
  that was exceeded and what to change.
- Re-enables only PDF *reading* in ImageMagick's Debian security policy, leaving PostScript, EPS and
  XPS blocked, and asserts all of that at build time along with a real PDF conversion.
- Pushes one dataset record per input PDF with per-page dimensions, sizes, ZIP paths and download
  URLs.
