Conversion
Conversion
Esta página cubre la renderización de un PDF a otros formatos y la conversión de un documento hacia el cumplimiento de PDF/A. Document expone un método To*() por formato de salida para todo el documento; los mismos métodos existen en Page para renderizar una sola página.
Renderización a Otros Formatos de Documento
Document.ToHtml(), Document.ToDocx() y Document.ToMarkdown() renderizan cada página; Page.ToSvg() y Page.ToImage() renderizan una página a una cadena SVG independiente o bytes PNG. Cada uno acepta sus propias opciones — mode en DocxOptions (‘flow’ reorganiza el contenido, ’textbox’ mantiene la geometría propia de cada página) y images en MarkdownExportOptions (‘inline’ incrusta URIs de datos de imagen, ’external’ escribe archivos separados en 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()) también acepta format, quality, scale, un width / height explícito, y background (‘white’ o ’transparent’).
Convirtiendo Hacia PDF/A
Document.ConvertToPdfA() intenta remediar un documento hacia un PDF/A level (‘b’ o ‘u’) y lo vuelve a validar, devolviendo un ConversionReport con applied (las acciones de remediación realizadas), unresolved (problemas que no pudo solucionar) y passed. Ejecútelo sobre una copia — por ejemplo una hecha con Document.ExtractPages() — para que el documento en vivo y en uso nunca sea alterado por la conversión.
// 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');Otros formatos de exportación
Más allá de HTML, Markdown, DOCX, SVG y PNG, la biblioteca también exporta TIFF (TiffExportOptions, encodeTiff()) e importa/exporta valores de campo AcroForm en FDF y XFDF (exportFdfFile(), exportXfdfFile(), importFdfFile(), importXfdfFile()) — útil para intercambiar datos de formularios completados por separado del propio PDF.
Consejos y mejores prácticas
- Ejecute
Document.ConvertToPdfA()en una copia (por ejemplo desdeDocument.ExtractPages()), nunca en el documento en vivo que aún necesita guardar sin convertir. - Verifique
ConversionReport.unresolvedincluso cuandopassedestétruepara un nivel de validación más laxo — algunas acciones de remediación solo se resuelven completamente en un nivel más estricto. - Utilice
mode: 'textbox'enDocxOptionscuando la salida DOCX necesite mantener la geometría visual exacta de cada página; use el modo predeterminado'flow'cuando deba reorganizarse como un documento de procesamiento de texto normal. - Pase
images: 'external'y unimageDirenMarkdownExportOptionspara documentos grandes, en lugar de los URI de datos en línea predeterminados, para mantener pequeño el propio archivo Markdown.
Problemas comunes
| Problema | Causa | Corrección |
|---|---|---|
ConvertToPdfA() todavía informa passed: false | No todos los problemas que ConversionReport.unresolved lista pueden ser remediados automáticamente (p.ej., fuentes incrustadas faltantes o un /OutputIntent faltante) | Aborde manualmente las reglas específicas de unresolved, luego vuelva a ejecutar ConvertToPdfA() |
| El documento en vivo se modificó inesperadamente después de un intento de conversión PDF/A | ConvertToPdfA() se llamó directamente sobre el documento de trabajo en lugar de una copia | Ejecuta en una copia hecha con Document.ExtractPages() |
| La exportación a Markdown produce un archivo enorme | El images: 'inline' predeterminado incrusta cada imagen como una URI de datos | Pasa { images: 'external', imageDir: '...' } para escribir las imágenes como archivos separados |
| La salida DOCX pierde el diseño de página original | El mode: 'flow' predeterminado reordena el contenido como un procesador de textos | Pasa { mode: 'textbox' } para mantener la geometría propia de cada página |
FAQ
¿A qué formatos se puede convertir un PDF?
HTML, Markdown y DOCX para todo el documento (Document.ToHtml() / ToMarkdown() / ToDocx()); SVG y PNG por página (Page.ToSvg() / Page.ToImage()); además de exportación de datos de formulario en TIFF y FDF/XFDF.
¿Convertir a PDF/A modifica mi documento original?
Solo si llamas a ConvertToPdfA() directamente sobre él. Llámalo sobre una copia — por ejemplo doc.ExtractPages(doc.Pages.map((_, i) => i + 1)) — para mantener el documento original sin convertir.
¿Cómo sé si una conversión a PDF/A realmente tuvo éxito?
Revisa ConversionReport.passed. applied enumera lo que la conversión corrigió, y unresolved enumera lo que no pudo — inspecciona unresolved incluso cuando passed está true.
¿Puedo exportar solo los valores de los campos de formulario completados, sin el PDF en sí?
Sí — exportFdfFile() y exportXfdfFile() escriben los valores actuales del campo AcroForm en un archivo FDF o XFDF separado; importFdfFile() / importXfdfFile() los leen de nuevo en un documento.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown() | Renderiza cada página a otro formato de documento |
Page.ToSvg() / Page.ToImage() | Renderiza una sola página a SVG o PNG |
DocxOptions / MarkdownExportOptions / ImageOptions | Opciones de renderizado por formato |
Document.ConvertToPdfA() | Remediar un documento hacia un nivel PDF/A y revalidar |
ConversionReport | Resultado de la conversión: applied, unresolved, passed |
TiffExportOptions / encodeTiff() | Exportar a TIFF |
exportFdfFile() / exportXfdfFile() / importFdfFile() / importXfdfFile() | Exportar o importar los valores del campo AcroForm como FDF/XFDF |