1

可変解像度でオブジェクトNSImageからを取得する最良の方法は何ですか?PDFPage

に表示されている 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 に答える