【问题标题】:PDF Calculating the Height & Width of a drawed imagePDF计算绘制图像的高度和宽度
【发布时间】:2011-01-12 10:54:37
【问题描述】:

我的程序读取 PDF 文件,并且需要知道绘制到页面的图像的大小(以用户空间为单位)。

有人可以帮我看看下面的例子吗?

MediaBox = [0 0 612 792](以用户空间为单位的页面大小) 原始尺寸 (W/H) = 155/76(在图像字典中指定)

图像绘制说明:

q 74.400131 0 0 -36.000061 249.100266 224.240173 厘米 /Im1 做
问

所以 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

所以,我现在想做的是使用上面的公式计算 TopLeft-、TopRight-和 BottomLeft-角的坐标,然后使用这个公式:

w = TopRightX-TopLeftX h = BottomLeftY-TopLeftY

但是:如何计算这些坐标?我试过这个来计算右下角,例如:

X = 74.400131*155+0*76+249.100266 = 11`781.120

这个结果不可能是正确的...

有人可以帮我计算一下吗?

感谢您的帮助!

【问题讨论】:

    标签: image pdf


    【解决方案1】:

    您忘记了从用户空间到设备空间的转换。 图片中的矩阵与前一个矩阵(通常表示页面大小和缩放)连接起来

    图像矩阵中的值计算如下

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

    【讨论】:

    • 谢谢,但我已经解决了。但答案是正确的;)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-05-31
      • 2011-03-28
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      相关资源
      最近更新 更多