Files
EvandroandClaude Opus 5.5 f2db2d69da refactor(skills): cut the workflows to ~100 lines and scale phases by tier
Each workflow was ~300 lines of grep-count "VERIFICAR" steps and ran every
phase for every request. Phases now state their minimum tier, checks are the
quality gate plus real tools, detail moved to references/, and machine-specific
paths and non-public skills are gone. Security references move to OWASP Top
10:2025, ASVS 5.0 and the OWASP LLM Top 10.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 21:52:06 -03:00

1.5 KiB

PDF e documento visual: HTML + CSS + Playwright

Todo PDF passa por aqui: design primeiro, depois render, depois inspeção visual das páginas.

Por que não reportlab direto

platypus com tabela longa estoura margem e corta linhas entre páginas. HTML + CSS de impressão resolve quebra de página, cabeçalho repetido e margens com regras declarativas.

1. HTML com CSS de impressão

@page { size: A4; margin: 18mm 16mm; }
table { width: 100%; border-collapse: collapse; }
thead { display: table-header-group; }   /* repete o cabeçalho em cada página */
tr, img, figure { break-inside: avoid; }
h1, h2 { break-after: avoid; }
td { overflow-wrap: anywhere; }          /* texto longo não empurra a margem */

2. Render com Playwright

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    page = p.chromium.launch().new_page()
    page.goto("file:///caminho/relatorio.html")
    page.pdf(path="relatorio.pdf", format="A4", print_background=True, prefer_css_page_size=True)

3. Inspeção visual obrigatória

Converta cada página em PNG e abra com Read:

pdftoppm -png -r 110 relatorio.pdf /tmp/qa/pagina
ls /tmp/qa/pagina-*.png

Em cada imagem, confira:

  • nada cortado nas bordas (texto, tabela, imagem);
  • tabela longa quebra entre páginas com o cabeçalho repetido;
  • nenhuma linha órfã de título no pé da página;
  • fontes carregadas (sem fallback inesperado).

Achou problema: ajuste o CSS, renderize de novo e inspecione de novo. Só entregue depois de todas as páginas passarem.