Edited at

コマンドラインでThinreportsのレイアウトファイルからPDFを生成するツールを作ったメモ

More than 1 year has passed since last update.

Thinreports Templete CLIというコマンドラインツールをつくりました。

コマンドラインでThinreportsの帳簿レイアウトからPDFを生成するツールです。Wordで手入力したりするのがつらい人々向けのツールです。


Step 0: 分かる人向けのお試しコマンド

$ wget https://raw.githubusercontent.com/mh61503891/thinreports-template-cli/master/test/fixtures/card.tlf

$ gem install thinreports-template-cli
$ thinreports-template-cli ./card.tlf --help
thinreports-template-cli tlf [options]

Basic Options
--format=table|csv|json|pdf

Thinreports Layout File Options
--name=[NAME] 本名またはハンドルネームを記載してください。
--twitter=[TWITTER] Twitterのアカウントをお持ちのかたはIDを記載してください。
--desc=[DESC] 自己紹介の説明文を記入してください。
$ thinreports-template-cli ./card.tlf --name="M. Higashino" --twitter=61503891 --desc="猫です。" --format=pdf > ./card.pdf && open ./card.pdf

完🎉


Step 1: 帳簿レイアウトの作成

ここから少し詳しい説明です。例として、Thinreports Editorで下図のような帳簿レイアウトを作成して card.tlf として保存します。

このファイルは card.tlf からダウンロードできます。必要な方は以下のコマンドでダウンロードしてください。

$ wget https://raw.githubusercontent.com/mh61503891/thinreports-template-cli/master/test/fixtures/card.tlf


Step 2: Thinreports Templete CLIのインストール

以下のコマンドでインストールします。

$ gem install thinreports-template-cli


Step 3: テキストブロックをコマンドラインオプションで見る。

thinreports-template-cli コマンドに、先ほど作成した帳簿レイアウトのファイル(card.tlf)を指定して --help を指定するとテキストブロックのIDがコマンドラインオプションにマッピングされて表示されます。

$ thinreports-template-cli ./card.tlf --help

thinreports-template-cli tlf [options]

Basic Options
--format=table|csv|json|pdf

Thinreports Layout File Options
--name=[NAME] 本名またはハンドルネームを記載してください。
--twitter=[TWITTER] Twitterのアカウントをお持ちのかたはIDを記載してください。
--desc=[DESC] 自己紹介の説明文を記入してください。


Step 4: テキストブロックのテーブル表示

こんな感じでテキストブロックが一覧表示されます。

$ thinreports-template-cli ./card.tlf

+-------+------+-------+--------+-------------+------------+----------+--------+--------+---------+---------------------------------------------------------+
|id |ref_id|display|multiple|default_value|option_value|real_value|fmt_base|fmt_type|fmt_value|desc |
+-------+------+-------+--------+-------------+------------+----------+--------+--------+---------+---------------------------------------------------------+
|name | |true |true | | | | | | |本名またはハンドルネームを記載してください。 |
|twitter| |true |false | | | |@{value}| | |Twitterのアカウントをお持ちのかたはIDを記載してください。|
|desc | |true |true | | | | | | |自己紹介の説明文を記入してください。 |
+-------+------+-------+--------+-------------+------------+----------+--------+--------+---------+---------------------------------------------------------+


Step 5: オプションの指定

テキストブロックのIDはコマンドラインオプションになっているので適当に指定してあげます。値に関する項目の意味は下記の通りです。


  • default_value: 帳簿レイアウトで指定されているデフォルト値

  • option_value: コマンドラインオプションで指定した値

  • real_value : 実際に出力される値

$ thinreports-template-cli ./card.tlf --name="M. Higashino" --twitter=61503891 --desc="猫です。"

+-------+------+-------+--------+-------------+--------------------+--------------------+--------+--------+---------+---------------------------------------------------------+
|id |ref_id|display|multiple|default_value|option_value |real_value |fmt_base|fmt_type|fmt_value|desc |
+-------+------+-------+--------+-------------+--------------------+--------------------+--------+--------+---------+---------------------------------------------------------+
|name | |true |true | |M. Higashino |M. Higashino | | | |本名またはハンドルネームを記載してください。 |
|twitter| |true |false | |61503891 |@61503891 |@{value}| | |Twitterのアカウントをお持ちのかたはIDを記載してください。|
|desc | |true |true | |猫です。|猫です。| | | |自己紹介の説明文を記入してください。 |
+-------+------+-------+--------+-------------+--------------------+--------------------+--------+--------+---------+---------------------------------------------------------+


Step 6: PDFファイルの生成

--format=pdf とオプションを指定してあげれば標準出力にPDFファイルが出力されますのであとはリダイレクトするなりパイプでつないで lpr でプリンタへ投げるなりします。

$ thinreports-template-cli ./card.tlf --name="M. Higashino" --twitter=61503891 --desc="猫です。" --format=pdf > ./card.pdf && open ./card.pdf

まぁまぁこれで元気がでてきました。