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、PDFPreview.url
docxPreview.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ピクセルのサムネイルに置き換わった。