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

时间:2017-12-18 14:30:11

标签: java itext coordinates digital-signature pdfbox

我现在有一个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中进行预览,在上方left corner of the x, y预览中拖放图片
  2. 后端获取PDF的actual width, height,然后计算width, height和预览的高度,从而在{{1}的PDF左上角生成拖放图像}}
  3. 由于PDF中坐标的原点是文档的左下角,因此x和y的最终公式为:

    • x:float targetX =(previewX 1.0F / previewWidth)pdfPageWidth;
    • y:float targetY = pdfPageHeight - (previewY 1.0F / previewHeight)pdfPageHeight - dragImageHeight
  4. 根据之前的x计算,在这个页面中用PDF绘制这个图,但是有错误,且错误很明显,我该怎么办?

  5. 参考文件

    iText

    修改 我也尝试使用iText: ```     Rectangle cropBox = reader.getCropBox(firstPageIndex);

    x, y

    ```

1 个答案:

答案 0 :(得分:0)

困扰了将近一个星期,终于解决了问题,算法本身没有问题,但第三方系统会缩放目标图像,用这种缩放计算位置是准确的。