Fixture and method
The input was a 3,028-byte, two-page, unencrypted PDF 1.3 document with SHA-256 8decc8571946d4cd70a024949e033a2a2a54377fe9f1c1b944c20f9ee11a9e51. Commands ran through the same 29,150,896-byte packaged sidecar included with the desktop build, not through a remote conversion API.
| Workflow | Result | Evidence |
|---|---|---|
| Read file information | Pass | 2 pages; 3,028 bytes |
| Merge two copies | Pass | 4-page PDF |
| Extract page 1 | Pass | 1-page PDF |
| Delete page 2 | Pass | 1-page PDF |
| Rotate page 1 | Pass | 90° rotation retained |
| Compress PDF | Pass | 3,028 to 2,722 bytes |
| PDF to images | Pass | 2 PNG files and 1 JPG file |
| Images to PDF | Pass | 2-page PDF |
| Table export boundary | Pass | Correctly reported no tables in this fixture |
Performance finding and fix
The original one-file engine took 17–25 seconds to cold-start for every action. PDFlet now prewarms one engine process and reuses it. In the packaged protocol test, the first launch took 18.540 seconds while subsequent CSV and XLSX conversions each completed in 0.011 seconds.
Limits of this verification
The fixture contains text but no table, so it is intentionally expected to return “No tables found.” CSV and XLSX success paths were separately checked with a one-page table fixture and each exported four rows. Scanned-document OCR remains outside the base release.