Java でプレゼンテーションからテキストポーションの境界を取得
概要
テキストのポーションは段落内の特定のテキストフラグメントを表し、周囲のコンテンツとは独立してそのフラグメントを操作できるようにします。Aspose.Slides では、テキストフラグメントの境界を取得したり、段落の一部だけに書式設定を適用したり、テキストの動作をより詳細に制御したりする必要がある場合にポーションを使用できます。
この記事では、IPortion.getRect を使用してポーションのバウンディング矩形を取得する方法を示します。また、IPortion.getCoordinates を使用してポーションの開始位置の座標を取得する方法も示します。さらに、単一テキストフラグメントへのハイパーリンク適用、ポーション・段落・テキストフレーム・テーマの継承による書式決定、指定フォントが利用できない場合の処理など、一般的なポーション関連シナリオも取り上げます。
テキストポーションの境界取得
IPortion.getRect を使用してテキストポーションのバウンディング矩形を取得します:
Presentation presentation = new Presentation("Shapes.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = (IAutoShape) slide.getShapes().get_Item(0);
for (IParagraph paragraph : shape.getTextFrame().getParagraphs())
{
for (IPortion portion : paragraph.getPortions())
{
java.awt.geom.Rectangle2D.Float rectangle = portion.getRect();
System.out.println("X = " + rectangle.x + "; Y = " + rectangle.y + "; Width = " + rectangle.width + "; Height = " + rectangle.height);
}
}
} finally {
presentation.dispose();
}
テキストポーションの座標取得
IPortion.getCoordinates を使用してテキストポーションの開始位置の座標を取得します:
Presentation presentation = new Presentation("Shapes.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = (IAutoShape) slide.getShapes().get_Item(0);
for (IParagraph paragraph : shape.getTextFrame().getParagraphs())
{
for (IPortion portion : paragraph.getPortions())
{
java.awt.geom.Point2D.Float point = portion.getCoordinates();
System.out.println("X = " + point.x + "; Y = " + point.y);
}
}
} finally {
presentation.dispose();
}
よくある質問
単一段落内のテキストの一部だけにハイパーリンクを適用できますか?
はい、個々のポーションにassign a hyperlink を割り当てることができます。そのフラグメントだけがクリック可能になり、段落全体は対象になりません。
スタイル継承はどのように機能しますか: ポーションが上書きするものと、段落やテキストフレームから取得するものは何ですか?
ポーションレベルのプロパティが最も高い優先順位を持ちます。プロパティがIPortionで設定されていない場合、Aspose.Slides はIParagraphから取得します。そちらでも設定されていない場合は、ITextFrame またはtheme のスタイルが使用されます。
ポーションに指定されたフォントが対象マシンやサーバーに存在しない場合はどうなりますか?
Font substitution rules が適用されます。テキストの再フローが発生する可能性があり、メトリクス・ハイフネーション・幅が変わり、正確な配置に影響を与えることがあります。
ポーション固有のテキスト塗りつぶし透過性やグラデーションを、段落全体とは別に設定できますか?
はい、IPortion レベルでテキストの色、塗りつぶし、透過性を隣接するフラグメントとは異なる設定にできます。