Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PDF文件中获取CGImage_C_Macos_Pdf_Quartz Graphics - Fatal编程技术网

从PDF文件中获取CGImage

从PDF文件中获取CGImage,c,macos,pdf,quartz-graphics,C,Macos,Pdf,Quartz Graphics,我有一个PDF文件,其中每个页面都是一个(LZW)TIFF文件。我知道这是因为我创造了它。我希望能够加载它并将其保存为一组TIFF文件 我可以用CGPDFDocumentCreateWithURL打开PDF文件,并获得一个页面。我甚至可以在屏幕上画这一页 我要做的是将页面绘制到bitmapContext中,这样我就可以使用CGBitmapContextCreateImage将图像绘制到CGImageRef中。但是,为了创建位图上下文,我需要知道图像的大小和分辨率。我似乎无法找到如何获取CGPDF

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

我可以用CGPDFDocumentCreateWithURL打开PDF文件,并获得一个页面。我甚至可以在屏幕上画这一页

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

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

谢谢。

将在这里为您服务:

gs-sOutputFile=foo页面%d.tif foo.pdf

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

  • foo-Page1.tif
  • foo-Page2.tif
从内存来看,我认为GS的输出分辨率是包含页面的分辨率,而不一定是嵌入文件的分辨率(除非它们一开始是相同的)

如果是这种情况,并且您希望恢复原始分辨率的图像,则可以在将内容流转换为PdfImage iirc后,使用(java)或(.net)来恢复内容流(即字节),并将其以您选择的格式写入磁盘


希望ghostscript选项适用于另一个实用程序…

我将使用pdfimages命令(来自poppler utils)以其本机分辨率提取图像,而不是让gs渲染它。但是是的,有一些lib可以通过编程来实现。