Skip to content

PDF 生成模板编辑器

开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。

查看 GitHub

坐标 ​

WebViewer 中原点 (0, 0) 是在 WebViewer 页面的左上角。x 轴水平向右延伸,y 轴垂直向下延伸。

坐标转换由当前显示模式完成,可通过 documentViewer.getDisplayModeManager().getDisplayMode() 获取。Window 坐标相对于查看器元素(documentViewer.getViewerElement())的左上角。

将 PDF 文档坐标转换为 Window 坐标 ​

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 }

将 Window 坐标转换为 PDF 文档坐标 ​

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 }

将点击的点的坐标转换为 PDF 文档中的坐标 ​

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);