我有一个PDF文档,它是通过创建大小为72 has的NSImages创建的,每个文档都有一个以像素为单位的表示。然后,我使用PDFPages将这些图像与initWithImage放在一起,然后保存文档。
当我打开文档时,我需要原始图像的分辨率。然而,PDFPage给我的所有矩形都是以点而不是像素来测量的。
我知道信息在那里,我想我可以尝试自己解析PDF数据,通过查看voyeur.app示例.但要做一些应该很正常的事是很费劲的.
有更简单的方法吗?
添加:
我尝试过两种技巧:
发布于 2010-08-18 15:41:37
关于PDF,您需要了解以下几点:
由于分辨率被定义为每单位距离的像素数(或样本数),分辨率仅意味着页面上图像的特定呈现。因此,如果您呈现一个特定的图像来填充页面,那么dpi中的分辨率是
xdpi = image_width / (pageWidthInPoints / 72.0);
ydpi = image_height / (pageHeightInPoints / 72.0);如果图像没有呈现到页面的全部大小,那么完整的解决方案是非常棘手的。Adobe规定图像应该被视为1x1,并且更改页面转换矩阵以确定如何呈现它们。这意味着在渲染图像时需要矩阵,并且需要将点(0,0),(0,1),(1,0)通过矩阵。(0,0)‘和(1,0)’之间的欧几里德距离给出了点的宽度,(0,0)‘和(0,1)’之间的欧几里德距离给出了点的高度。
那你是怎么得到矩阵的?那么,您需要页面的内容流,并且需要编写一个PDF解释器,该解释器可以撕毁内容流并跟踪CTM的更改。当你到达你的图像,你为它提取CTM。
要做到这一点,最后一步应该是使用一个像样的PDF工具包大约一个小时,前提是您熟悉这个工具包。编写这个工具包是几个人多年的工作。
https://stackoverflow.com/questions/3461659
复制相似问题