PDF Clown ライブラリのメソッド「Annotation.getBox」を使用して、テキスト内のハイライトの位置を取得します。この方法で、ボルトまたは斜体テキストの位置も取得されます。どうすればこれを回避できますか? 実際のハイライトから Retancle2D だけを取得したい。
1 に答える
残念ながら、OP は PDF の例を共有できませんでした。彼はまた、非常に小さなコードの断片を提供しただけでした。したがって、以下は推測することしかできません...
コメント内の OP によって提供されるコード フラグメントは次のようになります。
PageAnnotations annotations = page.getAnnotations();
for (Annotation annotation : annotations)
{
highlightArea = annotation.getBox();
}
したがって、変数highlightArea
をBox
特定のページの注釈の最後の要素の値に設定します。
highlightArea
強調表示されたテキスト以外のコンテンツ ( OP の場合は太字または斜体のテキスト) が含まれている可能性がある理由として考えられるのは、次のとおりです。
- その最後の注釈は、おそらく完全にハイライト注釈ではなく、他のタイプのものです。
- 最終的な注釈が強調表示された注釈であると仮定すると、そのボックスのすべてのコンテンツが強調表示されて表示されるわけではなく、QuadPoints注釈ディクショナリ エントリ内の四角形または注釈の外観ストリームによって定義された一部のカスタム領域のみが強調表示されます。
後者の場合、PDF 仕様のセクション 12.5.6.10「テキスト マークアップ注釈」を付与します。
QuadPoints配列(必須)デフォルトのユーザー空間でn 個の四角形の座標を指定する8 × nの数値の配列。各四角形は、注釈の下にあるテキスト内の単語または連続する単語のグループを包含するものとします。各四角形の座標は、順番に与えられるものとします。
x 1 y 1 x 2 y 2 x 3 y 3 x 4 y 4
四角形の 4 つの頂点を反時計回りに指定します (図 64 を参照)。テキストは、点 ( x 1 , y 1 ) と ( x 2 , y 2 )を接続するエッジに対して方向付けされます。
注釈辞書のAPエントリが存在する場合は、QuadPointsよりも優先されます。表 168 および 12.5.5「外観ストリーム」を参照してください。</p>
ただし、Adobe Reader は指定された順序で頂点を並べ替えないことに注意してください。さらに、指定された順序で座標を持つハイライトを適切に表示しません。stackoverflow Q&A 「PDF 仕様と Acrobat の作成 (QuadPoints)」を参照してください。これは古いですが、現在の Adobe Acrobat バージョンにも適用されます。
annotation
が のインスタンスである場合は、メソッドTextMarkup
を使用して四角形を簡単に取得できます。TextMarkup
getMarkupBoxes
さらに、Annotation
メソッドを使用して外観ストリームを取得できますgetAppearance
。ただし、外観ストリームが強調表示する領域を決定することは簡単ではない場合があります。