You can now export a print-ready PDF of any analysis report. A dedicated print page renders the full report — graph, coverage matrix, writing agenda, and page architecture — at high fidelity using the browser's native print-to-PDF dialog.
Users needed a way to share or archive a completed analysis outside the app. The interactive report page could not be printed cleanly: the dark D3 graph, colored badges, and multi-column layout required browser-specific print tweaks that produced inconsistent results across environments.
ContentGrapher produces analysis artifacts that users share with stakeholders (writers, editors, SEO leads) who do not have app access. A stable, high-fidelity PDF closes this distribution gap without requiring an external rendering service or additional infrastructure.
The report page reached feature completeness with the Writing Agenda consolidation. A dedicated print route is the natural next step before the V1 chargeable launch: it converts the report from a screen-only artifact into a portable deliverable that increases perceived value for new users evaluating the product.
- Added a `/report/[id]/print` client route that renders a single-column, print-optimized view of the full analysis. - The print page includes: document header with topic, date, and PRR chip; readiness banner; dark D3 graph (palette A, static layout); concept integration table with boundary and integration badges; coverage matrix; writing agenda (PriorityMap + WritingGuidancePanel); and page architecture panel when present. - A floating "Print as PDF" bar is visible on screen and hidden in print. The button is disabled until the graph simulation settles or the 4-second fallback fires. - Added `onStabilized` and `staticLayout` props to `GraphCanvas`. When `staticLayout` is true the simulation is stopped immediately after setup, producing a settled layout without animation. `onStabilized` fires once on simulation end. - Added an "Export PDF" link to the report page header (desktop nav and mobile drawer), opening the print route in a new tab. - Print CSS enforces: A4 portrait, 18 mm/20 mm margins, `print-color-adjust: exact` on all elements, `page-break-inside: avoid` on graph and report cards, and a footer line showing topic and date.
1. Open any completed analysis report at `/report/[id]`. 2. Confirm an "Export PDF" link appears in the header on desktop and in the mobile drawer. 3. Click "Export PDF". A new tab opens at `/report/[id]/print`. 4. Confirm the print page loads the full report: graph renders in dark palette, integration and boundary badges show correct colors, coverage matrix grid is present, writing guidance is visible. 5. Wait for "Ready to export" to appear in the floating bar (or up to 4 seconds). 6. Click "Print as PDF" and confirm the browser print dialog opens with the report rendered correctly. 7. In the print preview confirm: the floating bar is absent, the print footer is visible, the graph background is dark (#0a0a0a), and badge colors are preserved.