c - 从 PDF 文件中获取 CGImage

标签 c macos pdf quartz-graphics

我有一个 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 的输出分辨率是包含页面的分辨率,不一定是嵌入文件的分辨率(除非它们一开始就相同)。

如果是这种情况,并且您想要恢复图像的原始分辨率,则可以使用 iText (java) 或 iTextSharp (.net) 至get to the image将内容流转换为 PdfImage iirc 后,将其以您选择的格式写入磁盘。

希望 Ghostscript 选项适用于节省编写另一个实用程序...

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

相关文章:

c++ - 图像数据矩阵中的偏移值及其对整数值的影响

Xcode 使用苹果 native 框架将原始数据从 8 位/ channel 转换为 16 位/ channel

image - 将图像 (300 DPI) 写入 PDF,而不损失质量

pdf - 如何从 PDF 文件中提取数据,同时跟踪其结构?

python 到 c 的过渡

c - 在 C 中创建大小在运行时决定的数组时出错

c - 输入后的程序 block

html - 使用 CSS 'backdrop-filter:blur' 在 Chrome 中呈现/闪烁/故障问题

xcode - 如何从我的 XCode Assets 目录中获取 CGImage

php - 如何使用 HTML2PDF 设置横向