从PDF文件中获取CGImage

时间:2009-01-14 21:42:54

标签: c macos pdf quartz-graphics

我有一个PDF文件,其中每个页面都是(LZW)TIFF文件。我知道这是因为我创造了它。我希望能够加载它并将其保存为一堆TIFF文件。

我可以用CGPDFDocumentCreateWithURL打开PDF文件,然后获取一个页面。我甚至可以将页面绘制到屏幕上。

我想要做的是将页面绘制成一个bitmapContext,这样我就可以使用CGBitmapContextCreateImage将图像转换为CGImageRef。但是,为了创建位图上下文,我需要知道图像的大小和分辨率。我似乎无法找到如何获取CGPDFDocument或CGPDFPage来告诉我该页面上图像对象的分辨率。

有没有更简单的方法来做到这一点,我没有意识到?

感谢。

1 个答案:

答案 0 :(得分:1)

Ghostscript会在这里为您效劳:

gs -sDEVICE=tiff32nc -sOutputFile = foo-Page%d.tif foo.pdf

对于2页文档foo.pdf,你应该得到:

  • FOO-Page1.tif
  • FOO-Page2.tif

从内存中我认为GS的输出分辨率是包含页面的输出分辨率,不一定是嵌入文件的分辨率(除非它们与开头的内容相同)。

如果是这种情况,并且您希望恢复最初的图像,则可以使用iText(java)或iTextSharp(。net)到get to the image在将内容流转换为PdfImage iirc之后,将内容流(即字节)以您选择的格式写入磁盘。

希望ghostscript选项适用于保存编写另一个实用程序......