Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

Java PDF ビューアでテキストを選択する

JPedal API には、ページ上にハイライトを表示するためのユーザー制御を可能にするメソッドが含まれています。これらはすべて TextLines クラスによって処理され、PdfDecoderInt.getTextLines() を介してアクセスできます。

ハイライトの追加

ビューア内でマウスを使用してテキストをハイライトする以外に、TextLines.addHighlights(int[][] highlights, boolean areaSelect, int page) を使用してプログラム的にハイライトを追加することもできます。3つの入力パラメータは以下のように機能します。

  • highlights - ハイライトを定義する整数配列の配列で、各配列は x, y, width, height の順に4つの値を含みます
    注意: Java の座標(原点が左上)ではなく、ページの左下を原点 (0,0) とする PDF 座標が使用されます。PDF 座標は Java PDF ビューアに表示して簡単に確認できます。
  • areaSelect - ハイライト領域をハイライトする範囲として使用するか (true)、連続したテキストを選択するための開始点と終了点として使用するかを定義するブール値です。
  • page - ハイライトを追加するページのページ番号を表す整数です。ハイライトは、ページ変更、マウスクリック、検索、その他のマウス操作など、複数のイベントで削除されることに注意してください。新しいハイライトが追加されると、以下で説明するメソッドを使用してハイライトが返されるまで、TextLines.hasHighlightAreasUpdated() は true を返します。

ハイライトの取得

ハイライトは2つのメソッドのいずれかから返すことができます。

Map と TextLines.getHighlightedAreasAs2DArray(int page) によって返される整数配列は、ハイライトを定義する整数配列の配列で、各配列は x, y, width, height の順に4つの値を含みます。
注意: Java の座標(原点が左上)ではなく、ページの左下を原点 (0,0) とする PDF 座標が使用されます。PDF 座標は Java PDF ビューアに表示して簡単に確認できます。

これらのメソッドを呼び出した後、TextLines.hasHighlightAreasUpdated() は false を返すようになります。

ハイライトの削除

ハイライトは、TextLines.clearHighlights() を使用して全体をクリアすることしかできません。このメソッドは、すべてのページのすべてのハイライトを削除します。削除後、上記で説明したメソッドを使用してハイライトが返されるまで、TextLines.hasHighlightAreasUpdated() は true を返します。

ハイライトカラーオプション

ハイライトの色は2つの方法のいずれかで設定できます。半透明の色付き図形をテキストの上に重ねるか、ハイライト領域の色を反転させるかです。
どちらのオプションも、PdfDecoder.modifyJPedalParameters(Map<Integer,Object> values) を使用してこれらのオプションの値を設定できます。

  • JPedalSettings.TEXT_HIGHLIGHT_COLOUR を Map のキーとして使用し、RGB 値の整数表現(Color.getRGB() を使用して取得可能)を指定することで、ハイライトの色を設定します。
Color color = new Color(0, 255, 0);
Map mapValues=new HashMap();  
mapValues.put(JPedalSettings.TEXT_HIGHLIGHT_COLOUR, Color.getRGB());  
PdfDecoder.modifyJPedalParameters(mapValues);  
  • JPedalSettings.INVERT_HIGHLIGHT を Map のキーとして使用し、Boolean 値でこれを制御することで、ページの色を反転するハイライトを設定します。
Map mapValues=new HashMap();  
mapValues.put(JPedalSettings.INVERT_HIGHLIGHT, Boolean.TRUE);  
PdfDecoder.modifyJPedalParameters(mapValues);