We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

[Aspose.Slides for Java]文字列の置換処理について

PowerPoint内の文字列の置換処理を行いたいです。

調査したところ、サンプルとして、以下がありました。
Find and Replace in Presentation|Aspose.Slides Documentation

こちらは、Portion 単位での置換となっております。

例えば、PowerPoint内に、以下の文字列があった場合、

日本フォント:MS明朝

Portionは、以下3つとして取得されます。
日本フォント:
MS
明朝

そのため、MS明朝 という文字と、 Century という文字に、置換することが出来ません。

Portionを跨いだ、置換は出来ないのでしょうか?

@KazukiEndou,
サポートにお問い合わせいただきありがとうございます。 遅延をお詫び申し上げます。
可能であれば、最新バージョンのAspose.Slidesを使用して結果を確認してください。問題が解決しない場合は、次のデータと情報を共有してください。

  • PowerPointプレゼンテーションファイル
  • 問題を再現するコード例
  • コードが実行されたOSバージョン
  • 使用したJDKバージョン
  • Aspose.Slidesバージョン

最新バージョンの、22.6でも同様の事象が発生しました。

OSは、Windows10 64bit です。
JDKは、openjdk 11.0.3 です。
Aspose.Slidesは、21.12 です。

サンプルプログラムと、PoworPointのファイル(Home-Font.pptx)を添付します。

1行目の、「11ああ」が、「11」と「ああ」で分かれて抽出されるため、
「1あ」を、置換することが出来ません。サンプル.zip (34.0 KB)

@KazukiEndou,
追加情報ありがとうございます。残念ながら、コード例を使用して問題を再現することはできません。問題を切り分け、コード例をできるだけ単純化して、アプリケーションコードなしで共有してください。

コード例を単純化したサンプルを、アップし直します。サンプル.zip (32.5 KB)

調査をお願いします。

@KazukiEndou,
テキスト「11」と「ああ」は別の部分にあります。 したがって、文字列「1あ」と「あ1」は見つかりません。 次のように、テキストの一部を同じフォーマットで組み合わせることができる場合があります。

paragraph.joinPortionsWithSameFormatting();

しかし、それはあなたの場合ではありません。formatting.jpg (68.9 KB)
一般に、正しいテキスト検索を実行するには、 paragraph.getText()メソッドまたは他のアプローチを使用して段落全体のテキストをチェックする必要もあります。

ありがとうございます。

paragraph.joinPortionsWithSameFormatting();

確かに、上記を試したのですが、結果は変わりませんでした。

テキスト「11」と「ああ」は別の部分にあります。

こちらに関して質問です。別の部分と判断する条件を詳しく教えていただけないでしょうか?
(例)半角文字と全角文字が組み合わさった場合は、半角文字と全角文字をそれぞれ別の部分として判断する など

@KazukiEndou,
通常、PowerPointは、部分に異なる書式が適用されると、テキストを部分に分割します。 残念ながら、これに関する追加情報はありません。

2点確認させてください。

1.上記で添付いただいた、fomatting.jpgですが、PowerPointで、名前を付けて保存で、xmlで保存したものでしょうか?
保存.png (6.3 KB)

2.Portionというのは、fomatting.jpgの中身の、<a:t>から</a:t>の範囲内ごとに、取得するということで合っていますか?
つまり、<a:t>から</a:t>の範囲ごとに、書式が異なるという判断になるのでしょうか?

@KazukiEndou,

PPTXファイルはZIPアーカイブです。 私はそれを開梱し、さまざまな部分のテキストを見ました。

残念ながら、私はこれらの技術的な詳細を知りません。