Writerドキュメントのツリー全体を取得したいと考えています。OpenOffice 3.1。 Text
要素だけでなく、ツリー内のすべての要素に関するデータを収集する必要があります。OpenOffice APIを使用してドキュメントツリー全体を取得
XTextDocument
をロードしてgetText()
を実行すると、XText
要素が得られます。具体的には、XText
のXEnumerationAccess
を使用すると、TextRange
を反復するだけです。
OpenOfficeのドキュメント/DevGuide/Text/Iterating_over_Textから:
com.sun.star.text.Textの第2のインターフェースはXEnumerationAccessあります。テキストサービスでは、の段落がすべて列挙され、com.sun.star.text.Paragraphをサポートするオブジェクトが返されます。これにはテーブルが含まれます。これは、ライターがテーブルをcom.sun.star.text.TextTableサービスをサポートする特殊な段落として認識するためです。ここ
いくつかの追加のドキュメント:
段落のテキスト部分の列挙は、段落に属さないない供給内容を行いますが、テキストの流れと一緒に融合していません。これらは、段落、文字、または文字として固定されたテキストフレーム、グラフィックスオブジェクト、埋め込みオブジェクトまたは描画シェイプです。 TextPortionType "TextContent"は、文字または文字にアンカーされたコンテンツがあるかどうかを示します。 TextContent部分型がある場合は、文字または文字としてアンカーされたシェイプオブジェクトがあることがわかります。
私のテストドキュメントは、私がXTextContentとXTextRangeがgetAnchor()
を介して収集することができますかということを示しています。しかし、私が収集しているコンテンツの種類はどのようにして決めることができますか?唯一の方法はgetString()
です。オブジェクトが埋め込み画像だった場合、そのデータをどのように収集するのですか?
私はC++を使用していますが、Javaのソリューションは移植性があると思います。原因が悪いの書式に回答
から移行
、このコメントは答えとして掲載されています。
ご回答ありがとうございます。
私はAPIを使用するつもりです。
文書からGrahicObjects
を収集する例を試しています。 XGraphicObjectsSupplier
を使用すると、getGraphicObjects()
でコレクションを取得できます。コレクションのオブジェクトはAny
で、getValueTypeName()
でタイプを印刷するとXTextContent
となります。
APIには、コレクションにTextGraphicObject
「サービス」が含まれていることが記載されています。どのようにインスタンスを取得するのですか?