1

IDML ファイルからテキスト コンテンツを抽出しようとしています。

私が現在していることは -

  1. xml ファイルを抽出し、ファイルに移動しdesignmap.xmlて、ドキュメントを構成するスプレッドを探します。

  2. スプレッドは designmap.xml 内の要素であり、:: として定義されます。

  3. <TextFrame>各スプレッドで要素を探し、対応するコンテンツをParentStory属性からフェッチします。

問題は、このテキストが適切に表示されていないように見えることです。タイトル用のテキスト フレームが 1 つあり、ページのコンテンツをカバーするテキスト フレームが 1 つある単純な IDML ファイルがあります。抽出すると、最初にボディ部分がフェッチされ、次にヘッダーがフェッチされます。

表示されるのと同じ順序でコンテンツを抽出できる方法はありますか?

ありがとう。

PS - 要素では、NextFrame および PreviousFrame 属性が両方とも「n」に設定されています。それが何を意味するのかはわかりませんが、これらの値が何らかの形で役立つ可能性があります。ここで非常に基本的なものが欠けている場合はお詫びします。私はインデザインと IDML が初めてです。

4

1 に答える 1

3

TextFrameIDML 内の要素の順序Spreadは、ページ上の読み取り順序ではなく、z オーダーの深さを示します。あなたが説明したドキュメントでは、深さが操作されたか、ヘッダーの前に body 要素がドキュメントに追加されました。いずれにしても、深さが低くなっています。

私が望む方法で読み取り順序を決定する唯一の方法は、ページ上の要素の位置を把握することです (おそらく、これを知ったら、上から下および/または左から右、または右から左に作業することもできます)言語によって異なります)。これは少し難しいかもしれませんが、基本的には> >階層の パラメータGeometricBoundsItemTransformパラメータの合計です。詳細については、こちらの回答を参照してください: https://stackoverflow.com/a/12490600/1014822SpreadPagePageItem

または、ドキュメントの作成プロセスを制御できる場合は、作成者が深さを使用して読み取り順序を示すようにすることができます。これにより、コーディングが少し節約されます。ただし、IDML にはLayers の概念もあり、深さの問題がさらに複雑になることに注意してください。

NextTextFramePreviousTextFrameストーリーがあるフレームから別のフレームに流れる場合、リンクされたフレームにのみ使用されます。の値はN、その方向にリンクされたフレームがないことを示します。

于 2013-03-01T18:23:28.277 に答える