2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EPUBからのPDF生成用としてVivliostyle CLIを導入した

Posted at

 EPUB制作時の校正用PDF生成目的でVivliostyle Viewerをローカルマシン内にサーバ起動する形で使ってきたのですが(参考)、先日ブラウザからのPDF出力で白紙ページが大量に入ってしまうChromeのバグを踏んでしまい、いい機会だったのでVivliostyle開発者の村上(@MurakamiShinyu)さんに助言をいただいて、上記参考先のコードを書いたときにはまだ無かったローカル環境向けのVivliostyle CLIに切り替えましたのでメモを残しておきます。環境はmacOS13.6です。

Vivliostyle CLIの環境構築

 まず、node.jsを入れます(参考)。homebrewは入っていることが前提です。ターミナルで
brew install node

これだけ。

node --version

でnodeのバージョンが表示されればOKです。

 次にVivliostyle CLIを入れます。同じくターミナルで

npm install -g @vivliostyle/cli

これだけです。

Perl経由で自動化

 これを従来同様にPerlで実行できるようにしたのが以下のコード。
######追加CSSファイルのパス、表示するepubファイルの順でパスを指定するとepubファイルをVivliostyle CLIで開いてChromiumで表示する。Mac専用。######
use utf8;
#Encodeモジュールをインポート
use Encode qw/encode decode/;

#############################################

#追加CSSファイルのパスを取得
my $addCssPath = $ARGV[0];
$addCssPath = decode('UTF-8', $addCssPath);

#表示するepubファイルのパスを取得
my $epubFilePath = $ARGV[1];
$epubFilePath = decode('UTF-8', $epubFilePath);

#Vivliostyle CLIで処理してChromiumで表示
my $openVivliostyleCliCmd = "osascript -e " . "'" . "tell application \"Terminal\" to do script " . "\"" . "vivliostyle preview " . $epubFilePath . " --style " . $addCssPath . "\"" . "'";
system $openVivliostyleCliCmd;

 ノンブル表示、見開き指定などのための追加CSSは --style オプションを使って外部ファイルを読み込む形としました。その方が修正もしやすいし(追加CSSの参考例はVivliostyle CLIのオンラインマニュアル内にある)。「vivliostyle preview」を指定しているので、Chromiumブラウザが起動してページが表示されます。あとはこれまで通り印刷ウィンドウでPDFを保存を選択して出力するだけです。だいぶ簡単になりましたね。
 なお、その後Chrome側でバグが修正されたとのことなので今は古い方のスクリプトでも問題なくPDF生成はできるようです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?