1

私は小さなデモを書くだけです。その機能はすべて、QLPreviewView を使用して Pages ファイルをすばやく表示することです。アプリを実行すると、スクロールして Pages ファイルのコンテンツを表示できます。[PNG に保存] ボタンをクリックすると、アプリは現在表示されているコンテンツを PNG 画像ファイルに保存します。save メソッドで実装を取得できます。そのメソッドで2つの実装を試しましたが、どちらも機能しませんでした。ウィンドウの背景色で満たされた空白の画像を取得しました。ここでアドバイスしますか?ありがとう。

コードとアプリのスクリーン ショットは、http://dr.ibuick.com/updUにあります。

#import <Cocoa/Cocoa.h>
#import <Quartz/Quartz.h>
#import <QuickLook/QuickLook.h>
#import "IBAppDelegate.h"

@interface IBAppDelegate (QLPreviewItem) <QLPreviewItem>

@end

@implementation IBAppDelegate (QLPreviewItem)

    - (NSURL *)previewItemURL
    {
        return self.resolvedFileURL;
    }

    - (NSString *)previewItemTitle
    {
        return [self.originalURL absoluteString];
    }

@end

@implementation IBAppDelegate

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    {
        _resolvedFileURL = [NSURL fileURLWithPath:@"/Users/buick/Desktop/1.pages"];
        _originalURL = [NSURL fileURLWithPath:@"/Users/buick/Desktop/1.pages"];
        _previewView = [[QLPreviewView alloc] initWithFrame:NSMakeRect(0, 50, 480, 360) 
                        style:QLPreviewViewStyleNormal];
        [_previewView setPreviewItem:self];
        [self.window.contentView addSubview:_previewView];
    }

    - (IBAction)save:(id)sender {

        // Method 1

        [_previewView lockFocus];
        NSBitmapImageRep* rep = [_previewView     
            bitmapImageRepForCachingDisplayInRect:_previewView.bounds];
        [_previewView cacheDisplayInRect:_previewView.bounds toBitmapImageRep:rep];
        [_previewView unlockFocus];
        [[rep representationUsingType:NSPNGFileType properties:nil] 
            writeToFile:@"/Users/buick/Desktop/1.png" atomically:YES];

        // Method 2
        [_previewView lockFocus];

        NSBitmapImageRep *bits;
        bits = [[NSBitmapImageRep alloc]
            initWithFocusedViewRect:[_previewView visibleRect]];
        [_previewView unlockFocus];
        NSData *imageData;
        NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber             
            numberWithFloat:0.9] forKey:NSImageCompressionFactor];
        imageData = [bits representationUsingType:NSJPEGFileType     
            properties:imageProps];
        [imageData writeToFile:@"/Users/buick/Desktop/1.png" atomically:YES];
    }
@end
4

1 に答える 1

0

わかりました。わかったと思います。初期化時に QLPreviewView タイプを QLPreviewViewStyleCompact に設定してみてください。

pv = [[QLPreviewView alloc] initWithFrame:pv.bounds
                                    style:QLPreviewViewStyleCompact];

次に、このカテゴリを使用します

Matt Gemmel の NSImage+QuickLook...

ギットハブ

            NSImage *image = [NSImage imageWithPreviewOfFileAtPath:[[self.files objectAtIndex:i] path] ofSize:NSMakeSize(1200, 1920) asIcon:NO];
于 2013-08-08T19:57:07.003 に答える