Esporta equazioni matematiche dalle presentazioni in Java
Introduzione
Aspose.Slides consente di esportare equazioni matematiche dalle presentazioni. Ad esempio, potresti dover estrarre le equazioni matematiche dalle diapositive (da una presentazione specifica) e utilizzarle in un altro programma o piattaforma.
Esporta equazioni matematiche in LaTeX
Aspose.Slides può convertire un’equazione matematica di PowerPoint direttamente in LaTeX; non è necessario un file MathML intermedio né un convertitore esterno. Un’equazione matematica è memorizzata in una casella di testo come un IMathPortion. Usa IMathPortion.getMathParagraph per ottenere un IMathParagraph, e quindi chiama IMathParagraph.toLatex. Il metodo restituisce una stringa che puoi salvare, visualizzare, inviare a un’altra applicazione o elaborare ulteriormente.
Il seguente esempio esamina ogni casella di testo in ogni diapositiva, trova tutte le porzioni matematiche e scrive ciascuna equazione in un file .tex separato:
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 restituisce tutte le caselle di testo trovate su una diapositiva. Il controllo di tipo IMathPortion separa le vere equazioni modificabili dal testo e dalle immagini ordinari.
I motori LaTeX e i modelli di documento non supportano tutti gli stessi comandi, pacchetti o caratteri Unicode. Prova la stringa restituita con il motore LaTeX usato dalla tua applicazione. Se un simbolo o un elemento Office Math non ha una rappresentazione adeguata in quell’ambiente, sostituiscilo nella stringa restituita con un comando specifico del progetto o ignora l’equazione e registra il problema per la revisione.
Salva equazioni matematiche come MathML
Mentre gli esseri umani scrivono facilmente il codice per alcuni formati di equazioni come LaTeX, faticano a scrivere il codice per MathML perché quest’ultimo è destinato ad essere generato automaticamente dalle applicazioni. I programmi leggono e analizzano MathML facilmente perché il suo codice è in XML, quindi MathML è comunemente usato come formato di output e stampa in molti settori.
Questo esempio di codice mostra come esportare un’equazione matematica da una presentazione 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();
}
FAQ
Che cosa viene esportato esattamente in MathML: un paragrafo o un blocco di formula individuale?
Puoi esportare sia un intero paragrafo matematico (MathParagraph) sia un singolo blocco (MathBlock) in MathML. Entrambi i tipi forniscono un metodo per scrivere in MathML.
Come posso capire se un oggetto su una diapositiva è una formula matematica anziché testo normale o un’immagine?
Una formula risiede in un MathPortion e ha un MathParagraph. Immagini e porzioni di testo regolari senza un MathParagraph non sono formule esportabili.
Da dove proviene il MathML in una presentazione: è specifico di PowerPoint o è uno standard?
L’esportazione mira a MathML standard (XML). Aspose utilizza Presentation MathML, il sottoinsieme di presentazione dello standard, ampiamente usato in molte applicazioni e sul web.
L’esportazione di formule all’interno di tabelle, SmartArt, gruppi, ecc. è supportata?
Sì, se quegli oggetti contengono porzioni di testo con un MathParagraph (cioè vere formule PowerPoint), vengono esportati. Se una formula è inserita come immagine, non lo è.
L’esportazione in MathML modifica la presentazione originale?
No. Scrivere MathML è una serializzazione del contenuto della formula; non modifica il file della presentazione.