2012-12-18 23 views
5

Ben mutlu AncakPDF'leri Preview.app ile belirli bir sayfada açmak mümkün mü?

[NSWorkspace.sharedWorkspace openFile: path]; 

kullanarak uygulama içinden Preview.app ile path bir PDF dosyasını açabilirsiniz, ben belli bir sayfada bu dosya ile Preview.app başlatmak istiyoruz. Bu mümkün, örn. NSWorkspace sitesindeki

- (BOOL)openURLs:(NSArray *)urls withAppBundleIdentifier:(NSString *)bundleIdentifier options:(NSWorkspaceLaunchOptions)options additionalEventParamDescriptor:(NSAppleEventDescriptor *)descriptor launchIdentifiers:(NSArray **)identifiers 

yönteminde belirli bir NSAppleEventDescriptor geçirilmesiyle? QuickLook bunu yapabilir ve bu davranışı taklit etmek isterim.

Yardımlarınız için teşekkürler!

+0

Önizleme hiçbir AppleScript sözlüğüne sahip değildir, bu nedenle QuickLook'un bunu nasıl yaptığını anlamak kolay olmayacaktır. – JWWalker

cevap

3

Bunu NSAppleScript ile yapabilirsiniz. Bu böyle yapıyor İşte

- (void)openPreviewFile:(NSString*)filePath onPage:(int)pageNumber { 
    [self openFile:filePath]; 

    NSString *sysEvents = @"System Events"; 

    NSString *source = [NSString stringWithFormat:@"tell application \"%@\" to activate\ntell application \"%@\" to keystroke \"g\" using {command down, option down}\ndelay %f\ntell application \"%@\" to keystroke \"%i\"\ntell application \"%@\" to keystroke return", 
         @"Preview", sysEvents, 0.5, sysEvents, pageNumber, sysEvents]; 

    NSAppleScript *script = [[[NSAppleScript alloc] initWithSource:source] autorelease]; 
    [script executeAndReturnError:nil]; 
} 

:

  • Çağrı OpenFile:

    İşte dosyasını açar ve belirtilen sayfaya atlar bir NSWorkspace kategori yöntemidir bir NSWorkspace örneğinde

  • Açık Önizleme Sayfası iletişim Sayfasına Git iletişim kutusu
  • İletişim kutusunun görüntülenmesini bekleyin
  • Simu Geç aktive almalısınız sayfanın tuşa basma, sonra Sonra şöyle bir yöntem çağırabilir

dönüş basın:

[[NSWorkspace sharedWorkspace] openPreviewFile:@"/YOUR_PDF.pdf" 
             onPage:3]; 

Yasal Uyarı: kullanıcı için özel bir klavye kısayolunu tanımlar, bu kırar "Sayfaya git ..." menü öğesi!

İlgili konular