任意のWebページをPDF化してKindleで読む
視点:文化人類学への開かれた招待 第2版という人類学の教科書の全文の日本語訳がmediumにまとまっている(CC by 4.0)。
全体で19章あって1章あたり数万字超えだ。これほどのボリュームの英語文献を翻訳していただいているのは誠にありがたいのだが、mediumというプラットフォームで読むのがやや不便である。理想はインターネット環境のない出先で使い慣れたKindleで読みたい。そこでこの各mediumに展開された教科書の文章をPDF化してKindleで読めるようにしてみた。
Webページ to PDF
まずmediumをPDFにする。これにはpercollateというWebページをPDF/EPUB/HTML/Markdownに変換してくれるCLIツールを利用する。
例えば下記のような感じで使う。
percollate pdf --output=some.pdf https://example.com
今回は複数ページをひとまとめのPDFにしたいので下記のように複数URLを指定して生成した。
percollate pdf --output=output.pdf https://example.com/page1 https://example.com/page2 --title="Book Title"
ちなみに指定するURLはこのページでブラウザのDev Toolを開き、Array.from(document.querySelectorAll("a")).filter((a) => a.href.match(/\/@BetterLateThanNever\//)).map((a) => a.href)
みたいな感じでURLをぶっこぬいた。それをチョチョイと整形して先のpercollateに指定しただけ。
PDFの軽量化
自分はKindleにPDFを追加するときはSend to Kindle with Emailを使っている。Kindle指定のメールアドレスにgmailからPDFを送りつけるだけで全てのKindleアプリに同期される。
この時に50MBを超えているとgmailに添付できない(Kindle自体は50MB超えでもzip圧縮していれば受け付けてくれるらしい)。今回生成したPDFは50MBをゆうに超えていたのでこのままだとだめ。。ということでPDFを軽くする。
これにはghostscriptを使う。Macだとbrew install ghostscript
でインストールできる。
準備できたら下記のコマンドを叩く。
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf source.pdf
これで内部の画像を縮小したり色々最適化してくれてPDFが軽くなる。今回は15MBまで下がった。これならgmailに普通に添付できる。
これでWebページだったものがKindleで読めるようになった。
medium以外のWebページでも同様のやり方でPDFにできるはずなので他にも応用できるはず。
Discussion