当前位置: 首页 > 知识库问答 >
问题:

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

伯丁雷
2023-03-14

我现在有一个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,但总是有些误差。下面是我的映射方式:

  • x:浮点目标x=(previewX 1.0f/previewWidth)PDFPageWidth;
  • y:float targetY=pdfPageHeight-(previewY 1.0f/previewHeight)pdfPageHeight-DragImageHeight

按照前面计算的x,y在这页PDF中画出这个图,但是有错误,而且错误很明显,怎么办?

iText

float widthRatio = renderRandomX * 1.0F / renderWidth;
float heightRatio = renderRandomY * 1.0F / renderHeight;

float offsetLLX = cropBox.getWidth() * widthRatio;
float offsetLLY = cropBox.getHeight() - cropBox.getHeight() * heightRatio;

Rectangle drawSignRect = new Rectangle(cropBox.getLeft() + cropBox.getWidth() * widthRatio,
    cropBox.getBottom() + offsetLLY,
    cropBox.getLeft() + offsetLLX + signImage.getWidth(),
    cropBox.getBottom() + offsetLLY + signImage.getHeight());

```

共有1个答案

巫马望
2023-03-14

困扰了差不多一个星期,终于解决了问题,算法本身没问题,但第三方系统会对目标图像进行缩放,用这个缩放计算出的位置是准确的。

 类似资料:
  • 问题内容: 我需要文本选择开始处的像素坐标(在页面上的任何地方,而不是文本区域中)。 我尝试使用光标坐标,但是效果不佳,因为光标坐标和选择的开头并不总是相同的(例如,当用户将鼠标拖到文本上时)。 希望有人能解决! 问题答案: 在IE> = 9和非IE浏览器(Firefox4+,自2009年初发布的WebKit浏览器,Opera11,也许更早)中,可以使用的方法。在IE4-10中,您可以使用的和属性

  • 问题内容: 在我的servlet中,我使用下面的代码在浏览器中打开PDF文件,但是,它显示了一个下载对话框。 我做错了什么? 问题答案: 你可以尝试用

  • 预览 在编辑器工具栏上选择 浏览器 后,点击旁边的按钮,会在用户的默认桌面浏览器中直接运行游戏的网页版本。推荐使用谷歌浏览器(Chrome)作为开发过程中预览调试用的浏览器,因为谷歌浏览器(Chrome)的开发者工具是最为全面强大的。 浏览器预览界面的最上边有一系列控制按钮可以对预览效果进行控制: 最左边选择预览窗口的比例大小,来模拟在不同移动设备上的显示效果 Rotate 按钮决定显示横屏还是竖

  • 问题内容: 我想使用PDFMiner从PDF文件中提取所有文本框和文本框坐标。 其他许多Stack Overflow帖子都介绍了如何以有序方式提取所有文本,但是我该如何做获取文本和文本位置的中间步骤呢? 给定一个PDF文件,输出应类似于: 问题答案: 换行符在最终输出中转换为下划线。这是我发现的最小工作解决方案。

  • 有些文件类型 Windows的文件浏览器的文件预览功能 无法使用 比如说.yaml 后缀名 文件预览窗格显示空白,但是修改成.txt后缀名就可以 文件预览了 能实现 比.yaml 当做 txt 的子类进行文件预览吗? 尝试修改过.yaml文件的默认打开方式,但是这样不影响文件浏览器 文件预览功能的行为

  • 我正在使用Angular7和Java8开发一个web应用程序。我正在上传一个文件(pdf、docx、txt等),但问题是我无法通过RESTful web服务在浏览器的另一个页面中打开它。我得到错误415不支持的媒体类型。我尝试过这个帖子,但没有成功。以下是前端和后端的代码片段: 角组件(通过传递路径文件名的按钮调用的方法示例:C/doc/foo.pdf) 角度服务 Java控制器 Java服务