将PDF的每个页面提取为图像:设置图像的大小

时间:2012-06-29 13:51:50

标签: objective-c pdf export nsbitmapimagerep

我在下面的代码中设置输出图像的大小时遇到​​了一些问题(我发现这是另一个StackOverflow问题的答案)。

我需要将图像输出为小预览和高分辨率图像。但无论如何,它只输出596 x 842.

我尝试使用setSize方法更改大小,但它只会更改图像的大小,在较大的空白处留下一个小图像。我不能让它适当地扩展。

有人有想法吗?

NSPDFImageRep *img = [NSPDFImageRep imageRepWithContentsOfFile:pdfPath]; 
NSImage *temp = [[NSImage alloc] init]; 
NSBitmapImageRep *rep;

int count = [img pageCount]; 
for(int i = 0 ; i < count ; i++)
{ 
    [img setCurrentPage:i];
    [temp addRepresentation:img];      

    rep = [NSBitmapImageRep imageRepWithData:[temp TIFFRepresentation]];

    NSData *finalData = [rep representationUsingType:NSJPEGFileType properties:nil]; 
    NSString *pageName = [NSString stringWithFormat:@"%d.jpg", [img currentPage]]; 
    [fileManager createFileAtPath:[NSString stringWithFormat:@"%@/%@", localPath, pageName] contents:finalData attributes:nil];
}

提前致谢。

注意:这是Mac OSX应用程序。

1 个答案:

答案 0 :(得分:0)

好像TIFFRepresentation只会返回72dpi的结果,这是非常低的分辨率。

我遇到了同样的问题,并通过重写函数来使用ImageIO framework来解决它。我将PDF作为CGImageSource,并将JPG设置为CGImageDestination。您可以使用CGImageProperties指定分辨率以及许多其他内容。