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

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

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

有没有我没有意识到的更简单的方法?

谢谢。

最佳答案

Ghostscript将在这里为您服务:

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

对于2页文档foo.pdf,您应该获得:


foo-Page1.tif
foo-Page2.tif


从内存上看,我认为GS的输出分辨率是所含Page的分辨率,而不一定是嵌入式文件的分辨率(除非它们的开头是相同的)。

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

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

关于c - 从PDF文件中获取CGImage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/444815/

10-14 08:59
查看更多