Reproduce the behavior, not the confidential document
When reporting a problem across document tools, the fastest useful sample is often a new, deliberately small artifact. Copying a client's PDF and changing its filename does not remove private text, metadata or embedded material. Rendering a page to an image is not a privacy certificate either.
Choose one failure condition at a time
For a table issue, create two columns and one row containing 1.234,50 or a balanced code span such as `A|B`. Remove unrelated narrative and use invented country or item labels. Run the table exporter and attach both input text and actual output, not a screenshot of a terminal alone.
For cash reconciliation, start from the synthetic JSON and change only the closing value to "104". The expected result is a difference of 1 and a mismatch. Do not copy customer balances merely because the amounts seem anonymous: combinations of figures and dates can be identifying.
For rendering, use the bundled synthetic three-page PDF and a nonconsecutive selection. If the issue is missing page 3, preserve the page count and selection in the reproduction; there is no need to preserve the original client's page content.
Report the environment and observable result
python --version
# Then record the exact command, input fixture and output filename.
# PDF project only, using its virtual environment:
python -m pip show pypdfium2 PillowInclude the repository revision, platform, dependency versions, exit code, expected value and actual value. Keep API keys, tokens, customer paths and confidential filenames out of the report. If the supplied fixtures do not reproduce a source-specific defect, say so; do not claim the defect is solved.
This workflow minimizes what you share. It does not automatically anonymize a real document. All examples distributed by these projects are synthetic, and each tool has a separate, narrow scope.
← Field notes