我正在開發一個OSX項目,用戶可以從中選擇需要生成PDF的文檔集合(來自任何應用程序)。標準的Macintosh打印對話框有一個PDF按鈕,其中有許多與PDF相關的命令,包括「另存爲PDF ...」。但是,我需要生成PDF文件而無需用戶交互。我理想的是希望這可以用於任何類型的文檔。如何以編程方式從OSX上的任何文檔生成PDF?
這裏是我到目前爲止探索的選項:
- Automator動作。有一個用於Automator的PDF庫,但它提供了處理PDF文件的操作,而不是生成它們。 Finder有一個打印任何文件的動作,但只能打印一個真實的打印機。
- AppleScript。某些應用程序可以生成PDF文件(例如,如果您將'doc.pdf'中的doc保存到Pages中,它將生成PDF(但這僅適用於Pages) - 我需要支持任何類型的文檔) 。
- 自定義的打印機。我可以創建一個虛擬打印機驅動程序,然後使用Automator的行動,但我不喜歡在打印列表中的一個額外的打印機混淆用戶的想法。
我希望有一些方法可以與活動應用程序交互,就好像用戶正在執行以下步驟一樣:
- Do Cmd-P(打開打印對話框)
- 點擊 「PDF」 按鈕
- 選擇 「另存爲PDF ...」(在菜單的第二項)
- 鍵入文件名在保存對話框
- 點擊 「保存」
如果這是最好的方法(是嗎?),那麼真正的問題是:我如何將UI事件發送到外部應用程序(擊鍵,鼠標事件,菜單選擇)?
更新:我只想澄清一點:我需要轉換爲PDF文件是由其他應用創建的文檔。例如,用戶可能會選擇Word文檔或Numbers電子表格或OmniGraffle繪圖或Web頁面。共同點是每個文檔都有一個關聯的應用程序,並且該應用程序知道如何打印它(並且OSX知道如何將打印輸出呈現爲PDF文件)。
因此,可可開發中心的樣本並沒有幫助,因爲它們是從我的應用程序生成PDF。
謝謝!那正是我正在尋找的指針。 – 2008-11-10 09:51:06
-1這似乎是一個好方法,如果你打開Safari瀏覽器中的一個文件,但我敢肯定,你不想正確的代碼爲每一種可能的應用 – mcgrailm 2010-12-13 15:19:50