Conversion
Conversion
Esta página cobre a renderização de um PDF para outros formatos e a conversão de um documento em conformidade com PDF/A. Document expõe um método To*() por formato de saída para o documento inteiro; os mesmos métodos existem em Page para renderizar uma única página.
Renderizando para Outros Formatos de Documento
Document.ToHtml(), Document.ToDocx() e Document.ToMarkdown() renderizam todas as páginas; Page.ToSvg() e Page.ToImage() renderizam uma página para uma string SVG independente ou bytes PNG. Cada um aceita suas próprias opções — mode em DocxOptions (‘flow’ reflow de conteúdo, ’textbox’ mantém a geometria própria de cada página) e images em MarkdownExportOptions (‘inline’ incorpora URIs de dados de imagem, ’external’ grava arquivos separados em imageDir).
const doc = Document.OpenFile('in.pdf');
const svg = doc.Pages[0].ToSvg(); // standalone <svg> string
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI
const html = doc.ToHtml(); // standalone semantic HTML, all pages
const md = doc.ToMarkdown(); // GFM Markdown, all pages
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry
ImageOptions (para Page.ToImage()) também aceita format, quality, scale, um width / height explícito, e background (‘white’ ou ’transparent’).
Convertendo em Direção a PDF/A
Document.ConvertToPdfA() tenta remediar um documento em direção a um PDF/A level (‘b’ ou ‘u’) e revalida-lo, retornando um ConversionReport com applied (as ações de remediação realizadas), unresolved (problemas que não pôde corrigir) e passed. Execute-o em uma cópia — por exemplo, uma feita com Document.ExtractPages() — para que o documento ativo e funcional nunca seja alterado pela conversão.
// ExtractPages gives an independent copy; ConvertToPdfA never touches the original.
const copy = doc.ExtractPages(doc.Pages.map((_, i) => i + 1));
const conversion = copy.ConvertToPdfA('2b');
console.log(`applied ${conversion.applied.length} action(s), `
+ `${conversion.unresolved.length} unresolved, `
+ `result: ${conversion.passed ? 'passes' : 'still fails'} PDF/A-2b`);
copy.WriteTo('output-pdfa.pdf');Outros formatos de exportação
Além de HTML, Markdown, DOCX, SVG e PNG, a biblioteca também exporta TIFF (TiffExportOptions, encodeTiff()) e importa/exporta valores de campo AcroForm em FDF e XFDF (exportFdfFile(), exportXfdfFile(), importFdfFile(), importXfdfFile()) — útil para trocar dados de formulários preenchidos separadamente do próprio PDF.
Dicas e boas práticas
- Execute
Document.ConvertToPdfA()em uma cópia (por exemplo, a partir deDocument.ExtractPages()), nunca no documento ativo que ainda precisa ser salvo sem conversão. - Verifique
ConversionReport.unresolvedmesmo quandopassedestátruepara um nível de validação mais flexível — algumas ações de remediação só são totalmente resolvidas em um nível mais rígido. - Use
mode: 'textbox'emDocxOptionsquando a saída DOCX precisa manter a geometria visual exata de cada página; use o modo padrão'flow'quando deve reformatar como um documento de processamento de texto normal. - Passe
images: 'external'e umimageDiremMarkdownExportOptionspara documentos grandes, em vez dos URIs de dados embutidos padrão, para manter o próprio arquivo Markdown pequeno.
Problemas comuns
| Problema | Causa | Correção |
|---|---|---|
ConvertToPdfA() ainda relata passed: false | Nem todo problema nas listas de ConversionReport.unresolved pode ser remedido automaticamente (ex.: fontes incorporadas ausentes ou um /OutputIntent ausente) | Aborde manualmente as regras específicas de unresolved, então execute novamente ConvertToPdfA() |
| O documento ao vivo foi inesperadamente modificado após uma tentativa de conversão PDF/A | ConvertToPdfA() foi chamado diretamente no documento de trabalho em vez de uma cópia | Chame-o em uma cópia feita com Document.ExtractPages() |
| A exportação em Markdown produz um único arquivo enorme | O images: 'inline' padrão incorpora cada imagem como um URI de dados | Passe { images: 'external', imageDir: '...' } para gravar as imagens como arquivos separados |
| A saída DOCX perde o layout de página original | O mode: 'flow' padrão reformatta o conteúdo como um processador de texto | Passe { mode: 'textbox' } para manter a geometria própria de cada página |
FAQ
Para quais formatos um PDF pode ser convertido?
HTML, Markdown e DOCX para o documento inteiro (Document.ToHtml() / ToMarkdown() / ToDocx()); SVG e PNG por página (Page.ToSvg() / Page.ToImage()); além de exportação de TIFF e FDF/XFDF como dados de formulário.
Converter para PDF/A modifica meu documento original?
Só se você chamar ConvertToPdfA() diretamente nele. Chame-o em uma cópia — por exemplo doc.ExtractPages(doc.Pages.map((_, i) => i + 1)) — para manter o documento original sem conversão.
Como saber se uma conversão PDF/A realmente teve sucesso?
Verifique ConversionReport.passed. applied lista o que a conversão corrigiu, e unresolved lista o que não pôde — inspecione unresolved mesmo quando passed está true.
Posso exportar apenas os valores dos campos de formulário preenchidos, sem o próprio PDF?
Sim — exportFdfFile() e exportXfdfFile() gravam os valores atuais do campo AcroForm em um arquivo FDF ou XFDF separado; importFdfFile() / importXfdfFile() leem-no de volta para um documento.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown() | Renderize cada página para outro formato de documento |
Page.ToSvg() / Page.ToImage() | Renderize uma única página para SVG ou PNG |
DocxOptions / MarkdownExportOptions / ImageOptions | Opções de renderização por formato |
Document.ConvertToPdfA() | Remedie um documento para um nível PDF/A e revalide |
ConversionReport | Resultado da conversão: applied, unresolved, passed |
TiffExportOptions / encodeTiff() | Exportar para TIFF |
exportFdfFile() / exportXfdfFile() / importFdfFile() / importXfdfFile() | Exportar ou importar valores do campo AcroForm como FDF/XFDF |