# Scanned PDF filling study — 29 September 2026 Publisher: Rust Solutions Ltd, owner of No Fuss PDF. First-party research, not an independent audit. No paid placements or affiliate links. Report: https://nofusspdf.com/research/scanned-pdf-fillers ## Reproduce Requires Node.js, Playwright Chromium, pdf-lib and Poppler (pdfinfo, pdftotext, pdftoppm). In a fresh directory, initialise an npm project, install `@playwright/test` and `pdf-lib`, and run `npx playwright install chromium`. Download the two `.mjs` scripts and the exact fixtures (`flat-form.pdf`, `image-only-form.pdf`, `fixtures.json`) beside them. ``` PDF_STUDY_DIR=. PDF_STUDY_EVIDENCE=./outputs node benchmark-pdf-fillers.mjs ``` The harness defaults to all six providers and both documents. Limit a diagnostic run with `PDF_STUDY_PROVIDERS=nofuss,simplepdf` and `PDF_STUDY_FIXTURES=flat,scan`. `PDF_STUDY_SCOUT=1` opens the forms without exporting. Respect each provider's terms and limits; do not repeatedly run against a metered service. Sejda advertises three free tasks per hour. Use the supplied fixture hashes for exact reproduction. The generator recreates the design but PDF serialization can vary by dependency version; do not silently replace the dated input files. Original dependencies: pdf-lib 1.17.1; Playwright version and browser engine are recorded in results.json and the project lockfile. The original report used only Chromium, not Safari or Firefox. Independently check each downloaded PDF: ``` pdfinfo outputs/nofuss-scan.pdf pdftotext outputs/nofuss-scan.pdf - pdftoppm -singlefile -scale-to 1200 -png outputs/nofuss-scan.pdf rendered ``` Text extraction must contain `Alex Example`. Visually inspect rendered.png for the answer, original page artwork and any added watermark. Verify geometry is one 600×480-point page with zero rotation. Automated `completed` is not a substitute for a human/visual review; the published rows include that separate review. ## Deviations and incomplete runs The original protocol was recorded in private repository commit f18e843 before comparative exports. This is a chronology record, not independent preregistration. Exploratory browser runs preceded completed exports to inspect controls. UI adapters required retries: Sejda's Text tool was already active, and clicking it toggled it off; PDF24's text object needed dragging/editing and its download appeared in a job-monitor iframe. Optional-cookie interfaces also needed provider-specific handling. The desktop viewport, answer, fixture content and parser checks were unchanged. No speed result was collected. Sejda reached its processed-result iframe on both fixtures, but the historical download adapter targeted the parent page. Three Apply changes operations occurred (two planned documents plus one scan retry); no output was captured, and testing stopped without bypassing its three-per-hour allowance. The downloadable harness now targets the observed result iframe, but that correction was not claimed as a completed retest. PDFescape initially returned a session-timeout screen. Normal Use Free navigation opened the unregistered editor. We selected the flat fixture, but the bounded exploratory run stopped during opening; we did not complete filling/export or attempt the scan. This is not evidence that PDFescape cannot fill either type of PDF. Smallpdf served more than one toolbar variant. A scan export completed; an initial flat-form text-tool interaction timed out because its alternate toolbar used an unlabelled T icon. After adapting to that observed icon, the flat export also completed and was independently checked. Both successful rows are recorded in results.json. Do not treat an automation timeout as an unsupported feature, a paywall or a provider defect. PDFescape's full text/export adapter remains unimplemented; the harness currently covers its opening stage only. Completed exports—not previews—are published. This is a tiny compatibility sample, not a universal ranking. Different default fonts/sizes were retained; PDF byte counts are descriptive, not a speed or quality score. No account or payment was requested for the verified exports; this does not establish unlimited use. ## Network limitations Only sanitised request-host lists and positive marker observations are published. No full URLs, task tokens, cookies, HAR, request bodies, filename telemetry or customer files are included. Playwright request-body APIs may omit multipart file bytes. Marker checks do not cover all encodings, transformed images, WebSockets, cached/service-worker paths or later sessions. Zero detections must not be presented as proof of no upload. Network observations were not used to rank privacy or claim security. ## Reuse The original synthetic fixtures and artwork are CC0. The two standalone research scripts are MIT-licensed; see LICENSE.txt. The No Fuss PDF application repository remains private and is not covered by those grants. Exported PDFs are the factual outputs of this test; third-party fonts/software remain subject to their respective licences. Cite the dated report when describing its findings and identify your own later tests separately.