如何使用 html 找到 PDF 元素坐标?我已经构建了一个显示 pdf(iframe)的 html 页面,我想使用 mouse-position 在 pdf 上找到 x,y 坐标?那可能吗?
这是我目前的程序:
-
使用
ImageMagic
将现有 PDF 文件转换为 PNG,同时指定density
为 300 DPI。 -
将 PNG 显示为背景图像,同时为用户提供在该图像上创建矩形的选项[3]
-
将每个 div 的坐标[4]保存到数据库中
-
使用
FPDI and TCPDF
将原始 PDF 作为模板创建 PDF 并将这些坐标应用于 PDF,但它们位置不正确而不是直接在 PDF 上。
我知道我保存的位置在pixels
,而 PDF 库使用millimeters
,但即使我进行转换,矩形位置也很差。
5 回答
假设您可以使用* nix 系统上提供的
pdfinfo
工具,则可以以磅为单位确定 PDF 文件的大小大小为 WxH 的 PDF 将在 300DPI 时呈现为
(W * 300 / 72)px x (H * 300 / 72)px
。因此上面的示例在 300DPI 处呈现2479px x 3508px
PNG。 记住:如果计算结果为小数,则像素四舍五入为最接近的整数此处的单个像素不应影响最终输出。至于 72 来自哪里,请通过:https://graphicdesign.stackexchange.com/questions/5859/all-pdfs-appear-to-be-72-dpi-no-matter-what
找到相对于 iframe 的鼠标位置应该是一件容易的事。我没有回答那个部分,因为这个问题仅适用于转换。
根据你的评论,你在你的 html 中使用 PNG 图像来显示图像而不是直接显示 pdf ...在这种情况下,最好的方法是使用 html canva div 然后使用类似这个的东西来获取鼠标坐标。
假设你的 pdf 中的左边距和上边距是并且保持常量,你需要在第一次手动比较 pdf 大小和图像大小,然后你可以使用 javascript 函数来转换“canva 中的鼠标位置”到“pdf 文件中的预期位置”,但在我看来,它绝对不是最好的方法。
为什么不使用viewerjs或pdf.js直接在 html 页面中显示 PDF? (而不是将 PDF 转换为图像,然后显示图像文件)
我之前做过这个。不能为您提供任何代码,但一般来说,我使用的方法是使用数学公式使其全部工作。
例如,假设您有一个顶部= 100 且左边= 200 的 pdf 矩形。如果页面是 8.5“x 11”页面,并且我的视口宽度为 10 英寸,我可以将左侧转换为矩形,如下所示:
10/8.5 * pdf.left
您可以将 iframe 位置设置为绝对值,然后将 x,y 鼠标 pos - iframe pos 转换为 PDF 左上角的原点坐标。我希望有所帮助!如果有滚动,则需要将其添加到滚动轴上的坐标。
我认为这会有所帮助。
HTML
CSS
使用 Javascript
jsfiddle