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つのメソッドのいずれかから取得できます。
- TextLines.getAllHighlights() を使用すると、現在設定されているすべてのハイライトをページ番号をキーとするMapとして取得できます。
- TextLines.getHighlightedAreasAs2DArray(int page) を使用すると、指定されたページのすべてのハイライトを取得できます。
Mapとthe 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)
を使用して、これらのオプションの値を設定できます。
- ハイライトの色を設定するには、MapのキーとしてJPedalSettings.TEXT_HIGHLIGHT_COLOURを使用し、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);
- ページの色を反転させるハイライトを設定するには、MapのキーとしてJPedalSettings.INVERT_HIGHLIGHTを使用し、ブール値でこれを制御します。
Map mapValues=new HashMap();
mapValues.put(JPedalSettings.INVERT_HIGHLIGHT, Boolean.TRUE);
PdfDecoder.modifyJPedalParameters(mapValues);
