浏览器预览图的坐标如何映射到PDF文件中的坐标

我现在有一份PDF文件,通过PDFBox渲染成每页一张的图片

// load pdf and save image
try (PDDocument document = PDDocument.load("some file")) {
    PDFRenderer render = new PDFRenderer(document);
    BufferedImage scaledImage = render.renderImageWithDPI(pageIndex, 326);
    // save image
}

这一步保存的图片将会在浏览器里面预览,用户可以拖放图片到这个预览图中,然后我映射这个坐标到真实的PDF中,但是总是有一定的误差,下面是我的映射方式:

  1. 取得预览图在浏览器的width,height,取得拖放图片的在预览图中左上角的x,y
  2. 后端取得PDF实际的width,height,然后计算与预览图的宽比例,高比例,最终得出拖放图片在PDF中的左上角x,y
  3. 因PDF中的坐标原点是文档左下角,所以最终的x,y计算公式是:

    • x: float targetX = (previewX 1.0F / previewWidth) pdfPageWidth;
    • y: float targetY = pdfPageHeight - (previewY 1.0F / previewHeight) pdfPageHeight - dragImageHeight
  4. 根据上一步计算的x,y在这页PDF中画出了这个图,但是有误差,而且误差很明显,请问我该如何做呢?

参考文档

  1. PDF坐标系统
  2. PDF开发+电子签章
ABOUTYOU
浏览 402回答 3
3回答

开满天机

困扰了快一周了,问题终于解决,算法本身没问题,只是第三方的系统会缩放目标图片,计算时加上这个缩放比例定位即准确。

慕哥6287543

能问下,楼主 如何 确定pdf 的当前页数的吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java