Skip to content

PDF Generation Template Editor

Open-source visual PDF generation engine with customizable templates and developer-friendly APIs.

View on GitHub

Coordinates ​

The (0, 0) point is located at the top left of the page in WebViewer. The x axis extends horizontally to the right and the y axis extends vertically downward.

The conversions are done by the current display mode, which you get with documentViewer.getDisplayModeManager().getDisplayMode(). Window coordinates are relative to the top left of the viewer element (documentViewer.getViewerElement()).

Convert PDF coordinates to Window coordinates ​

javascript
const pageNumber = 1;
const pagePoint = {
    x: 0,
    y: 0
};

const displayMode = documentViewer.getDisplayModeManager().getDisplayMode();
const windowPoint = displayMode.pageToWindow(pagePoint, pageNumber);
// { x: 47, y: 64 }

Convert Window coordinates to PDF coordinates ​

javascript
const pageNumber = 1;
const windowPoint = {
    x: 47,
    y: 64
};

const displayMode = documentViewer.getDisplayModeManager().getDisplayMode();
const pagePoint = displayMode.windowToPage(windowPoint, pageNumber);
// { pageNumber: 1, x: 0, y: 0 }

Convert coordinates of clicked point to PDF coordinates ​

javascript
const getMouseLocation = e => {
  const rect = documentViewer.getViewerElement().getBoundingClientRect();

  return {
    x: e.clientX - rect.left,
    y: e.clientY - rect.top
  };
}

const handleClick = (e) => {
  const displayMode = documentViewer.getDisplayModeManager().getDisplayMode();
  let windowCoordinates = getMouseLocation(e);
  const page = displayMode.getSelectedPages(windowCoordinates, windowCoordinates);

  const clickPageNumber = (page.first !== null) ? page.first : documentViewer.getCurrentPage();
  const pagePoint = displayMode.windowToPage(windowCoordinates, clickPageNumber);
}

documentViewer.addEventListener('click', handleClick);