Last updated: July 17, 2026
How JUST FREE PDF Documents and Tests PDF Export Risks
Product documentation should distinguish measured results from assumptions. This page records what we tested automatically on July 17, 2026, what remains a manual browser or viewer check, and how users can reproduce the same observations without exposing a private document.
Why the test set is synthetic
Real bank statements, contracts, school forms, and identity documents are poor public test assets because they can expose personal information. We generated small PDFs that isolate one behavior at a time: selectable text, an image-only scan, AcroForm fields, replacement width, a visual signature, metadata, a visual cover, and an applied redaction.
Published inputs and results
The PDFs are available under Samples. The automated result files are available as JSON and CSV. Each PDF result includes file size, SHA-256 hash, page count, extracted character count, form field count, field names, selected metadata, and whether the synthetic redaction target remained extractable.
Tools used for the recorded run
The July 17 run used Python 3.13.5, pypdf 5.9.0, PyMuPDF 1.26.7, and ReportLab 4.4.9. The tool versions are stored in the result file. Publishing versions matters because extraction and form behavior can change between libraries.
Automated checks
- Confirm every generated file opens as a PDF.
- Count pages.
- Extract visible text where available.
- List AcroForm field names.
- Inspect document metadata.
- Search for the synthetic redaction target.
- Record file hashes for reproducibility.
- Measure comparison strings using known font metrics.
What the automated checks found
The selectable-text sample produced 200 extracted characters. The image-only scan produced zero. The form exposed three fields. The black-box cover retained the synthetic account number in extracted text, while the applied-redaction file did not. The metadata-before file exposed title, author, subject, creator, and producer values; the cleaned file retained only a neutral title. The long comparison line was 178.2% wider than the short line.
What these checks do not prove
They do not prove that a specific production export looks correct in Acrobat Reader, Preview, Chrome, Firefox, a mobile viewer, or a government portal. They do not certify legal signature validity or redaction compliance. They do not test every malformed or hostile PDF. Those claims would require separate environments, controlled files, and documented acceptance criteria.
Manual export matrix
| Step | What to record | Failure signal |
|---|---|---|
| Open original | Page count, warnings, fields, signatures | Repair warning, missing page, unsupported form |
| Make one small edit | Target text and expected visual width | Unexpected font, overlap, hidden old text |
| Download export | Filename, size, MIME type | Empty file, HTML error saved as PDF |
| Open second viewer | Text, fields, page order, signature | Blank fields, shifted line, wrong rotation |
| Search and inspect | Old phrase, metadata, redaction target | Old or sensitive content remains |
Current upload and export safeguards
The project limits uploads to 50 MiB, checks the PDF extension and header, bounds multipart request size, returns PDF MIME types for document downloads, validates generated export headers, and keeps editor controls separate from advertising. These controls are useful but do not replace malware scanning, retention policy, certified signing, or legal redaction review.
How to report a reproducible problem
Create the smallest synthetic file that demonstrates the issue. Include the browser and viewer versions, exact steps, expected result, observed result, and whether the issue appears before or after export. Do not email a private original PDF. The Contact page explains how to submit a sanitized report.
When not to rely on this test library
Use the recipient’s official validation process for regulated filings, signed legal documents, medical or financial records, identity documents, and records subject to evidence-preservation rules. A public test library can explain technical behavior but cannot approve a document for a particular legal or organizational purpose.
Maintenance commitment
When the editor, export engine, sample files, or test tools change, the result file and changelog should be updated. Claims on guide pages should link to a result or clearly identify themselves as practical guidance rather than measured product behavior.
Release gate for documentation claims
A measured claim should not be copied into production documentation until the sample, script, and result file are stored together. If a result changes after a library or export-engine update, the guide should be corrected rather than preserving a convenient older number. This is especially important for form appearances, text extraction, and redaction behavior because different libraries may interpret the same PDF differently.
The release check should also confirm that every sample URL returns a PDF MIME type, every JSON or CSV result is downloadable, and none of the files contains personal data. A hash mismatch means the public download is not the file described by the result and should block publication.
A user-level reproduction record
For a manual issue, record the original file type, browser, operating system, second viewer, exact change, exported file size, and whether the problem survives reopening. Screenshots are helpful for layout problems, but a sanitized sample is better because it lets maintainers inspect text objects, fields, metadata, and fonts. Never submit a private source document when a small synthetic reproduction can show the same defect.