fbpx
< 戻る
印刷

Java PDF Viewerでテキストを選択

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

ハイライトの追加

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

  • highlights – ハイライトを定義する整数配列の配列で、それぞれ x、y、width、height の順に 4 つの値を含みます。
    《注》ページの左下を原点(0,0)として扱うPDF座標が使用され、Java座標(原点は左上)は使用されません。JavaのPDFビューアで表示されるPDF座標を簡単に確認できます。
  • areaSelect – ハイライト領域をハイライトする領域として使うか (true)、連続テキストを選択する始点と終点として使うかを定義するブーリアン値。
  • page – ハイライトを追加するページのページ番号を表す整数。ハイライトは、ページが変わったり、マウスをクリックしたり、検索したり、その他のマウス操作をしたりするたびに削除されることに注意しましょう。新しいハイライトが追加されると、TextLines.hasHighlightAreasUpdated() は、後述のメソッドでハイライトが返されるまで true を返します。

ハイライトの取得

ハイライトは2つのメソッドのいずれかから返されます。

マップと TextLines.getHighlightedAreasAs2DArray(int page) が返す整数配列は、ハイライトを定義する整数配列の配列であり、それぞれが x,y,width,height の順に 4 つの値を含んでいます。
《注》PDF の座標は、 ページの左下を原点 (0,0) と し て扱い、 Java の座標 (原点は左上) は用いません。Java PDFビューアで表示されるPDF座標を簡単に確認できます。

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

ハイライトカラーを選択する方法

ハイライトのカラーは2つの方法があります。半透明のカラーをテキストの上に重ねる方法と、ハイライト部分の色を反転させる方法です。
どちらのオプションも、PdfDecoder.modifyJPedalParameters(Map<Integer,Object> values)を使って設定することができます。

  • マップのキーとして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);  
  • マップのキーとしてJPedalSettings.INVERT_HIGHLIGHTを使用し、ブーリアン値でページカラーを反転するようにハイライトを設定します。
  • Map mapValues=new HashMap();  
    mapValues.put(JPedalSettings.INVERT_HIGHLIGHT, Boolean.TRUE);  
    PdfDecoder.modifyJPedalParameters(mapValues);  
    
    MENU
    PAGE TOP