この記事はIoTLTアドベントカレンダー19日目です!(本当に大遅刻です.ごめんなさい...)
さて,ご時世もあってオフラインでプレゼンする機会は減りましたが,思い返せばオフラインでプレゼンっていうのは問題が多かったですよね.
プロジェクターとパソコンの相性,コネクタ問題,スライドサイズ....めんどくさい!
そんなめんどくささを解決するために,プロジェクターの入力にラズパイを繋ぎっぱなしにしておく方法を思いつきました.
繋ぎっぱなしのラズパイにスライドをアップロード・遠隔操作することでプロジェクターとパソコンの相性問題を解決します!
RaspberryPi(CUI)でPDFを映したい
まずは第一段階,RaspberryPiからプレゼン資料(pdf)をHDMI出力したいです.
コストを考えてRaspberryPiのモデルはZeroを選びました.
「pdfを出力するだけにそんなスペックは要らないだろう!」と思ったわけです.
ですが,やはりRaspberryPi zeroはスペック的に貧弱.少しでも処理に余裕が持たせられるようにOSはRaspbian Lite(CUI)を選択しました.
と,なると.X WindowなどGUIシステムがない環境でPDFを表示する必要が出てきます.
実現は簡単で,表示したいデータをframebufferというメモリ領域に直接書き込めばHDMIにそのまま出力されます.
んで,世の中にはPDFをframebufferを使って表示するアプリがいくつかあります.便利ですね!
では何を使ったらいいんでしょうか...? いろいろ試してみました.
うまくいかなかったやつ
・fbi
・fbpdf
・fbgs
などなど...他にも試した気がするがどれもうまくいかなかった.
画質が悪かったり,raspberryPi zeroでは動作が重いものが多い.
あと,とにかくmacが出力したpdfに対応しているものが無い!
私はmacのkeynoteでプレゼン資料を作るので,これは致命的.(フォントの関係やpdfの仕様の違いなど問題の闇は深そう)
うまくいったやつ(jfbview)
サクサク動作でmac PDFも問題なく映せる,そんな夢のようなPDF Viewrがjfbviewです.
https://github.com/jichu4n/jfbview
インストールする
環境は以下の通り.
・Raspberry Pi Zero W Rev 1.1
・Raspbian GNU/Linux 10 (buster)
まずは公式リポジトリのリリースからdebファイルをダウンロードする.
https://github.com/jichu4n/jfbview/releases
いろんな環境向けにパッケージが用意されている.
今回私の環境はRaspberryPiでOSのバージョンはbusterなので, jfbview_0.6.0.buster_rpi.deb
をダウンロードする.自分の環境に合わせて適宜選んで欲しい.
$ wget https://github.com/jichu4n/jfbview/releases/download/0.6.0/jfbview_0.6.0.buster_rpi.deb
ダウンロードしたパッケージをインストールする
$ sudo apt install ./jfbview_0.6.0.buster_rpi.deb
これでインストール完了!簡単!
使ってみる
使い方は簡単,基本は映したいファイルを渡すだけ.
オプションも充実で
・ --zoom_to_fit
・・・ 表示サイズを画面にフィットさせる
・ --cache_size=N
・・・ ページを先読み(キャッシュ)する数,多ければ多いほど高速なめくりに対応できるがRAMをいっぱい使う
など,他にも色々ある.
$ jfbview --zoom_to_fit iotlt.pdf
矢印キーの上下でページ送り. q
キーで終了する.
その他基本操作はvimに似たような感じ,詳しくは以下manを参照.
https://htmlpreview.github.io/?https://github.com/jichu4n/jfbview/blob/master/doc/jfbview.1.html
まとめ
無事,サクサクにpdfが表示されました!(しかもmac出力の)
実際にプロジェクターにつないでテストもしてみましたが,問題なく動いています.
あとはネットワークを使ってファイルをアップロードしたり,スライドを遠隔操作したりする部分を作りたいですね!(そうしないとIoTじゃないので)
では,皆さん良い年末を〜