我正在使用PDFBox的PDPage::ConvertToImage
在Java中显示PDF页面。我正试图基于页面中的cosobjects
(即AcroForm字段)在PDF页面的图像上创建可点击的区域。问题是PDF似乎使用了一个完全不同的坐标系:
System.out.println(field.getDictionary().getItem(COSName.RECT));
收益率
COSArray{[COSFloat{149.04}, COSFloat{678.24}, COSInt{252}, COSFloat{697.68}]}
如果我要估计图像上字段矩形的实际尺寸,它将是40,40,50,10(x,y,宽度,高度)。这两者之间没有明显的相关性,我似乎找不到任何关于这一点的信息与谷歌。
如何确定PDPage的cosobects的像素位置?
pdf坐标系与图像中使用的坐标系没有太大区别。唯一的区别是:
您可以使用以下公式将pdf坐标转换为图像坐标:
x_image = x_pdf * width_image / width_page
y_image = (height_pdf - y_pdf) * height_image / height_pdf
PDRectangle pageBounds = page.getMediaBox();
您可能错过了pdf中的数组和图像坐标估计值之间的相关性,因为pdf中的矩形表示为数组[x_left,y_bottom,x_right,y_top]
。
幸运的是,PDFBox提供了在比cos结构更高的级别上操作的类。利用这个优势,例如使用getRectangle()
从pdanNotation
获得的pdRectangle
,而不是访问从字段字典中提取的cosArray
。
问题内容: 我正在尝试将经纬度对转换为像素坐标。我发现了这种墨卡托投影,但我不理解代码。x_adj,y_adj变量是什么因素?当我在没有这些常量的情况下运行代码时,我的经/纬对就不在地图上,并且x和y像素坐标也不是我想要的。 问题答案: 这些变量从何而来 选择这些变量以使计算出的坐标与地图的背景图像匹配。如果知道地图的投影参数,则可以计算它们。但是我相信,它们很可能是通过反复试验而获得的。 如何计
我正在尝试将lat/lon对转换为像素坐标。我找到了这个墨卡托投影,但我不懂代码。因子x_adj,y_adj变量是多少?当我运行没有这些常数的代码时,我的lat/lon对不在我的地图上,x和y像素坐标也不是我想要的。 来源:http://webdesignerwall.com/tutorials/interactive-world-javascript-map/comment-page-1?rep
我正在尝试将球坐标转换为笛卡尔坐标,以绘制一个简单的三维金字塔。 下面是获取金字塔四个主要角的代码,具体取决于极角yrad和方位角xrad以及顶点坐标x和y: 方位角轴似乎工作正常,但问题是,在操纵极轴角时,当它们越过天顶或底部时,左右会互换,如图所示(选择顶部的mp4以更平滑地播放):http://gyazo.com/4a245713c232893960863cf4ea4186f6 怎么了?
我试图将图像从极坐标转换为笛卡尔坐标,但在应用公式后,我得到了浮点坐标(r和teta),我不知道如何使用x和y的浮点来表示空间中的点。可能有一种方法可以将它们转换为整数,并仍然保留分布,但我不知道如何。我知道OpenCV中有像warpPolar这样的函数,但我想自己实现它。任何想法都会有帮助:) 这是我的代码:
我是PDFBox(和PDF生成)的新手,很难生成自己的PDF。 我确实有以英寸/厘米为单位的某些坐标的文本,我需要将它们转换为PDFBox使用的单位。任何建议/实用程序都可以自动执行此操作吗? PDPageContentStream。moveTextPositionByAmount(x,y)对我来说毫无意义。
我有一张以色列地图。 我需要创建一个获得两个双参数(经度和纬度)的函数,该函数应该在地图图像中的那个区域上画一个小圆圈。 我有以下关于地图的信息: null 截图: https://gyazo.com/5a19dece37ebace496c6b8d68eb9ec3c