将PDF渲染为高分辨率NSImage位图文件的方法

我必须将PDF渲染成一个非常高分辨率的图像(比如甚至超过100,000 * 80,000像素)。 我设法通过将渲染分割成几个切片然后使用NSOperationQueue渲染每个切片而不离开ram,基本上使用drawInRect将NSImage pdf表示绘制到新的NSImage中:fromRect:operation:fraction:然后将TIFFRepresentation保存到文件。 一切都很好,多核和快速,我几乎快乐。 无论如何,我需要在渲染它们之后再将这些切片连接起来,以获得单个TIFF文件。 我会尝试使用NSInputStream和NSOutputStream合并文件,但由于每个文件都是完整的tiff表示,因此将原始字节合并在一起会导致无法读取的图片文件。 有没有办法将图像文件合并在一起而不将它们完全加载到ram,即不使用NSImage方法? 否则,我可以保存原始像素字节而不是tiff表示,然后将它们与NSInputStream / NSOutputStream连接,但是我怎样才能将整个字节文件转换为可识别的TIFF,而不再将巨大的东西加载到ram中?     
已邀请:
这种技术可能无法满足您的极端需求(有关详细信息,请参阅消息的结尾),但它有望帮助其他人从PDF获取比使用屏幕截图或快照acrobat工具更高的res图像。它不是特别优雅,但它完成了工作。 基于Acrobat 9 Reader的说明(早期版本和更高版本也可以在Windows XP上使用Snapshot /“Marquee Select”工具时使用)。我想它适用于运行Adobe Reader的大多数其他平台。 (现在我想到它可能会有替代的PDF显示软件,实际上可以毫不费力地执行此操作。也许基于ghostscript的东西?)无论如何,我知道这有效: 放大pdf,直到显示器上的图像具有您正在寻找的像素分辨率。如果您尝试捕获的像素数比显示器上的像素数多(这是使用此技术的唯一原因),您将只能看到屏幕上的部分图像。 根据需要滚动以查找要捕获的PDF的一角。 选择快照/“选取框选择”工具。 单击角,按住鼠标按钮(拖动选择)并将鼠标移动到窗口的对角。 屏幕将开始自动滚动到图像的对角。可能需要一段时间,但它会到达那里。 当你到达相反的边缘时,用手指离开鼠标,你应该在剪贴板中有高分辨率的图像。 现在,根据初始图像的“大小”(Acrobat只能根据PDF中的DPI信息缩放到原始大小的6400%),理论上这种技术可以让你达到100k x 80k像素。对于今天的大多数PC而言,它需要足够的RAM才能在您的复制缓冲区中保存22GB的图像数据...     

要回复问题请先登录注册