私はOSXのプロジェクトに取り組んでおり、ユーザーはPDFを生成するために必要なドキュメントのコレクションを(任意のアプリケーションから)選択できます。標準のMacintosh印刷ダイアログには、「PDFとして保存...」を含むPDF関連のコマンドが多数あるPDFボタンがあります。ただし、ユーザーの操作を必要とせずにPDFファイルを生成する必要があります。理想的には、これがあらゆるタイプのドキュメントで機能することを望んでいます。
これまでに調べたオプションは次のとおりです。
- Automatorアクション。Automator用のPDFライブラリがありますが、PDFファイルを生成するのではなく、操作するためのアクションを提供します。任意のファイルを実際のプリンターにのみ印刷するためのFinderアクションがあります。
- AppleScript。一部のアプリケーションにはPDFファイルを生成する機能があります(たとえば、「test.pdf」に「save doc」を送信すると、PDFが生成されます(ただし、これはPagesでのみ機能します-あらゆるタイプのドキュメントのサポートが必要です) 。
- カスタムプリンター。仮想プリンタードライバーを作成してからオートマターアクションを使用することもできますが、ユーザーを印刷リスト内の追加のプリンターと混同するという考えは好きではありません。
私の希望は、ユーザーが次の手順を実行しているかのように、アクティブなアプリケーションと対話する方法があることです。
- Cmd-Pを実行します(印刷ダイアログを開きます)
- 「PDF」ボタンをクリックしてください
- 「PDFとして保存...」(メニューの2番目の項目)を選択します
- 保存ダイアログにファイル名を入力します
- 「保存」をクリックします
それが最善のアプローチである場合(そうですか?)、本当の問題は次のとおりです。UIイベントを外部アプリケーション(キーストローク、マウスイベント、メニュー選択)に送信するにはどうすればよいですか?
更新: 1つのポイントを明確にするために:PDFに変換する必要があるドキュメントは、他のアプリケーションによって作成されたドキュメントです。たとえば、ユーザーはWordドキュメント、Numbersスプレッドシート、OmniGraffle図面、またはWebページを選択できます。共通の分母は、これらのドキュメントのそれぞれに関連付けられたアプリケーションがあり、そのアプリケーションはそれを印刷する方法を知っている(そしてOSXは印刷出力をPDFファイルにレンダリングする方法を知っている)ということです。
したがって、Cocoa Dev Centralのサンプルは、私のアプリケーションからPDFを生成するためのものであるため、役に立ちません。