.NET 経由の Node.js でプレゼンテーションテキストを管理
Overview
Aspose.Slidesでは、スライド上のテキストはシェイプに属します。矩形などのオートシェイプにはテキストフレームがあり、テキストフレームには段落が含まれ、各段落には同じ書式のテキストランであるポーションが含まれます。テキストはテキストフレームを介して変更し、フォントはポーションの書式で変更します。
この記事では、スライドにテキストボックスを追加してプレゼンテーションを保存します。その後、保存したファイルを開き、テキストボックスのテキスト、フォントサイズ、太字スタイルを変更します。
例を実行するには、Installation に記載されたとおりにプロジェクトを設定する必要があります。各例をプロジェクトフォルダー内に .js ファイルとして保存し、そのフォルダーから node で実行します。
Note
Aspose.Slides for Node.js via .NET には独自の API リファレンスがありません。camelCase 名で Aspose.Slides for .NET API をミラ―しているため、この記事の API リンクは Aspose.Slides for .NET API reference の該当クラスやメンバーへ誘導します。Add a Text Box
テキストボックスを追加するには、addAutoShape メソッドでスライドにオートシェイプを追加し、addTextFrame メソッドでテキストを設定します。次の例は新しいプレゼンテーションの最初のスライドに矩形を追加し、プレゼンテーションを text-box.pptx として保存します:
const { Presentation, ShapeType, SaveFormat } = require("aspose.slides.via.net");
const presentation = new Presentation();
try {
const slide = presentation.slides.get(0);
// 位置 (x, y) とサイズ (幅, 高さ) はポイント単位です。
const textBox = slide.shapes.addAutoShape(ShapeType.Rectangle, 100, 100, 500, 80);
textBox.addTextFrame("Quarterly report");
presentation.save("text-box.pptx", SaveFormat.Pptx);
console.log("Saved text-box.pptx");
} finally {
presentation.dispose();
}
text-box.pptx のスライドには幅 500 ポイント、高さ 80 ポイントの矩形が含まれ、デフォルトのフォントとサイズでテキスト「Quarterly report」が設定されています。次の例ではこのテキストボックスを変更します。
Change the Text and Its Formatting
以下の例は前の例で作成した text-box.pptx を開き、最初のスライド上の最初のシェイプを取得します。画像やテーブルなどのシェイプにはテキストフレームがないため、例ではシェイプが AutoShape であることを確認してからシェイプの textFrame を使用します。その後、次の操作を行います:
- テキストフレームの text プロパティを使用してテキストを置き換えます。その結果、テキストフレームには 1 つの段落が 1 つのポーションとして含まれます。
- そのポーションを paragraphs と portions コレクションから取得し、portionFormat を読み取ります。
- fontHeight(ポイント単位のフォントサイズ)と、fontBold(NullableBool 値を受け取る)を設定します。
const { Presentation, AutoShape, NullableBool, SaveFormat } = require("aspose.slides.via.net");
const presentation = new Presentation("text-box.pptx");
try {
const shape = presentation.slides.get(0).shapes.get(0);
if (shape instanceof AutoShape) {
const textFrame = shape.textFrame;
textFrame.text = "Quarterly report: third quarter";
const portionFormat = textFrame.paragraphs.get(0).portions.get(0).portionFormat;
portionFormat.fontHeight = 32;
portionFormat.fontBold = NullableBool.True;
presentation.save("text-box-updated.pptx", SaveFormat.Pptx);
console.log("Saved text-box-updated.pptx");
} else {
console.log("The first shape on the first slide is not an AutoShape.");
}
} finally {
presentation.dispose();
}
text-box-updated.pptx では、テキストボックスに太字 32 ポイントの「Quarterly report: third quarter」が表示されます。新しいテキストが単一のポーションであるため、2 つの書式設定プロパティはすべてに適用されます。ライセンスがない場合、保存するたびに評価用の透かしが追加されます。text-box.pptx 自体も評価モードで保存されているため、text-box-updated.pptx には透かしが 2 つ含まれます。詳細は Evaluate Aspose.Slides を参照してください。
FAQ
Why does fontBold take a NullableBool value instead of true or false?
ポーションはプロパティを未定義にして、段落、シェイプ、またはスライドのレイアウトやマスターから継承させることができます。NullableBool.NotDefined は「継承」を意味し、NullableBool.True と NullableBool.False は継承された値を上書きします。true または false を直接代入するとエラーが発生します。同様に、fontHeight はポーションがフォントサイズを継承している場合は NaN を返します。
How do I change the text color?
ポーションの書式の塗りつぶしを設定します。portionFormat.fillFormat.fillType に FillType.Solid を割り当て、続いて portionFormat.fillFormat.solidFillColor.color に "#FF0000" のようなカラーコードを割り当てます。FillType をパッケージからインポートする名前に追加してください。
How do I format only part of the text?
書式設定はポーション単位で行われるため、テキストの対象部分を独自のポーションに分けます。Portion.CreatePortionFromText でポーションを作成し、段落の portions コレクションの add メソッドで追加し、続いて新しいポーションの portionFormat を設定します。Portion をインポートする名前に追加してください。
Why does reading text return “… text has been truncated due to evaluation version limitation”?
ライセンスがない場合、Aspose.Slides は読み取ったテキストが長い場合、最初の 5 文字だけを返し、続けて「… text has been truncated due to evaluation version limitation」という通知を付加します。書き込んだテキストは完全に保存されます。完全なテキストを読み取るには、Licensing に記載された手順でライセンスを適用してください。