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アーカイブです。 私はそれを開梱し、さまざまな部分のテキストを見ました。
残念ながら、私はこれらの技術的な詳細を知りません。