Exportar ecuaciones matemáticas desde presentaciones en Java
Introducción
Aspose.Slides le permite exportar ecuaciones matemáticas desde presentaciones. Por ejemplo, puede que necesite extraer las ecuaciones matemáticas de las diapositivas (de una presentación específica) y utilizarlas en otro programa o plataforma.
Exportar ecuaciones matemáticas a LaTeX
Aspose.Slides puede convertir una ecuación matemática de PowerPoint directamente a LaTeX; no se necesita un archivo intermedio de MathML ni un conversor externo. Una ecuación matemática se almacena en un cuadro de texto como un IMathPortion. Use IMathPortion.getMathParagraph para obtener un IMathParagraph, y luego llame a IMathParagraph.toLatex. El método devuelve una cadena que puede guardar, mostrar, enviar a otra aplicación o procesar más adelante.
El siguiente ejemplo examina cada cuadro de texto en cada diapositiva, encuentra todas las porciones de matemáticas y escribe cada ecuación en un archivo .tex separado:
Presentation presentation = new Presentation("equations.pptx");
try {
int slideCount = presentation.getSlides().size();
for (int slideIndex = 0; slideIndex < slideCount; slideIndex++) {
ISlide slide = presentation.getSlides().get_Item(slideIndex);
int slideNumber = slideIndex + 1;
int equationNumber = 1;
ITextFrame[] textFrames = SlideUtil.getAllTextBoxes(slide);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
if (!(portion instanceof IMathPortion))
continue;
IMathPortion mathPortion = (IMathPortion) portion;
IMathParagraph mathParagraph = mathPortion.getMathParagraph();
String latexFileName = "slide_" + slideNumber + "_equation_" + equationNumber + ".tex";
String latexText = mathParagraph.toLatex();
Path latexPath = Paths.get(latexFileName);
byte[] latexBytes = latexText.getBytes(StandardCharsets.UTF_8);
Files.write(latexPath, latexBytes);
equationNumber++;
}
}
}
}
} finally {
presentation.dispose();
}
SlideUtil.getAllTextBoxes devuelve todos los cuadros de texto encontrados en una diapositiva. La verificación de tipo IMathPortion separa las ecuaciones editables genuinas del texto e imágenes ordinarias.
Los motores de LaTeX y las plantillas de documentos no admiten todos los mismos comandos, paquetes o caracteres Unicode. Pruebe la cadena devuelta con el motor de LaTeX usado por su aplicación. Si un símbolo o elemento de Office Math no tiene una representación adecuada en ese entorno, reemplácelo en la cadena devuelta por un comando específico del proyecto o omita la ecuación y registre el problema para su revisión.
Guardar ecuaciones matemáticas como MathML
Aunque los humanos pueden escribir fácilmente el código de algunos formatos de ecuaciones como LaTeX, les resulta difícil escribir el código de MathML porque este último está pensado para ser generado automáticamente por aplicaciones. Los programas leen y analizan MathML con facilidad porque su código está en XML, por lo que MathML se usa comúnmente como formato de salida e impresión en muchos campos.
Este código de ejemplo le muestra cómo exportar una ecuación matemática de una presentación a MathML:
Presentation pres = new Presentation();
try {
IAutoShape autoShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 500, 50);
IMathParagraph mathParagraph = ((MathPortion)autoShape.getTextFrame().getParagraphs().get_Item(0).
getPortions().get_Item(0)).getMathParagraph();
mathParagraph.add(new MathematicalText("a").
setSuperscript("2").
join("+").
join(new MathematicalText("b").setSuperscript("2")).
join("=").
join(new MathematicalText("c").setSuperscript("2")));
FileOutputStream stream = new FileOutputStream("mathml.xml");
mathParagraph.writeAsMathMl(stream);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Preguntas frecuentes
¿Qué es exactamente lo que se exporta a MathML: un párrafo o un bloque de fórmula individual?
Puede exportar tanto un párrafo matemático completo (MathParagraph) como un bloque individual (MathBlock) a MathML. Ambos tipos proporcionan un método para escribir a MathML.
¿Cómo puedo saber si un objeto en una diapositiva es una fórmula matemática y no un texto o una imagen normal?
Una fórmula reside en un MathPortion y tiene un MathParagraph. Las imágenes y las porciones de texto normales sin un MathParagraph no son fórmulas exportables.
¿De dónde proviene el MathML en una presentación, es específico de PowerPoint o es un estándar?
La exportación apunta a MathML estándar (XML). Aspose utiliza Presentation MathML, el subconjunto de presentación del estándar, que está ampliamente usado en aplicaciones y en la web.
¿Se admite la exportación de fórmulas dentro de tablas, SmartArt, grupos, etc.?
Sí, si esos objetos contienen porciones de texto con un MathParagraph (es decir, fórmulas genuinas de PowerPoint), se exportan. Si una fórmula está insertada como imagen, no lo es.
¿La exportación a MathML modifica la presentación original?
No. Escribir MathML es una serialización del contenido de la fórmula; no modifica el archivo de la presentación.