Sandbox reading
The document's JavaScript, open actions (OpenAction), external commands (Launch) and links are not executed, and the window has no network access: active code is extracted and shown, not run.
A PDF that lands in your inbox, that you download or that a client hands you is not a sheet of paper: it is a format with a programming language inside. Opening it with Acrobat or Preview means running it — its JavaScript fires, open actions are followed, and the document can reach the outside and tell whoever crafted it that it was opened, when and from which IP address. Probatio's PDF module instead opens it in its own window and in a multi-layer sandbox: the document is interpreted, not executed; the window has no network; the raw bytes are parsed in a subprocess isolated from the rest of the system, with a time limit and — on macOS — also memory and CPU limits and an operating-system profile denying it network and any write outside its work folder. It is a safe reader for anyone who has to open a suspicious attachment — analyst, professional, cautious user — and at the same time a forensic workbench to examine it (provenance, active code, hidden text, signature) and work on it (pages, redaction, annotations, stamp) without ever touching the original.
A PDF is not a sheet of paper: it is a format with a programming language inside. Opening a document you don't trust is, quite literally, running code from a potentially hostile source. Probatio does not just «turn JavaScript off»: it separates what the document asks to do from what the system lets it do, at three independent levels — if the first falls, the other two remain.
eval disabled, scripting off, no active annotation layer: JavaScript, /OpenAction, /Launch and links do not fire. Active code is extracted and shown.
probatio-pdf-helper) with a timeout and, on macOS, with a memory and CPU cap. A malformed PDF brings down the helper, not Probatio, and does not take the working session with it.
sandbox-exec profile that denies network, denies writes outside the work folder and denies spawning other processes. Tested: an attempted write to /etc is refused by the kernel, not by an in-app check.
How far it goes, and where it stops. Full OS-enforced confinement is active on macOS (a sandbox-exec profile): no network, no writes outside the work folder, no child process, memory and CPU limits. On Windows it is partial: the helper runs in an operating-system Job object, with limited memory and CPU and unable to start other processes, but network and disk writes are not denied yet. And no sandbox makes a file harmless: basic sanitizing removes JavaScript, automatic actions and attachments, but an exploit nested in a malformed stream or in a font would survive. To go after that very vector Probatio offers a deep clean: it rebuilds the document, discards embedded font programs (remapping fonts to a standard one) and neutralizes dangerous-codec images — JBIG2 and JPX, the class of the FORCEDENTRY attack. Both sanitizing and deep cleaning are always your choice, declared, at save time — and when the PDF is evidence to be filed, keep in mind that cleaning it alters it: the cleaned copy is no longer the original.
The document's JavaScript, open actions (OpenAction), external commands (Launch) and links are not executed, and the window has no network access: active code is extracted and shown, not run.
The PDF bytes are read in a separate subprocess, with a timeout, a memory cap (1.5 GiB) and a CPU cap (30 s for each processor it may use, up to 16): a malformed or malicious file can bring down the helper, not the app. On macOS an operating-system profile denies it network, writes outside its work folder and spawning other processes; on Windows it runs in a Job object that limits memory and CPU and stops it from starting other processes.
The program that generated the PDF, creation and modification dates, source file (xmpMM:DerivedFrom), inferred operating system from the producer string — labelled as an inference, because no PDF records its own OS — and the full XMP packet.
Every object in the document is walked looking for action dictionaries: JavaScript, Launch, URI, SubmitForm. The code is read in full in the Inspection column. Looking only in the «well-known places» would always miss one.
White-on-white text, in invisible render mode or in a microscopic size: invisible on the page, but read by whoever extracts the text — automated review, indexing and AI models. Probatio lists it page by page and takes you to it with a click.
Zoom, in-text search with match highlighting, page thumbnails, single- or two-page view and a split view (vertical or horizontal) to compare two distant pages of the same document.
Delete, rotate, reorder and insert pages from another PDF, by dragging it to the chosen spot among the thumbnails: imported pages arrive complete, with the attributes inherited from the source document. You always work on a session copy, with undo and redo on full document snapshots.
Redaction removes the glyphs from the file, it does not put a black rectangle over them: the redacted text is no longer extractable by copy-and-paste nor by pdftotext. Images and annotations inside the area go too; the document is re-serialised, so the previous revision does not survive inside the file.
Highlights in five colours, notes (sticky) and arrows. They are real PDF annotations, each with its own appearance stream: Acrobat reads them, Preview reads them, and they can be removed without touching the content.
Apply an image (e.g. a signature PNG with transparency) and resize it with locked proportions. Embedded images sit in a library with thumbnails and a lightbox, zoomable 1:1 at their true resolution: JPEGs are saved bit-identical to the embedded stream, so the extracted image's hash matches.
A badge flags whether the PDF is signed; on the first edit it warns that the signature will be invalidated. The detail (validity, integrity, signer, eIDAS/QSCD, chain, timestamps, OCSP) is checked on the original file, not on the work copy: verifying the copy would tell a lie about the document you received.
On opening, a YARA scan warns about code known to be suspicious — and if the rules cannot be downloaded it says so: «I could not look» is not «clean». When saving a document with active code, you choose between a sanitized copy and the original file as it is.
Pages are drawn by the same sandboxed engine as the view and handed to the system print dialog: the PDF is never passed to another program, so printing a suspicious document does not mean opening it in Acrobat or Preview. You print what you see, edits and redactions included.
PDF text can be selected and copied as in a normal reader, without the document running anything.
A PDF saved several times keeps its earlier versions: Probatio lists them with date, program and the signatures covering each, opens them as separate files and compares them with the current one, page by page, with a map of the differences. It is the way to see what changed after a signature.
Layers on and off (including those hidden on opening), attached files with their hash, form fields exportable to CSV and JSON, outline and links (never opened), embedded fonts and images with the EXIF metadata left in JPEGs.
Pages scroll one below the other, and the most visible page is the one the tools work on; “Page by page” stays in the Layout menu. Thumbnails and the Inspection column can be closed and the choice is remembered; the toolbar sits on two fixed rows, the document above and the tools below.
PDFs from Crystal Reports and similar tools, with internal tables written off-standard, now open: Probatio corrects the reading in memory, without touching the file.