たくさんある、PPTをPDFに変換したいと思った。
まぁ、PPT→PPTXでもインだけど、PDFにしちゃう方がポータビリティがいいんですよね。
どうせ、PPTXを編集することなんてないんだし。
PDFの方が、Evernoteに放り込んだり、検索可能にしたり、Explorer/Finderのプレビューでパパッと見られて色々便利なんだよね。
keynote を使う場合。
開いているファイルを、PDFに変換して保存する
var app = Application("Keynote") var doc = app.Document() //doc.text = "test" //app.documents.push(doc) app.documents[0].save({ in : Path("/Users/takuya/Desktop/sample2.key") }) console.log(app.documents[0].name()) app.documents.at(0).export app.documents.at(0).export({ as : "PDF", to : Path("/Users/takuya/Desktop/sample2.pdf") })
これで、pptx を keynotes 形式に変換したり、keynotes 形式をPDFに変換したりできる。
楽チンですが・・・MicrosoftのOfficeで変換したときと若干異なるんですよね。
PowerPoint だと動かない
同じように やったけど動かないんだ。
var app = Application("Microsoft PowerPoint") var doc = app.presentations.at(0) console.log(doc.name()) doc.save({ as : "PDF", in : "/Users/takuya/Desktop/sample2.pdf" })
AppleScript だと辛うじてうごく
set out to POSIX file "/Users/takuya/Desktop/test.pdf" tell application "Microsoft PowerPoint" save active presentation in out as save as PDF end tell
ダイアログが出てくるのだが、動いてるとは思えない。
もう半年くらい、この原因とたかってて
ある日、ひらめいた。Sandbox 化が原因だったんじゃ?
とりあえずサンドボックス領域を調べてみた。
ファイルができてるではないか
ということで、Automator・ApplescriptでPowerpointで変換したら、次のパスに作られる。
~/Library/Containers/com.microsoft.Powerpoint/Data.pdf
該当資料を探した。
After studying the Document "App Sandbox in Depth" it seems just consequent for me what Microsoft did with Office 2016 and AppleScript. Regarding this document sandboxed apps can just write automatically (triggered by AppleScript) within the path ~/Library/Containers/com.microsoft.excel/. So doing something like this tell application "Microsoft Excel" tell active sheet save in path to temporary items from user domain as PDF file format end tell end tell should work. Files can afterwards be found in ~/Library/Containers/com.microsoft.excel/Data/Library/Caches/TemporaryItems/
ほかにも
http://eyeballonly.com/blog/2014/02/20/macosx-sandbox/
http://piyocast.com/as/archives/category/applescriptobjc/nshomedirectory/
などで、散見された。
Sanbox 化されたアプリケーションへのAutomator・ScriptEditorについて
https://developer.apple.com/library/mac/qa/qa1888/_index.html
Sandboxで、アクセス可能なディレクトリにDesktopがない。アプリ側でパーミッションを要求する感じ。でも動いてないんだよなぁ
しかしながら「テキストエディット」のような、Apple謹製のAppは、Sandboxされているが、Desktopへファイル保存が可能である。
ということは、Microsoftのプログラム側にバグがある。マイクロソフトがPowerPointのプログラムでSandboxを正しく扱えていないということしか考えられない。