Convertir PDF a Excel y Markdown

Convertir PDF a Excel y Markdown

Convertir PDF a Excel y Markdown

Esta guía muestra cómo convertir un PDF a un libro de Excel (.xlsx) o a Markdown, y cómo cargar un PDF de nuevo desde cualquiera de los formatos. Document realiza la conversión en ambas direcciones; ExcelSaveOptions y MarkdownSaveOptions afinan la exportación, y ExcelLoadOptions y MarkdownLoadOptions afinan la importación. Desde la 26.9.0.


PDF a XLSX

Las tablas detectadas en el PDF se convierten en cuadrículas de hojas de cálculo con celdas tipadas — números, fechas, booleanos, moneda y porcentajes se escriben como valores reales de Excel en lugar de texto — y el estilo original (familia/tamaño de fuente, color del texto, relleno de celda, bordes, altura de filas, ancho de columnas, alineación, celdas combinadas) se conserva. Las imágenes dentro de las celdas de tabla se incrustan como dibujos.

import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelSaveOptions;

try (Document doc = new Document("report.pdf")) {
    ExcelSaveOptions options = new ExcelSaveOptions();
    options.setFormat(ExcelSaveOptions.ExcelFormat.XLSX); // default
    options.setMinimizeTheNumberOfWorksheets(true);        // merge pages onto fewer sheets
    options.setInsertBlankColumnAtFirst(false);            // no leading spacer column
    options.setUniformWorksheets(false);                   // allow per-sheet column widths
    options.setStructuralHeuristics(true);                 // recover tables on untagged PDFs
    options.setSuppressRunningHeadersFooters(true);         // drop repeated page furniture
    doc.save("report.xlsx", options);
}

SaveFormat.Xlsx (un alias, SaveFormat.Excel, también se acepta) produce el mismo resultado con opciones predeterminadas: doc.save("report.xlsx", SaveFormat.Xlsx). El propio enum ExcelFormat de ExcelSaveOptions también acepta XmlSpreadSheet2003, CSV y ODS para la compatibilidad Aspose.PDF API, pero esta biblioteca siempre escribe un paquete .xlsx independientemente del valor configurado. También puedes escribir a un flujo con doc.save(OutputStream, ExcelSaveOptions).


XLSX a PDF, incluidos formularios en vivo

Carga un libro de trabajo .xlsx a través de un constructor Document que recibe ExcelLoadOptions. Cada hoja se convierte en una tabla PDF con el mismo soporte de tipado de celdas y estilo que en la dirección de exportación.

import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;

try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
    doc.save("book.pdf");
}

Configurar ExcelLoadOptions.setInteractiveForms(true) convierte las celdas numéricas y de etiqueta en un formulario PDF “en vivo” en lugar de texto estático: las celdas numéricas se convierten en campos de texto editables, las celdas de fórmula en campos de solo lectura que se recalculan a partir de sus entradas, y las celdas de etiqueta o constantes permanecen como texto estático a menos que otra fórmula las referencie. ExcelFormulaTranslator traduce cada fórmula a Acrobat JavaScript; una fórmula cuya función no sea compatible recae en su último valor estático calculado, de modo que el campo sigue mostrando el número correcto. El recálculo en sí solo se ejecuta en un visor con un motor forms/JavaScript — Adobe Acrobat o Foxit; un visor sin ese motor muestra solo los valores incorporados, sin recalculo en tiempo real.

import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;

ExcelLoadOptions options = new ExcelLoadOptions();
options.setInteractiveForms(true); // cells → fields, formulas → calculate actions

try (Document doc = new Document("invoice.xlsx", options)) {
    doc.save("invoice-live.pdf");
}

PDF a Markdown

Document proyecta un PDF a Markdown con sabor CommonMark / GitHub: encabezados, párrafos, listas, tablas, énfasis (negrita/cursiva/tachado), código en línea y con bloques, enlaces, imágenes y notas al pie.

import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownSaveOptions;

