Quick Lookのウィンドウを開かず、サムネイル画像やプレビューのデータをファイルとして保存したいときは、qlmanageに-o <出力先ディレクトリ>を付ける。
$ mkdir out
$ qlmanage -t -o out sample.txt
Testing Quick Look thumbnails with files:
sample.txt
* /path/to/sample.txt produced one thumbnail
Done producing thumbnails
$ ls out
sample.txt.png
-oを付けるとウィンドウが開かないため、SSH接続先やCIなど、画面のない環境でも使える。実行例はmacOS 27.0.1のもの。
サムネイルをPNGで保存する
-tと-oを組み合わせると、サムネイルが<ファイル名>.pngとして出力先に保存される。複数のファイルを並べると、まとめて生成できる。
$ qlmanage -t -o out sample.txt t.html pic.png
$ ls out
pic.png.png
sample.txt.png
t.html.png
出力ファイル名は、元のファイル名に.pngが付く。pic.pngのサムネイルはpic.png.pngである。
画像の大きさは-sオプションで指定する。
参考: 【qlmanage】サムネイルのサイズと拡大率を指定する (-s, -f)
プレビューを.qlpreviewディレクトリに保存する
-pと-oを組み合わせると、プレビューが<ファイル名>.qlpreviewというディレクトリに保存される。
$ qlmanage -p -o out sample.txt s.docx
$ ls -R out
s.docx.qlpreview
sample.txt.qlpreview
out/s.docx.qlpreview:
Preview.html
PreviewProperties.plist
out/sample.txt.qlpreview:
Preview.url
.qlpreviewディレクトリの中身は、ファイルの種類によって異なる。
| ファイルの種類 | ディレクトリの中身 |
|---|---|
| テキスト、PNG、HTML、RTF、PDF | Preview.url |
| docx | Preview.html、PreviewProperties.plist |
Preview.urlは、元のファイルへのfile://のURLを1行だけ書いたファイルである。プレビュー用のデータは作られない。
$ cat out/sample.txt.qlpreview/Preview.url
file:///path/to/sample.txt
docxのようにジェネレータがHTMLへ変換するファイルでは、Preview.htmlにプレビューのHTMLが出力される。PreviewProperties.plistには、プレビューの幅(Width)や高さ(Height)、文字コード(TextEncoding)などの属性が入る。
$ head -c 100 out/s.docx.qlpreview/Preview.html
<html><head><meta charset="utf-8"><meta name="viewport" content="width=600, maximum-scale=4.0"><title>s.docx</title>
標準出力には、生成したプレビューの種類がpublic.htmlやpublic.plain-textなどのコンテンツタイプで表示される。
* /path/to/s.docx produced a preview with data of type public.html
* /path/to/sample.txt produced a preview with a URL of type public.plain-text
出力先のディレクトリを先に作る
-oは出力先のディレクトリを作らない。存在しないディレクトリを指定すると、-pではエラーになる。
$ qlmanage -p -o nodir sample.txt
Can't write nodir/sample.txt.qlpreview/Preview.url: Error Domain=NSCocoaErrorDomain Code=4 ...
...
* sample.txt produced a preview with a URL of type public.plain-text
$ echo $?
0
エラーが表示されても、続けてproduced a previewと表示され、終了コードは0である。スクリプトで終了コードを見ても、失敗を検知できない。
-tではエラーにならず、produced one thumbnailと表示される。それでもファイルは作られない。-oを使う前にmkdir -pでディレクトリを作る。
$ qlmanage -t -o nodir sample.txt
* /path/to/sample.txt produced one thumbnail
$ ls nodir
ls: nodir: No such file or directory
同名のファイルは上書きされる
出力先に同名のサムネイルがあると、確認なしで上書きされる。
$ qlmanage -t -s 256 -o out sample.txt
$ qlmanage -t -o out sample.txt
$ file out/sample.txt.png
out/sample.txt.png: PNG image data, 128 x 128, 8-bit/color RGBA, non-interlaced
1回目の256ピクセルのサムネイルは、2回目の実行で128ピクセルのサムネイルに置き換わった。
