PHP でプレゼンテーションから数式をエクスポート

プレゼンテーションから数式をエクスポート

Aspose.Slides for PHP via Java は、プレゼンテーションから数式をエクスポートできます。たとえば、特定のプレゼンテーションのスライド上の数式を抽出し、別のプログラムやプラットフォームで使用する必要がある場合があります。

LaTeX のような一部の数式フォーマットは、人間が容易にコードを書けますが、MathML のコードは書くのが難しいです。後者はアプリによって自動的に生成されることを想定しているためです。MathML はコードが XML 形式であるため、プログラムは容易に読み取り・解析できます。そのため、MathML は多くの分野で出力および印刷フォーマットとして一般的に使用されています。

このサンプルコードは、プレゼンテーションから数式を MathML にエクスポートする方法を示しています:

  $pres = new Presentation();
  try {
    $autoShape = $pres->getSlides()->get_Item(0)->getShapes()->addMathShape(0, 0, 500, 50);
    $mathParagraph = $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")));
    $stream = new Java("java.io.FileOutputStream", "mathml.xml");
    $mathParagraph->writeAsMathMl($stream);
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

よくある質問

MathML にエクスポートされるのは、段落全体ですか、それとも個々の数式ブロックですか?

MathML へは、全体の数式段落(MathParagraph)または個々のブロック(MathBlock)のいずれかをエクスポートできます。どちらのタイプも MathML に書き出すためのメソッドを提供しています。

スライド上のオブジェクトが通常のテキストや画像ではなく数式であるかどうかは、どのように判断できますか?

数式は MathPortion に存在し、MathParagraph を持ちます。MathParagraph を持たない画像や通常のテキスト部分はエクスポート可能な数式ではありません。

プレゼンテーション内の MathML はどこから来るのですか?PowerPoint 固有ですか、それとも標準ですか?

エクスポートは標準の MathML(XML)を対象としています。Aspose は Presentation MathML、つまり標準のプレゼンテーションサブセットを使用しており、これはアプリケーションやウェブ全体で広く利用されています。

テーブル、SmartArt、グループなど内部の数式のエクスポートはサポートされていますか?

はい、これらのオブジェクトに MathParagraph を含むテキスト部分(すなわち本物の PowerPoint 数式)がある場合はエクスポートされます。数式が画像として埋め込まれている場合はエクスポートされません。

MathML へのエクスポートは元のプレゼンテーションを変更しますか?

いいえ。MathML の書き出しは数式の内容をシリアライズするだけであり、プレゼンテーション ファイルは変更されません。