PDFに対して、Quartzフィルタをかけてファイルサイズを縮小する(はずの)AppleScriptです。
macOS標準搭載のPreview.appやColorSyncユーティリティを使うことで、PDFに対して各種Quartzフィルタを適用して加工できるようになっています。
▲/System/Library/Filtersに入っているQuartzフィルタ
フィルタする対象は「book20_Cocoa Scripting Course #03_v1.0_sampler.pdf」(16.7MB)です。
縮小した結果は22.2MB。オリジナルよりも大きくなってしまいました(実施前から分かっていたので、驚きはありません)。このテストはメインマシンのmacOS 10.14.6環境で実施しましたが、macOS 11.4betaの環境で実行してみたら22.1MB。オリジナルよりも大きくなるという意味では大差ありませんでした。
サンプルはKeynote書類から書き出したPDFで、AppleScriptによりTOCを添付してあるものです。Cocoa Scripting Course #3のリリース後も「もうちょっとPDF小さくなるんでは?」と試しています。Adobe Acrobatで縮小することでかなり小さくできることはわかっているものの、Acrobatとは縁を切りたい気持ちでいっぱいです。
色をいじくるフィルタについては問題なく動作しています。
AppleScript名:PDFにファイルサイズ縮小のQuartzフィルタをかけて出力.scptd |
— Created 2014-12-26 by Takaaki Naganoya — Modified 2021-04-27 by Takaaki Naganoya — 2021 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "Quartz" use framework "QuartzCore" property QuartzFilter : a reference to current application’s QuartzFilter property NSDictionary : a reference to current application’s NSDictionary property PDFDocument : a reference to current application’s PDFDocument property |NSURL| : a reference to current application’s |NSURL| set aHFSPath to (choose file of type {"com.adobe.pdf"} with prompt "フィルタするPDFを指定してください") set aPOSIX to POSIX path of aHFSPath set aURL to (|NSURL|’s fileURLWithPath:aPOSIX) set bHFSPath to (choose file name with prompt "出力先を指定してください") set bPOSIX to POSIX path of bHFSPath set origPDFdoc to PDFDocument’s alloc()’s initWithURL:aURL set aFilterURL to |NSURL|’s fileURLWithPath:"/System/Library/Filters/Reduce File Size.qfilter" set aQFilter to QuartzFilter’s quartzFilterWithURL:aFilterURL set aDict to NSDictionary’s dictionaryWithObjects:{aQFilter} forKeys:{"QuartzFilter"} origPDFdoc’s writeToFile:(bPOSIX) withOptions:(aDict) |
More from my site
(Visited 287 times, 1 visits today)