try (Document doc = new Document("article.pdf")) {
    MarkdownSaveOptions options = new MarkdownSaveOptions();
    options.setStructuralHeuristics(true);          // recover headings/lists/tables
    options.setSuppressRunningHeadersFooters(true);  // drop repeated page furniture
    options.setRasterizeVectorGraphics(true);        // charts/shapes -> referenced images
    doc.save("article.md", options);
}

SaveFormat.Markdown produce el mismo resultado con las opciones predeterminadas: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions) devuelve el Markdown como un String en lugar de escribir un archivo (no existe un accesorio separado de “texto Markdown”: este método es el que se debe invocar para obtener un resultado en memoria).


Markdown a PDF

Cargue un archivo Markdown a través de un constructor Document que recibe MarkdownLoadOptions. Un analizador escrito a mano del subconjunto CommonMark/GFM lee la fuente: encabezados, párrafos, listas, tablas, énfasis, código, enlaces, imágenes, citas en bloque y notas al pie. El HTML exótico incrustado en el Markdown no se reproduce completamente.

import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;

try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
    doc.save("README.pdf");
}

Consejos y mejores prácticas

  • La fidelidad es estructural, no píxel a píxel, para ninguno de los formatos: las conversiones conservan contenido, estructura, imágenes y geometría de página, no la apariencia renderizada exacta.
  • ExcelSaveOptions.ExcelFormat y el MarkdownSaveOptions las banderas estructurales solo cambian el output formato del paquete o heurísticas — los valores reales con los que se etiquetó su PDF siguen determinando lo que se detecta como una tabla, un encabezado o una lista.
  • Para formularios XLSX en vivo, trate los valores de celda incorporados como la alternativa correcta: solo un visor compatible con formularios recalcula las fórmulas al abrir.

Problemas comunes

ProblemaCausaSolución
La salida XLSX siempre tiene una extensión .xlsx incluso después de configurar ExcelFormat.CSV o ODSEl escritor FOSS siempre serializa un paquete OOXML .xlsx; los demás valores ExcelFormat existen solo para compatibilidad Aspose.PDF APITrate la salida como .xlsx sin importar el valor de ExcelFormat que haya configurado
Un formulario XLSX que recalcula muestra números estáticos en lugar de fórmulas en tiempo realEl visor de PDF no tiene motor de formularios/JavaScriptAbra el archivo en Adobe Acrobat o Foxit para ver la recalculación en tiempo real
Una celda de fórmula muestra un valor con aspecto obsoletoExcelFormulaTranslator no admite la función de esa fórmulaEste es el fallback documentado: el campo mantiene su último valor estático calculado

FAQ

¿Puedo obtener Markdown como un String en lugar de un archivo?

Sí — llame a Document.markdownText(MarkdownSaveOptions); devuelve el texto Markdown directamente en lugar de escribirlo en un archivo.

¿El importador de XLSX admite fórmulas reales de Excel?

Solo cuando ExcelLoadOptions.setInteractiveForms(true) está configurado, y solo el subconjunto de funciones que ExcelFormulaTranslator puede traducir a Acrobat JavaScript. Todo lo demás recae en el último valor estático calculado de la fórmula en el libro de origen.


API Reference Resumen

Clase/MétodoDescripción
ExcelSaveOptionsAjusta la exportación de PDF a XLSX
ExcelLoadOptionsAjusta la importación de XLSX a PDF, incluidos los formularios en vivo
ExcelFormatVariante de hoja de cálculo objetivo aceptada por ExcelSaveOptions
ExcelFormulaTranslatorTraduce fórmulas de Excel a Acrobat JavaScript para formularios en vivo
MarkdownSaveOptionsAjusta la exportación de PDF a Markdown
MarkdownLoadOptionsAjusta la importación de Markdown a PDF
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptionsMarkdownSaveOptions)`
Document.markdownText(MarkdownSaveOptions)Devuelve el Markdown como un String

Ver también

 Español