Content Manager
Visão Geral
O contentManager é acessível através da propriedade adapter.contentManager e fornece métodos para ler o conteúdo do editor em diferentes formatos.
const manager = adapter.contentManager;Reader
Todos os métodos de leitura estão em contentManager.reader.
getHtmlContent()
Obtém o conteúdo do editor em formato HTML.
Retorna: Promise<string>
Exemplo:
const html = await adapter.contentManager.reader.getHtmlContent();console.log('HTML:', html);
// Exemplo de saída:// <p>Paciente apresenta...</p>// <p><strong>Impressão:</strong> Normal</p>Casos de uso:
- Salvar relatório em banco de dados
- Enviar por email
- Exibir preview
- Integração com outros sistemas
getPlainTextContent()
Obtém o conteúdo do editor em texto plano (sem formatação).
Retorna: Promise<string>
Exemplo:
const text = await adapter.contentManager.reader.getPlainTextContent();console.log('Texto:', text);
// Exemplo de saída:// Paciente apresenta...// Impressão: NormalCasos de uso:
- Análise de texto
- Contagem de palavras
- Busca de termos
- Indexação para busca
getRtfContent()
Obtém o conteúdo do editor em formato RTF (Rich Text Format).
Retorna: Promise<string>
Exemplo:
const rtf = await adapter.contentManager.reader.getRtfContent();console.log('RTF:', rtf);
// Exemplo de saída:// {\rtf1\ansi\deff0 {\fonttbl {\f0 Arial;}}// \f0\fs24 Paciente apresenta...}Casos de uso:
- Exportar para Word
- Compatibilidade com sistemas legados
- Impressão com formatação
- Integração com prontuários eletrônicos
getSfdtContent()
Obtém o conteúdo do editor em formato SFDT (Syncfusion Document Format).
Retorna: Promise<IaraSFDT>
Exemplo:
const sfdt = await adapter.contentManager.reader.getSfdtContent();console.log('SFDT:', sfdt);
// Exemplo de saída:// {// sections: [{// blocks: [{// paragraphFormat: {...},// inlines: [...]// }]// }],// characterFormat: {...},// ...// }Casos de uso:
- Salvar estado completo do documento
- Restaurar documento com formatação exata
- Manipulação programática do documento
- Sincronização entre editores
Estrutura do SFDT:
interface IaraSFDT { sections: Array<{ blocks: Array<{ paragraphFormat?: any; characterFormat?: any; inlines?: any[]; }>; }>; characterFormat?: any; paragraphFormat?: any; defaultTabWidth?: number; styles?: any[]; lists?: any[]; background?: any;}Exemplos Práticos
Salvar em Múltiplos Formatos
async function saveReport(adapter) { const manager = adapter.contentManager.reader;
// Obter todos os formatos const [html, text, rtf, sfdt] = await Promise.all([ manager.getHtmlContent(), manager.getPlainTextContent(), manager.getRtfContent(), manager.getSfdtContent() ]);
// Salvar no backend await fetch('/api/reports/save', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ html, text, rtf, sfdt, }) });}Exportar para Download
async function exportReport(adapter, format) { const manager = adapter.contentManager.reader; let content, mimeType, extension;
switch (format) { case 'html': content = await manager.getHtmlContent(); mimeType = 'text/html'; extension = 'html'; break; case 'txt': content = await manager.getPlainTextContent(); mimeType = 'text/plain'; extension = 'txt'; break; case 'rtf': content = await manager.getRtfContent(); mimeType = 'application/rtf'; extension = 'rtf'; break; }
// Criar download const blob = new Blob([content], { type: mimeType }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `relatorio.${extension}`; a.click(); URL.revokeObjectURL(url);}
// UsoexportReport(adapter, 'html');Validação de Conteúdo
async function validateReport(adapter) { const text = await adapter.contentManager.reader.getPlainTextContent();
const errors = [];
// Validar tamanho mínimo if (text.length < 100) { errors.push('Relatório muito curto (mínimo 100 caracteres)'); }
// Validar campos obrigatórios if (!text.includes('Impressão:')) { errors.push('Campo "Impressão" não encontrado'); }
return { valid: errors.length === 0, errors };}Próximos Passos
- IaraSyncfusionAdapter - API principal do adapter
- Configuração - Opções de configuração
- Exemplos - Mais exemplos práticos