Batch conversion. Breaking: the visible input field is now files, an array. file is kept as a
hidden alias, so existing API callers and saved input configurations are unaffected, and a run given
one file behaves exactly as it did in 0.1.
- Converts up to 100 documents in one run. Each becomes its own PDF in the key-value store, and all
of them are packed into a single ZIP - which is the point, since this Actor's image is around
1.4 GB and its cold start costs more than converting an ordinary document does.
OUTPUT is the PDF for a single-file run, the ZIP for a batch, and a JSON manifest of the records
for a batch whose PDFs are too large to archive in memory.
- One dataset record per input file, with
ok and error, pushed as each file finishes.
- Per-file failure isolation: a password-protected, damaged or undownloadable document is recorded
against its own row and the batch carries on. The run fails only when nothing converted.
- Output keys are collision-de-duplicated, so a
notes.docx and a notes.xlsx in one batch become
notes.pdf and notes-2.pdf instead of one overwriting the other.
- Documents are converted strictly one at a time, sharing the prebuilt LibreOffice profile safely,
and each file's scratch directory is deleted as soon as its PDF is uploaded.
- Caps on the file count, the total input size, one file's size, the download time and the archive
size, each failing with a message naming the number that was exceeded.
src/zip.js is copied from the pdf-to-jpg Actor in this family. No new dependency.
Initial version.
- Converts Word, Excel and PowerPoint documents to PDF with LibreOffice in headless mode:
.docx, .doc, .odt, .rtf, .txt, .xlsx, .xls, .ods, .csv, .pptx, .ppt and .odp.
- Exports PDF 1.5, 1.6, 1.7 or the archival PDF/A-1b, PDF/A-2b and PDF/A-3b profiles, with control
over bookmark export, image quality and image downsampling.
- Accepts the source file as a URL (including the Apify Console file upload field) or as base64.
- Reads the OOXML content types part, the OpenDocument
mimetype entry and OLE2 stream names to
decide which LibreOffice module has to open the document, rather than trusting the file extension.
- Detects password-protected documents and fails with an explanation instead of hanging on a prompt
nobody can answer.
- Checks that a non-empty PDF was actually written, because LibreOffice exits 0 when it converts
nothing.
- Ships a LibreOffice user profile built into the image, so runs do not pay for creating one.
- Writes the result to the key-value store under both
OUTPUT and its filename, and pushes one
dataset record per conversion.