1

NSImagePDFPage对象中获取可变分辨率的最佳方法是什么?

我有一个显示在 a 中的 PDF 文件PDFView,我需要捕获当前页面并存储为NSImage. 此外,我需要能够改变页面的分辨率 (DPI)。

使用此代码,生成的图像对于 A4 页面只有 595x841。我需要比这更高的分辨率(高达 300DPI):

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

1 回答 1

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];
于 2013-03-25T13:29:30.067 回答