2013-03-06 60 views
0

從可變分辨率的PDFPage對象中獲取NSImage的最佳方式是什麼?從不同分辨率的PDFPage中提取NSImage

我有一個PDF文件顯示在PDFView,我需要捕獲當前頁面並存儲爲NSImage。此外,我需要能夠改變頁面的分辨率(DPI)。

使用此代碼,生成的圖像對於A4頁面僅爲595x841。我需要比這更高的分辨率(高達300DPI):

PDFPage *page = _pdfView.currentPage; 
NSData *pageData = page.dataRepresentation; 
NSImage *img = [[NSImage alloc] initWithData:pageData]; 

回答

1

我終於設法排序了這一點:

CGFloat factor = 300/72; // Scale from 72 DPI to 300 DPI 
NSImage *img; // Source image 
NSSize newSize = NSMakeSize(img.size.width*factor, img.size.height*factor); 
NSImage *scaledImg = [[NSImage alloc] initWithSize:newSize]; 
[scaledImg lockFocus]; 
[[NSColor whiteColor] set]; 
[NSBezierPath fillRect:NSMakeRect(0, 0, newSize.width, newSize.height)]; 
NSAffineTransform *transform = [NSAffineTransform transform]; 
[transform scaleBy:factor]; 
[transform concat]; 
[img drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; 
[scaledImg unlockFocus];