Экспорт математических уравнений из презентаций на JavaScript
Введение
Aspose.Slides позволяет экспортировать математические уравнения из презентаций. Например, вам может потребоваться извлечь математические уравнения со слайдов (из конкретной презентации) и использовать их в другой программе или платформе.
Экспорт математических уравнений в LaTeX
Aspose.Slides может преобразовать математическое уравнение PowerPoint напрямую в LaTeX; промежуточный файл MathML и внешний конвертер не требуются. Математическое уравнение хранится в текстовом кадре как MathPortion. Используйте MathPortion.getMathParagraph для получения MathParagraph, а затем вызовите MathParagraph.toLatex. Метод возвращает строку, которую можно сохранить, отобразить, отправить в другое приложение или обработать дальше.
В следующем примере проверяются все текстовые кадры на каждом слайде, находятся все математические части и каждая формула записывается в отдельный файл .tex:
const presentation = new aspose.slides.Presentation("equations.pptx");
try {
const slideCount = presentation.getSlides().size();
for (let slideIndex = 0; slideIndex < slideCount; slideIndex++) {
const slide = presentation.getSlides().get_Item(slideIndex);
const slideNumber = slideIndex + 1;
let equationNumber = 1;
const textFrames = aspose.slides.SlideUtil.getAllTextBoxes(slide);
for (const textFrame of textFrames) {
const paragraphCount = textFrame.getParagraphs().getCount();
for (let paragraphIndex = 0; paragraphIndex < paragraphCount; paragraphIndex++) {
const paragraph = textFrame.getParagraphs().get_Item(paragraphIndex);
const portionCount = paragraph.getPortions().getCount();
for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
const portion = paragraph.getPortions().get_Item(portionIndex);
if (!java.instanceOf(portion, "com.aspose.slides.MathPortion")) {
continue;
}
const mathParagraph = portion.getMathParagraph();
const latexFileName = `slide_${slideNumber}_equation_${equationNumber}.tex`;
const latexText = mathParagraph.toLatex();
fileSystem.writeFileSync(latexFileName, latexText, "utf8");
equationNumber++;
}
}
}
}
} finally {
presentation.dispose();
}
SlideUtil.getAllTextBoxes возвращает все текстовые кадры, найденные на слайде. Проверка типа MathPortion отделяет подлинные редактируемые уравнения от обычного текста и изображений.
LaTeX‑движки и шаблоны документов не всегда поддерживают одинаковые команды, пакеты или символы Unicode. Проверьте полученную строку с LaTeX‑движком, используемым в вашем приложении. Если символ или элемент Office Math не имеет подходящего представления в этой среде, замените его в полученной строке командой, специфичной для проекта, либо пропустите уравнение и зафиксируйте проблему для последующего рассмотрения.
Сохранение математических уравнений в MathML
Хотя человеку легко писать код для некоторых форматов уравнений, таких как LaTeX, написать код для MathML сложнее, поскольку этот формат предназначен для автоматической генерации приложениями. Программы легко читают и разбирают MathML, так как его код представлен в виде XML, поэтому MathML часто используется в качестве формата вывода и печати во многих областях.
В этом примере кода показано, как экспортировать математическое уравнение из презентации в MathML:
var pres = new aspose.slides.Presentation();
try {
var autoShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 500, 50);
var mathParagraph = autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph();
mathParagraph.add(new aspose.slides.MathematicalText("a").setSuperscript("2").join("+").join(new aspose.slides.MathematicalText("b").setSuperscript("2")).join("=").join(new aspose.slides.MathematicalText("c").setSuperscript("2")));
var stream = null;
mathParagraph.writeAsMathMl(stream);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
FAQ
Что именно экспортируется в MathML — абзац или отдельный блок формулы?
Вы можете экспортировать либо весь математический абзац (MathParagraph), либо отдельный блок (MathBlock) в MathML. Оба типа предоставляют метод записи в MathML.
Как определить, что объект на слайде является математической формулой, а не обычным текстом или изображением?
Формула находится в MathPortion и имеет MathParagraph. Изображения и обычные текстовые части без MathParagraph не являются экспортируемыми формулами.
Откуда берётся MathML в презентации — это специфично для PowerPoint или это стандарт?
Экспорт ориентирован на стандартный MathML (XML). Aspose использует Presentation MathML — подмножество стандарта, широко применяемое в приложениях и в вебе.
Поддерживается ли экспорт формул, находящихся в таблицах, SmartArt, группах и т.п.?
Да, если эти объекты содержат текстовые части с MathParagraph (то есть подлинные формулы PowerPoint), они экспортируются. Если формула внедрена как изображение, она не экспортируется.
Модифицирует ли экспорт в MathML исходную презентацию?
Нет. Запись MathML представляет собой сериализацию содержимого формулы и не изменяет файл презентации.