5

pathを使用して、アプリケーション内から Preview.appで PDF ファイルを喜んで開くことができます。

[NSWorkspace.sharedWorkspace openFile: path];

ただし、特定のページでそのファイルを使用して Preview.app を起動したいと考えています。たとえば、特定のNSAppleEventDescriptorinを渡すことによって、これは可能ですかNSWorkspace

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

方法?QuickLook はこれを行うことができ、私はこの動作を模倣したいと考えています。

助けてくれてありがとう!

4

1 に答える 1

3

これは NSAppleScript を介して行うことができます。

ファイルを開き、指定されたページにジャンプする NSWorkspace カテゴリ メソッドを次に示します。

- (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];
}

これが何をするかは次のとおりです。

  • NSWorkspace インスタンスで openFile: を呼び出す
  • プレビューのページへ移動ダイアログを開く
  • ダイアログが表示されるまで待ちます
  • アクティブにするページのキープレスをシミュレートしてから、Return キーを押します。

次に、次のようにメソッドを呼び出すことができます。

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

免責事項: ユーザーが [ページに移動...] メニュー項目のカスタム キーボード ショートカットを定義すると、これは機能しなくなります。

于 2013-10-03T17:12:36.743 に答える