kindle書籍のpdf化

2024/06/11 追記
- [Windows版の半自動化の記事](https://keitasumiya.net/blog/2024/kindle-to-pdf_semi-auto/)を追加しました

---

2021/09/01 追記
- 本記事の新規更新は[個人サイト内の記事](https://keitasumiya.net/blog/2018/kindle-to-pdf/)に移行しました
- ADEでのフォント変更も含めた詳細を[別途記事](https://keitasumiya.net/blog/2021/epub_to_pdf_by_ADE/)にしました

---

2019/02/04 追記
kindleのformatがazwからkcrに変わったみたいですね. 
kcrからのやり方はここには記載していませんが, 古いversionのkindle for macならまだazwでDLできるようなので, 必要であれば古いverのkindleを利用するのが一時的な策だと思います. 

---

私は本は固定形式の書籍でないと記憶に残せないタイプの人間です. 

kindleのようなepub系は文字サイズを自由に変更できたりと大変便利なのですが, ページを前後すると行が変わってしまったり, 文字サイズの設定を変えると当該の文章が異なる形式で表示されてしまうことに不便を感じていました. 

本を文字だけでなく, 映像として記憶している(紙の本であれば触覚も含む)のかとも思いますが, とにかく, 私個人としては, 固定形式としてkindle本を読みたいという欲求があったわけです. 
そこでpdf化したいと考え, 以前より試行錯誤していたわけですが, 自分の好みがある程度固まってきたので備忘録として記載します. 

当然, 
- 他の方が購入したkindle本をpdf化したり, 
- 私がpdf化したものを他者に配布する
等が目的ではありません. 
個人的には, 著者への敬意を示すとともに, 同著者がよりよい本を更に執筆してくれることを期待するために, 本は正規に購入するという信条の人間です. 

したがって, 下記の内容は, 繰り返しになりますが, あくまで私的利用が目的です. 

# 環境
- Mac OSX 10.11.6
- adobe acrobat Pro DC (2015 release)

が基本. 

ただし, Windowsも所持しているので, Windowsでもある程度試しましたが手順はほぼ同じかと思います(cubePDFでのEPUB->PDF変換の結果において, ページ右端が欠けるエラーがありましたがそこには対処していません). 

# 準備
基本的には, この方
[完全無料！Amazonで購入したKindleの縦書き電子書籍をPDFに変換する方法](https://hagane-ya.net/archives/3838) 
の記事が参考の大本です. 

この方の手順に沿って, 
>
- Amazon で Kindle 用の電子書籍を購入する
- Kindle for PC で電子書籍をダウンロード
- calibre に ReDRM プラグインをインストール
- ドキュメント内「My Kindle Content」に格納されている azw ファイルを calibre で読み込む

まで実施してください. 
この方のキャプチャはWindows画面になっていますが, Macでもほぼ同じです. 
>
というか, ここはかなり昔にsetupしたので, どう違ったかを忘れてしまいました...

# 横書き本 (calibre, azw3 -> pdf)
横書き本をpdf化する場合はおそらく問題は起きず, 調整しやすいと思います. 
以下は個人的に好みな設定と手順です. 

- calibreの当該の本のディレクトリの中にあるcover.jpgを確認し, 表紙のアスペクト比を確認. 
>- アスペクト比が変わらないように設定できるのであくまで念の為です. 
>- 今回は縦長の表紙と仮定して説明しますが横長でも特に変わりません. 
>- `横幅 1, 縦幅 a>1, アスペクト比 = 縦幅/横幅 = a>1`と仮定するということです. 
>- ここでは`横幅1069px, 縦幅1362px, アスペクト比1.274...`を例にやっていきます. 

- 

## 出力フォーマット
- `出力フォーマット`を`PDF`にします

## 外観
- `外観`>`スタイル`>`追加CSS`に下記を書き込みます
> fitはepubのxhtmlのstylesheetのimgタグのclassの名前です. kindle由来かcalibre由来かまでは調べていません. 

```css
.fit {
max-width: 100%;
max-height: 100%;
}
```

![スクリーンショット 2018-06-02 19.35.05.png](https://qiita-image-store.s3.amazonaws.com/0/102253/244f17d0-a22b-81da-a30d-d8623178a26b.png)

## ページ設定
- `ページ設定`>`出力プロファイル`は`Tablet`を指定. 
- `ページ設定`>`入力プロファイル`は`Default Input Profile`を指定. 
- `ページ設定`>`入力プロファイル`>`余白`は左右上下すべて`0.0 ポイント`と指定. 

![スクリーンショット 2018-06-02 19.37.44.png](https://qiita-image-store.s3.amazonaws.com/0/102253/0021594b-f7cc-632c-5a28-5aa36eaeeb5a.png)

## PDF出力
- `PDF出力`>`カスタムサイズ`を`200x255`と指定. 
- `PDF出力`>`カスタムサイズ`の`単位`を`millimeter`と指定. 
>- カスタムサイズは, `横幅=200 [mm], 縦幅=200*a [mm]`のつもりの設定です. 

- `PDF出力`>`表紙のアスペクト比を保つ`にチェックを入れる. 
- `PDF出力`>`Serifフォント`は`Times New Roman`と指定. 
- `PDF出力`>`Sansフォント`は`Helvetica`と指定. 
- `PDF出力`>`等幅フォント`は`Courier New`と指定. 
- `PDF出力`>`標準フォント`は`serif`と指定. 
- `PDF出力`>`デフォルトのフォントサイズ`は`18 ピクセル`と指定. 
- `PDF出力`>`等幅のフォントサイズ`は`14 ピクセル`と指定. 
- `PDF出力`>`ページのマージン`のチェックボックスはOFFのまま
- `PDF出力`>`ページのマージン`の左右上下はすべて`20.0 pt`と指定. 
>- 図のみの本(絵本, 漫画等)はこの左右上下はすべて`0.0 pt`と指定したほうが良いです. 

- ページ番号を追加したい場合:
>- `PDF出力`>`すべてのページの下にページ番号を追加`にチェックを入れる. 
>- `PDF出力`>`ページのマージン`の`下`は`40.0 pt`以上に指定したほうが良いです. 


![スクリーンショット 2018-06-02 19.53.39.png](https://qiita-image-store.s3.amazonaws.com/0/102253/2f67d22d-9b3f-4ed6-5d13-80d219dbdd00.png)

## 変換
`OK`を押すと, 変換処理が始まります. 
時間は環境に依存しますが1-2分以内に終わることが多いように思います. 

これでpdfの完成です. 

# 縦書き本
縦書きはやや面倒です. いくらepub系のもとがxhtmlとはいえ, calibreの表示だと縦書きがちゃんと表示されません. 
そこでまさしく先の記事:
[完全無料！Amazonで購入したKindleの縦書き電子書籍をPDFに変換する方法](https://hagane-ya.net/archives/3838) 
が参考になるわけですが, この記事の方法だと最終的なpdfの図が途切れるということがありました. 
追加CSSを少し変更して, この問題に対応したいと思います. 

## calibre (azw3 -> epub)

### 出力フォーマット
- `出力フォーマット`を`EPUB`にします

### 外観
- `外観`>`スタイル`>`追加CSS`に下記を書き込みます

```css
* {
line-height: 150%;
}

@font-face {
font-family: "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ", Meiryo, sans-serif;
}

body{
font-family:"ＭＳ Ｐ明朝", "MS PMincho", "ヒラギノ明朝 Pro W3", "Hiragino Mincho Pro", serif;
writing-mode: vertical-rl;
line-break: normal;
-epub-writing-mode: vertical-rl;
-webkit-writing-mode: vertical-rl;
-epub-line-break: normal;
-webkit-line-break: normal;
}

p{
margin: 0;
}

h2{
margin-left:3rem;
margin-top:3rem;
}

.fit {
max-width: 100%;
max-height: 100%;
}
```

![スクリーンショット 2018-06-02 20.00.43.png](https://qiita-image-store.s3.amazonaws.com/0/102253/c5c78c45-aad8-4f71-2431-dcf23de968f8.png)


### ページ設定
- `ページ設定`>`出力プロファイル`は`Tablet`を指定. 
- `ページ設定`>`入力プロファイル`は`Default Input Profile`を指定. 
- `ページ設定`>`入力プロファイル`>`余白`は左右上下すべて`5.0 ポイント`と指定. 
>- 横書きの際と同様に`0.0 ポイント`でもいいかもしれません. 好みです. 

- 

![スクリーンショット 2018-06-02 20.02.45.png](https://qiita-image-store.s3.amazonaws.com/0/102253/046dd62c-7669-2735-f2d6-2420ce0f4fa4.png)

### EPUB出力
- `EPUB出力`>`表紙のアスペクト比を保つ`にチェックを入れる. 

![スクリーンショット 2018-06-02 20.04.30.png](https://qiita-image-store.s3.amazonaws.com/0/102253/319413b9-987d-3625-50a2-1bb1b52194e8.png)

### 変換
`OK`を押すと, 変換処理が始まります. 
時間は環境に依存しますが5-10分以内に終わることが多いように思います. 
これでkindle(azw3)からepubが出来上がります. 

## Adobe Digital Editions 4.5 (epub -> pdf)
epubからpdfに変換します. 
前小節のcalibreでpdf変換しない理由は, 前述の繰り返しですが, calibreの縦書き表示が正しく表示されないためです. 

- `Adobe Digital Editions 4.5`>`ファイル`>`印刷`>`PDF`>`Save as Adobe PDF`を選択
- `プリント`というポップアップが立ち上がり, `処理中のページ: 1`からページ数が増えていくことを確認します. 最後までページが処理されるのを待ちます. 
- `Adobe PDFとして保存`で`続ける`を押します. 
- `保存`で, 自分の保存したい場所とファイル名を好きに指定した後, `保存`を押します. 
- macのカーソルが"虹色のくるくる(作業中)"に変わったら変換開始です. 
- `保存`ポップアップが閉じれば, これで変換完了です. 3-6分程度かかった印象です. 

これでpdfの完成です. 


# 参照

- [完全無料！Amazonで購入したKindleの縦書き電子書籍をPDFに変換する方法](https://hagane-ya.net/archives/3838) 

- [CSS3で縦書きにする方法と挙動](https://qiita.com/RinoTsuka/items/3e3eaaba8cddb6ff08e9)

- [【縦書き対応】Kindle本のDRMを解除し、ePubに変換する](https://webnetforce.net/%E3%80%90%E7%B8%A6%E6%9B%B8%E3%81%8D%E5%AF%BE%E5%BF%9C%E3%80%91kindle%E6%9C%AC%E3%81%AEdrm%E3%82%92%E8%A7%A3%E9%99%A4%E3%81%97%E3%80%81epub%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B/)

- [EPUBファイルから画像を抽出する](https://tech.torico-corp.com/blog/epub%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8B%E3%82%89%E7%94%BB%E5%83%8F%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B/)

- [max-width](http://www.htmq.com/style/max-width.shtml)

- [break-inside](http://www.htmq.com/css3/break-inside.shtml)

- [break-before](https://developer.mozilla.org/ja/docs/Web/CSS/break-before)

- [画像の大きさを最適化する max-width:100%;](https://www.homepage-tukurikata.com/css/max-width.html)