Make the first report small enough to inspect
Use a fictional record with a visible identifier and two unmistakably different rows. Keep real clients, recipient details and confidential notes outside the exercise. The result you want is not an attractive sample; it is a file whose every visible value can be traced to its source.
{
"report_id": "0042",
"period_label": "September 2026",
"approved_note": "Scope confirmed by the report owner.",
"items": [
{
"item_id": "A01",
"label": "Layout review",
"status": "Complete"
},
{
"item_id": "B02",
"label": "Proof revision",
"status": "Pending"
}
]
}Sketch a reference and period at the top, a short note, then a three-column work-item table. Leave branding, charts and automatic distribution out of this first pass. Each extra element makes it harder to identify which mapping or layout change caused an error.
Create the template, then bind one value
The documented CraftMyPDF route starts at Manage Templates: create a template from a sample, open its editor and prepare the Data tab. Work in Designer, then inspect an actual PDF from Preview. See the official workflow; this walkthrough adds an original check sequence, not a hands-on product result.
- Use the fictional input above and identify the reference field.
- Bind the report reference and confirm it reads 0042, including both zeros.
- Change only that input to 0043. Confirm that the reference changes and unrelated text does not.
- Restore 0042. Bind the period and note separately.
- Keep the checkpoint before introducing repeated rows.
If the first value fails, stop there and inspect the path. Decorating the page or adding a connector will not fix a wrong binding. The field contract distinguishes the input type and its intended meaning.
Add the two-row table and an empty state
| Element | Expected | Hold if |
|---|---|---|
| Reference | 0042 | 42, missing text or another report ID |
| Period | September 2026 | Old sample period remains |
| First task | A01 / Layout review / Complete | Wrong pairing or duplicate row |
| Second task | B02 / Proof revision / Pending | Missing or truncated content |
| Optional note | Approved fictional sentence | Note heading has no intended content |
Follow the table-binding guide for the cell configuration. After the normal file, set items to an empty array and use the approved no-items outcome from the missing-state rules. An omitted array is a different, invalid case; do not silently treat it as empty.
Inspect the difficult pages before adding a connection
Use a longer note and enough distinctive rows to create a page transition in your template. Inspect the boundary, the final row and the end of the note. Save the original failure if anything clips; do not delete content to make the fixture look successful.
Keep source validation and PDF review as separate results. The tool producing a downloadable file does not establish correct content. Accept only the named cases you inspected, and leave unrelated language, volume and accessibility requirements explicitly untested.
Finish with a reproducible handoff
Retain the template version, input contract, synthetic fixtures and observed outcomes. Name the person responsible for template changes and the person who approves reports; they may be the same person, but the decisions differ. Keep an existing acceptable workflow available while evaluating a replacement.
Connect a source only after the complete path has a defined hold state and an authorized data boundary. Continue with integration ownership. Automatic client delivery is a separate design decision, not the final checkbox in a layout tutorial.
Sources and evidence limits
Documentation checked 2 October 2026. Worked examples are fictional; these are not hands-on merchant test results.
- The design workflow — checked 2026-10-02
- Data-binding for Normal Sections — checked 2026-10-02
- Simple Table Component — checked 2026-10-02