计算绘制图像的高度和宽度的PDF

3
我的程序读取PDF文件并需要知道绘制到页面上的图像的大小(以用户空间单位为准)。
有谁能帮我解决以下示例问题?
MediaBox = [0 0 612 792] (用户空间单位中的页面大小) 原始大小(W/H)= 155/76 (如图像字典中指定)
图像绘制指令:
q 74.400131 0 0 -36.000061 249.100266 224.240173 cm /Im1 Do
Q
因此,a-f的值为:
a = 74.400131 b = 0 c = 0 d = -36.000061 e = 249.100266 f = 224.240173
这导致以下矩阵:
74.400131 0 0 0 -36.000061 0 249.100266 224.240173 1
也给出了以下公式:
x′ = a × x + c × y + e y′ = b × x + d × y + f
那么,现在我想做的是使用上述公式计算从左上角、右上角和左下角的坐标,然后使用以下公式:
w = TopRightX-TopLeftX h = BottomLeftY-TopLeftY
但是,计算这些坐标如何工作?例如,我尝试计算BottomRight角:
X = 74.400131*155+0*76+249.100266 = 11`781.120
这个结果一定是不正确的...
有谁能帮我正确计算它吗?
感谢您的帮助!
2个回答

4

您忘记了将用户空间转换为设备空间。

图片中的矩阵与之前的矩阵(通常表示页面大小和缩放比例)相连接。

图像矩阵中的值计算如下:

width        0             0
  0       height           0
  x   page_h-(y+height)    1

谢谢,但我已经解决了。不过答案是正确的 ;) - undefined

1
在PDF中,图像被视为用户空间单位中的1x1。变换矩阵用于将图像缩放到所需大小进行显示。变换矩阵中的a和d元素表示缩放因子,因此在您的情况下,显示图像的大小(以用户空间单位表示)为74.400131*36.000061点(默认的用户空间单位)。您的示例是最简单的情况,因为我假设在q运算符之前没有其他内容。但在PDF中,变换矩阵是连接在一起的,因此您必须执行整个内容流才能看到图像显示时实际使用的变换矩阵。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接