RIDING BYTES
← All insights

August 19, 2026 · 5 min read

Reports after Dexterity: upload your lab logo, print on any paper

Two report ergonomics changes shipped with the Dexterity migration in senaite.impress. You upload your lab logo through the browser now, and you configure custom paper sizes without a developer.

Reports after Dexterity: upload your lab logo, print on any paper

Reports are what your customers see. senaite.impress — the piece that turns verified analyses into a signed PDF — got two changes this half that most labs will notice on day one, plus a slate of quieter fixes. This post is about what changes for a lab. The implementation notes are at the end for whoever wants them.

You upload your logo now

Before this release, replacing the SENAITE mark on your report header meant either forking senaite.impress or writing a ZCML override. Fine for a developer, absurd for a working lab.

The impress control panel now has a Report logo field. Upload a PNG or SVG through the browser. It shows up in the default report header at the next render. If you use custom report templates, swap your hardcoded <img src=…> for the new helper (one line) and the templates pick up the same field. Labs that never touched their logo see the stock SENAITE mark exactly as before.

SENAITE IMPRESS Settings, Report Settings tab. The Report Logo section shows the description 'Custom logo to display in report headers. If not set, the default SENAITE logo is used.' with an uploaded file, senaite_pr...go_grey.png, next to the file picker.
Report Settings in the impress control panel. Upload a PNG or SVG, hit Save, done.

Any paper size, per template

Default paper sizes — A4, Letter, Legal, and their variants — cover most reports. They do not cover a three-inch thermal analysis sticker, an oversized certificate on a bespoke sheet, or an A5 landscape half-page for chain of custody.

You now add named custom paperformats in the control panel: width, height, margins. Any report template can then be assigned to any paperformat, custom or default, in the same UI. The PDF renderer picks the size up at generation. Switching a template from A4 to a 4×6 label is a dropdown change.

The Custom Paper Formats grid in the impress control panel, filled with one entry: A5, 148 mm wide, 210 mm tall. Below, a Template Format Mapping section binds two report templates to standard DIN A4 and DIN A3 formats.
Custom paper formats and per-template mapping, both configured in the same panel.

The result on a real report: your logo in the header, your accreditation badge to the right, on whichever paper you picked for that template.

A rendered Analysis Report PDF preview for a client called Happy Hills, with the RIDING BYTES lab logo top right and an ISO 17025 Accreditation badge underneath. The sample H2O-0001 is marked Provisional report and shows a Summary section.
Rendered report using the uploaded logo, an accreditation badge, and DIN A4 paper — configured entirely from the control panel.

Report generation is more resilient

Two smaller changes matter when you run big report batches:

  • Batch reports checkpoint per report instead of holding one transaction across the whole batch. A crash mid-batch now loses one report, not the whole run.
  • Reports find recently-uploaded attachments even when the catalog has not caught up. Upload an attachment and generate the report immediately — the attachment appears.

Plus a fix for a rendering error on batch labels that would have paged an operator on a busy Monday.

What upgrading looks like

If you never customised your report, upgrade and everything looks the same. If your logo lived in a fork, you can throw the fork away after uploading the PNG in the control panel. If your reports use non-standard paper, you no longer maintain a paperformat plugin, you configure it.

Under the hood

For the technically curious: this half’s PRs finished migrating the ARReport Archetypes content type to a Dexterity ResultsReport (#161), added the logo upload field and a @@report-logo view (#163), added named paperformats (#164), and repaired accreditation-body logo rendering that broke on the earlier senaite.core Dexterity migration (#166, #167). Attachment lookup got a fix in #165 and batch labels in #162. The get_report_logo_url() helper is declared on IReportView and IMultiReportView, so add-on report templates inherit it.

Two people reviewing notes on paper next to a laptop

Bring this to your lab

Whether you are evaluating SENAITE, scaling it across sites, or wiring up instruments and monitoring, the team that wrote the platform is the team you talk to.