Pular para o conteúdo

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: Normal

Casos 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);
}
// Uso
exportReport(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