マウスイベントからページ座標を取得する方法
マウスイベントからページ座標を取得するには、カスタムマウスリスナーを作成し、外部ハンドラーとして追加する必要があります。
final Viewer viewer = new Viewer();
viewer.setupViewer();
viewer.executeCommand(ViewerCommands.OPENFILE, "inputFile.pdf");
final SwingGUI gui = viewer.getSwingGUI();
final SwingMouseFunctionality listener = new SwingMouseSelector(gui.getPdfDecoder(), gui, gui.getValues(), gui.getCommand()) {
@Override
public void mouseReleased(final MouseEvent e) {
final Point p = getCoordsOnPage(e.getX(), e.getY(), viewer.getPdfDecoder().getPageNumber());
}
};
viewer.getPdfDecoder().addExternalHandler(listener, Options.CustomMouseHandler);
Javaは左上を原点とする座標系を使用しますが、PDFは左下を原点とする座標系を使用するため、AffineTransformを使って出力を垂直方向に反転させる必要がある場合があります。PDFファイルのページ座標について詳しく知りたい場合は、こちらのブログ記事 をご覧ください。
