The report looked finished

The task was to take a price-analysis report from the screen into a PDF. Each row needed to show the item being compared, its value, and the source that let someone check that figure. The file opened, the tables lined up, and the numbers appeared in the right places. For many readers, that would be enough to call the report done. During review, though, some cells ended before the full source name and item description did.

Those fields were not decoration. They were the way back to the original record and the reason a number belonged in the analysis. Cut two different descriptions at the same point and they may even look identical in the PDF. The document remains readable while its claims become harder to check.

The first version fit the page by cutting text. The saved space cost evidence.

It fit, but it could not be checked

A technical choice sat behind that file. Instead of converting the HTML page with a full browser, the PDF was drawn directly from the report model. That avoided shipping a heavy browser with the service, but made the code responsible for text width, wrapping, and page breaks.

A seven-column table already called for landscape pages. Even there, assigning a width to each column was not enough. Long names had to remain intact, unbroken strings needed splitting, and a header could not be left alone at the bottom of a page.

There was a problem even before layout: the PDF's standard font could not encode every symbol in the report. One typographic character could stop generation altogether. Handling those characters had to be explicit, or a detail of the writing could break the file.

A source also had to lead somewhere

On screen, the source column led back to the record behind each figure. In the first reading of the PDF, that column could seem present because it displayed an address as text. But a printed address and a clickable link do different jobs for someone checking dozens of rows.

Review kept the full names and made the source clickable when a valid web address was available. The same care reached the supplementary references. If two formats of the same report expose different evidence, choosing a format changes what a reader can verify.

That was when the PDF stopped being a visual copy of a page. It had to carry the analysis trail.

What the checks established

Verification measured drawn text against the right margin instead of relying only on a quick look at the file. In a report with 693 records and names up to 125 characters long, there were no truncated cells, off-page lines, or orphaned headers. Source links were checked in the generated PDF as well.

That does not guarantee perfect layout for every future report. It establishes something more useful: the properties needed to inspect this analysis became concrete checks. A PDF can have every page and still lose the route back to its data.