Q. なんでこんな周りくどいことしているの?
A. 印刷用PDF(PDF/X-1a)形式に変換するにはDocker環境が必要だから
Adobe Acrobat ProなしでグレースケールPDFにすることができます。脱Adobeがはかどりますねぇ……!
## 環境
- Windows 11 Home
- WSL2(Microsoft Store版)
- Ubuntu 22.04(同上)
- Node.js(20.16.0)
- Vivliostyle(8.13)
## 大まかな流れ
1. WSL2とUbuntuを入れる
2. Ubuntuログイン・初期設定
3. rootに移動してNode.js/Dockerインストール
4. 指定ユーザーをDocker権限に入れてUbuntuを再起動
5. workdirの作成
6. Gitリポジトリをclone(任意)
7. Docker実行
## 詳細
### 1. WSL2とUbuntuを入れる
Microsoft StoreでWSL2とUbuntuを入れます。適当に検索してインストールすればOKです。
### 2. Ubuntuログイン・初期設定
Win11 Homeの設定で「コントロールパネル→プログラムと機能→Windowsの機能の有効化または無効化」を開きます。設定窓を開いたら「Linuxサブシステム」と「仮想マシンプラットフォーム」にチェックして再起動。
再起動後、ダウンロードしたUbuntuを起動してユーザー名とパスワードを入力します。
### 3. rootに移動してNode.js/Dockerインストール
`root`に移動し、Node.jsとDockerをインストールします。
#### Node.js設定
```
# curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
# echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
```
#### Docker設定
```
# sudo apt update
# sudo apt install ca-certificates curl
# sudo install -m 0755 -d /etc/apt/keyrings
# sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# sudo chmod a+r /etc/apt/keyrings/docker.asc
# echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```
#### インストール
※ついでにUbuntuのupgradeを行っています
```
# sudo apt update && sudo apt upgrade -y
# sudo apt install -y nodejs docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
### 4. 指定ユーザーをDocker権限に入れる
rootユーザーで実行しない場合、ここで指定ユーザーをDocker権限に入れておきます。今回は2で設定したユーザーをそのまま使うので、ユーザー作成部分は省略します。
```
# sudo usermod -aG docker <2で作成したユーザー名>
```
ユーザー権限を与えたら、Ubuntuを再起動させます。
### 5. 2のユーザーでworkdirディレクトリーの作成
2のユーザーでログインした後、workdirディレクトリを作成します。この時に他のディレクトリ名で行わないこと。7の動作でコケます。
```
$ mkdir workdir && cd workdir
```
### 6. Gitリポジトリをclone(任意)
もしGitで原稿を管理している場合、ここで原稿をcloneします。
```
$ git clone <リポジトリのURL> && cd <リポジトリ名>
```
### 7. Docker起動
```
$ docker run \
--env "DISPLAY=${DISPLAY:-:0.0}" \
--volume /mnt/wslg/.X11-unix/:/tmp/.X11-unix \
--mount "type=bind,source=$PWD,target=/vivliostyle" \
--workdir /vivliostyle/ \
--interactive \
--tty \
--rm \
ghcr.io/vivliostyle/cli:8.13 preview
```
- [Vivliostyle cli · GitHub](https://github.com/vivliostyle/vivliostyle-cli/pkgs/container/cli)
上記のリンクからVivliostyleのCLIバージョンを調べます。バージョンを確認後、`ghcr.io/vivliostyle/cli:8.13`の8.13を任意の数字にしてください。
これでプレビューが出たらひとまず完了です。お疲れさまでした。
## Ubuntu運用でのコツ
### WSLにあるファイルをWindowsのVSCodeで開けない?
できます。VSCodeの「WSL」プラグインを導入した後に、Ubuntu側の原稿ディレクトリで「`code .`」と実行します。ただ、Ubuntuでのプレビューが乱れることが多いので、Ubuntu側で編集しない方がいい気がします。あくまで印刷用PDFを出力する程度に使用することをおススメします。
### preview以外のコマンドを使いたい
```
$ docker run \
--env "DISPLAY=${DISPLAY:-:0.0}" \
--volume /mnt/wslg/.X11-unix/:/tmp/.X11-unix \
--mount "type=bind,source=$PWD,target=/vivliostyle" \
--workdir /vivliostyle/ \
--interactive \
--tty \
--rm \
ghcr.io/vivliostyle/cli:8.13 <コマンド>
```
一番下の行がコマンドになるので、お好みのコマンドを入力してください。
### 印刷用PDF(グレースケール)を出力するにはどうすればいい?
```
$ docker run \
--env "DISPLAY=${DISPLAY:-:0.0}" \
--volume /mnt/wslg/.X11-unix/:/tmp/.X11-unix \
--mount "type=bind,source=$PWD,target=/vivliostyle" \
--workdir /vivliostyle/ \
--interactive \
--tty \
--rm \
ghcr.io/vivliostyle/cli:8.13 build --preflight press-ready --preflight-option gray-scale
```
一番下のコマンドで`--preflight press-ready`オプションを実行します。この際に`--preflight-option`で`gray-scale`を設定することで、グレースケールPDF(KのみのPDF)になります。
## 関連リンク
- [[Vivliostyle CLIのインストール・アップデート]]
- [[【Mastodon・Misskey】Node.jsのアップデート方法をおさらいする]]
- [[Adobe CCが無くても技術同人誌は出せるのか]]
Fediverseに関係ないのにリンクがある?気のせいだ。
## 参考リンク
- [Installing from source - Mastodon documentation](https://docs.joinmastodon.org/admin/install/)
- [Install Docker Engine on Ubuntu | Docker Docs](https://docs.docker.com/engine/install/ubuntu/)
- [Docker入門 | さくらのナレッジ](https://knowledge.sakura.ad.jp/13265/)
- [Vivliostyle CLI](https://docs.vivliostyle.org/ja/vivliostyle-cli.html)
- [Vivliostyle CLIのDockerコンテナからプレビューを表示する - Qiita](https://qiita.com/U-1F992/items/c75ffa7373a49d216862)
なぜMastodonインストールサイトがあるかって?Node.jsインストール時にいつもお世話になるからだよ!!!