LoginSignup
5
6

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-06-09

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

image.png

完🎉

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

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

image.png

このファイルは 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

image.png

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

5
6
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
5
6