Pular para o conteúdo

Exportação PDF

O Juca gera documentos PDF a partir de sessões de briefing usando jsPDF. O PDF é renderizado no lado do servidor como uma função pura e entregue por meio de um endpoint de API dedicado.

O pipeline de geração de PDF:

  1. O cliente solicita o PDF via GET /api/export/pdf/[sessionId]
  2. A rota de API autentica a requisição e carrega a sessão
  3. generateBriefingPDF(input) processa os blocos da sessão em conteúdo PDF
  4. O PDF é retornado como binário (application/pdf)

O gerador é uma função pura em src/lib/pdf/generator.ts:

function generateBriefingPDF(input: BriefingPDFInput): Uint8Array {
const doc = new jsPDF();
// Extrair blocos por tipo
const diagnosis = blocks.find(b => b.type === 'diagnosis');
const precedents = blocks.filter(b => b.type === 'precedent');
const riskBalance = blocks.find(b => b.type === 'risk_balance');
const delivery = blocks.find(b => b.type === 'delivery');
// Renderizar seções com controle manual de posição Y
let y = 20;
// ... renderiza cada seção, chamando checkPage() para overflow
// Usa doc.splitTextToSize(text, maxWidth) para quebra de texto
return new Uint8Array(doc.output('arraybuffer'));
}
GET /api/export/pdf/[sessionId]
ParâmetroTipoLocalizaçãoObrigatório
sessionIdstringCaminho da URLSim

Autenticação: Obrigatória. Usa auth() de src/lib/auth.

Resposta: Conteúdo binário application/pdf.

🚧 Funcionalidade Planejada — O PDF do v0.4 (#289) refletirá as seleções do usuário ao longo das 4 fases do Briefing. A estrutura do PDF se adaptará com base no modo de entrega (Síntese produz um resumo conciso; Parecer produz um layout de opinião formal).

🚧 Funcionalidade Planejada — Exportação em DOCX está planejada para o v0.5 (#158).