pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

iPad3のSIMロックに関する考察とSIM下駄による解除の試みはSoftbank版iPad3にiPhone用のSIM下駄を履かせてみるにいろいろ書いてます。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


チケットレスでの新幹線利用時のPDF請求書をマージして1ページ2枚で印刷する

チケットレスでの新幹線や特急利用時のPDF請求書をA4で個別印刷するのは無駄のような気がする…

最近は出張で新幹線を使う際にチケットレスで乗る状況が身近になりつつありますよね。

今までは、JR東海エクスプレス予約JR東海や西日本発行のクレジットカード向け)やプラスEX(一般のクレジットカードで利用できるチケットレス乗車サービス)がありましたし、JR東日本管内ならモバイルSuicaでのチケットレス乗車ができました。

そして2017年9月30日からは、手持ちのSuica, PASMOなどのICカードを乗車券代わりにしてチケットレス乗車できるスマートEX http://jr-central.co.jp/ex/smart/ が始まりますので、これまで以上にチケットレス乗車が増えることでしょう。

ちなみに余談ではありますが、プラスEXは明日9月2日からはエクスプレス予約に統合されるそうですね。プラスEXは東京-新大阪間に限って利用できましたが、エクスプレス予約では東京-博多間が利用できるので利便性が上がります。

さて、これらのチケットレス乗車ではクレジットカードとの紐付けが必要であり、切符の代金はクレジットカードから決済されます。そして、その領収書は基本的にオンラインでのPDF形式になると思います。というのも、現時点(2017年9月1日)でのチケットレス乗車手段はそのようになっているからです。

ところがこれらのサービスで発行される領収書のPDFは1つの乗車券につき1ファイルが発行される形式です。従って出張回数が多い方は毎月の精算時に結構な枚数の印刷を行うことになります。

でも、これって、なんだかもったいない。

というわけで、複数のPDFを1ファイルにまとめた上で、複数ページを1枚にまとめて印刷することで分量を減らしてみることを考えました。

Adobe Acrobat があれば編集できるけど、ねえ。

身もふたもない解決方法は Adobe Acrobat で編集する方法ですけど、そのためだけに買うものじゃないですよねー。

だから別の方法をやってみることにします。

PDFtk を使えば簡単に合成できる

PDFtk というツールキットがありまして、これを使えば複数のPDFファイルを合成する、なんて作業はあっさり終わります。

具体的には、こんなふうにするだけです。

pdftk 元ファイル1.pdf 元ファイル2.pdf ... 元ファイルn.pdf output 出力ファイル.pdf

と、まあ、ほとんど捻りがない感じですね。このやり方は PDFtk をインストールした Windows, Linux, macOS のいずれでも利用できます。

さらに、bash での実行ならば、こんな風に実行すれば、出力ファイル名に日付が付いて便利に使えます。

 pdftk $(ls meisai_*.pdf) output ticketless.$(date +"%Y%m%d").pdf

これは Windows10 の Bash on Windows でも利用できます。もちろん、Linux, macOS でも。

ただしこれは単に複数のPDFファイルを合成しているだけのことですね。

印刷時に「複数ページを1ページ」にしてみる

Adobe Acrobat Reader には、用紙1ページに対して2ページ分、4ページ分のデータを差し込む機能が含まれています。あるいはプリンタドライバ側でそのような機能が提供されている場合もあります。

それらの機能を用いれば、印刷枚数を半分、あるいは1/4に減らすことができるわけですね。ただし、あまり詰め込みすぎると金額等の情報が読みづらくなりますから、ここらへんは適時調整してみる必要があります。

自分が試した範囲では、1ページ2枚くらいが適正な大きさのように思えます。

実行環境

  • Ubuntu系 (Bash on Windows 含む) なら sudo apt install pdftk ですね。
  • CentOS系はインストールに一手間かかるっぽいです。
  • macOS の場合はPDFtk serverに含まれるパッケージを使うようですが、OSのバージョンによってバイナリが違うようなので、この件は別途アフターフォローするかも。