プログラミングに関係ある内容かどうか一瞬迷ったものの、プログラマの人にも応用できると思うのでこちらにも。
導入:Kindle Paperwhite使ってますか
Kindle Paperwhite、使ってますか。うちには第7世代のKindle Paperwhiteがあります。電子ペーパー端末なので電池消費をあまり気にせず長時間表示しっぱなしにできるという利点があります。
で、このKindle Paperwhiteには、任意のPDFを取り込んで、書籍として表示する機能があります。この機能を使って、覚え書きやどこかの取扱説明書などのドキュメントを放り込んでおくと、いちいち取扱説明書を持ち歩かなくてもデータが確認できて便利です(むしろ自分はそのためだけにKindle Paperwhiteを買ったようなものなので)。
取り扱い説明書を取り込む
さて、そんなKindle Paperwhite、上で触れたとおり携行品の取扱説明書を入れておくと、気軽に確認できて便利です。取り込みは払い出される専用のメールアドレスに、PDFファイルを送信するだけ。最近の製品取扱説明書はメーカーサイトに行けばPDFが入手できたりするので、それを取り込めば解決です。
ただ、持ち歩きたいページが数ページだけだったりすると、取扱説明書をそのまま取り込むのは容量もかさみますし、ページを探すのが面倒です。
解決策:ImageMagickでPDFの一部ページを切り抜こう
さて、前置きが長くなりました。ImageMagickを使ってPDFファイルを数ページぶんだけ切り抜きます。これで取扱説明書の抜粋を取り込めますね。
SR-GL1の絵文字・フレームの一覧を作成する
今回はSR-GL1(ガーリーテプラ)を買ったので、ガーリーテプラの説明書巻末付録についている絵文字と区点コードの一覧を切り抜きました。なお、ImageMagickとwgetを事前にインストールしておく必要があります。ImageMagickは公式サイトから、wgetはChocolateyでインストールしておきましょう1
@setlocal enabledelayedexpansion
@del guide.pdf
wget http://www.kingjim.co.jp/st_files/storage/pdf/sr-gl1m.pdf
convert -density 300 sr-gl1m.pdf pages.jpg
for /L %%f in (83,1,86) do (
set /A num = %%f - 79
ren pages-%%f.jpg opage-!num!.jpg
)
for /L %%f in (87,1,90) do (
set /A num = %%f - 87
ren pages-%%f.jpg opage-!num!.jpg
)
convert -density 300 -geometry 1240x1754 opage-*.jpg guide.pdf
@del sr-gl1m.pdf
@del pages-*.jpg
@del opage-*.jpg
上記コードはバッチファイル機能の遅延変数展開機能を使っていますので、バッチファイルとして一度保存してから実行する必要があります。
上記例ではSR-GL1の取扱説明書をダウンロードし、一度全ページをjpgファイルに変換、87~90ページ目(絵文字やフレームの一覧)を先頭に、そのあとに83ページから86ページ目(区点コードの一覧)をそのあとに持ってきたPDFを作成するようにします(PDFファイルはguide.pdfという名前で保存されます)。
Kindle Paperwhiteは、PDFにタイトルがない場合、ファイル名をKindle Paperwhite上のタイトルとして使用する仕様のようですので、上記ファイルを「SR-GL1フレームガイド」等のような名前にリネームしてKindle Paperwhiteに送信しておけばOKです。
ついでに、LR5(テプラLite)の絵文字・フレーム一覧PDFも作成してみた
ついでにLR5(テプラLite)の絵文字・フレーム一覧も作成してみました。こちらは見開きA3の取扱説明書ですので、絵文字やフレームの一覧が載っている2ページ目の右半面だけをPDFとして取り込みます。
@del guide.pdf
wget http://www.kingjim.co.jp/st_files/storage/pdf/lr5m.pdf
convert -density 300 lr5m.pdf pages.jpg
convert -crop 50%x100% pages-1.jpg pages-1.jpg
convert -density 300 -geometry 1240x1754 pages-1-1.jpg guide.pdf
@del lr5m.pdf
@del pages-*.jpg
おまけ:横浜市ごみ回収実施店舗一覧を作成する
おまけとして、横浜市のごみ回収実施店舗一覧(横浜市内で、ペットボトルなどのごみを回収している店舗一覧)も作成してみたので掲載しておきます。自分がよく行く区を優先表示させたくて南区や港南区を先頭に持ってきましたが、お好みで並び替えてください。
@setlocal enabledelayedexpansion
@del guide.pdf
set num = 1
for %%f in (minami,kounan,totsuka,isogo,aoba,asahi,izumi,kanagawa,kanazawa,kouhoku,sakae,seya,tsuzuki,tsurumi,naka,nishi,hodogaya,midori) do (
set /A num=num + 1
set /A dnum = num
wget http://www.city.yokohama.lg.jp/shigen/sub-shimin/tentokaisyuu/%%f.pdf
if !num! LSS 10 (
set dnum=0!dnum!
)
convert -density 150 %%f.pdf page-!dnum!.jpg
del %%f.pdf
)
convert -density 150 page-*.jpg guide.pdf
@del page-*.jpg
まとめ:ほかにももっと応用できるかも。
さて、こんな感じでImageMagickを使えば割と自由にPDFファイルが作れます。専用メールアドレスにPDFを送付すればPDFを取り込めるので、例えば自動的にPDFを作成→メールを送付する仕組みを作ればいろいろ使えそうです2。
-
ImageMagickもChocolateyでインストールできるのですが、このままインストールするとconvertなどのコマンドラインツールがインストールされませんので、公式サイトからインストールしておきます。 ↩
-
なお、アップロードしたPDFの削除は、パーソナルドキュメントの管理画面から行う必要があります(端末から削除するだけならKindle Paperwhiteの書籍の長押しメニューから削除できますが、Amazonのパーソナルドキュメントフォルダからは消えません)。 ↩