アップルスクリプトを使ってMac版Kindleで電子書籍の自炊

本とフォルダー
更新日:2022年11月21日
この記事は約6分で読めます。

Kindleなどの電子書籍はマーカーや付箋を付けることはできますが、自由に書き込みができません。

そこで、MacでPDF化して自由に書き込みができるようにする手順を一通り説明します。

このページは、次の方向けに書いています。

  • Kindleなどの電子書籍をPDF化したい人
  • 電子書籍のPDF化の作業は、なるべく自動化して手間をかけたくない人
  • 電子書籍のPDF化は、自分で買ったものを個人使用するだけにとどめておいて下さい
  • PDF化した電子書籍を他人が閲覧できる状態に公開したり、それをダウンロードした場合は、著作権法第30条(私的使用による複製)および第119条により、2年以下の懲役若しくは200万円以下の罰金、又はこれら両方により罰せられます

 

作業の大まかな流れ

以下の3段階の手順を踏んで、電子書籍をPDF化します。

作業概要 使用アプリ 参考サイト
スクショ画像作成
  • Kindle
  • スクリプトエディタ
スクリーン連続キャプチャ for OSX – 電書ちょこっとツールズ
画像トリミング 複数画像の一括トリミング!XnConverterの使い方 – Webマーケティングブログ
PDF作成
  • Finder

① スクリーンショット画像作成

Macには「AppleScript(アップルスクリプト)」という簡易プログラミング言語が標準で搭載されています。

そこで、AppleScriptで次の作業を1セットとして、Kindleのページ数の分だけ自動的に繰り返します。

  • フルスクリーンのスクリーンショットを撮影する
  • Kindleを1ページずつめくる

注意点としては、プログラムが実行中はMacを使うことが出来ないことです。

終わるまでは、スマホやタブレットを見るなど、適当に時間をつぶしましょう。

 

AppleScriptの作成・編集・実行は、Mac標準のアプリ「スクリプトエディタ」を使います。

Macの「スクリプトエディタ」のアイコン

「スクリプトエディタ」のアイコン

実際のスクリプトについては、次の参考サイトを御覧ください。

電書ちょこっとツールズ

アプリ「スクリプト」でKindleのスクショを撮るには、「システム設定(システム環境設定)」の変更が必要です。

macOS システム設定(システム環境設定)macOS システム設定(システム環境設定)

 

以下は、スクリプトで編集する内容を解説しています。

No 内容
Kindleのトータルのページ数を入れます
Kindleを使う場合は”Kindle”と入れます
スクショ画像の保存場所を指定します
開始ページを入れますが、通常は1です
ページめくりの方向が左なら1、右なら2を入れます
ページめくりしたあとの待機時間を入れますが、通常は2.0です
あとでトリミングをするので、この四角の中はそのままにしておきます
本のページが999ページまで対応できるように、このように2行を追加します

Macの画面をスキャンするAppleScript

 

以下の動画は、実際にスクリプトが動いているところの様子です。

 

② 画像トリミング

https://apps.apple.com/jp/app/xnconvert/id436203431?mt=12

ここでは、Macの無料アプリ「XnConvert」を使って、①で作ったスクリーンショット画像を一気に読み込んで、Kindleの本の部分だけトリミングをします。

詳しいやり方は、次の参考サイトを御覧ください。

複数画像の一括トリミング!XnConverterの使い方 - Webマーケティングブログ
「長方形の元画像を、正方形にトリミングして切り出したい。」 「しかも処理したい画像が大量にある。」 そんな時ありませんか? 先回は「リサイズ」ツールをご紹介しましたが、今回は「トリミング」が出来るツー...

 

画像トリミングで最も難しいのはトリミングのサイズを決めるところです。

私は、「monosnap」という画像編集アプリのCrop機能を使って、左から何ピクセルか、上から何ピクセルか、などを測っています。

https://apps.apple.com/jp/app/monosnap-screenshot-editor/id540348655?mt=12

以下の動画は、左から何ピクセルかを測っている様子です。

 

トリミングのサイズが決まったら、あとは一括してトリミングを実行します。

以下の画面では、トリミングの他に、ファイル容量を減らすために50%リサイズをしています。

XnConvertの設定

 

③ PDF作成

ここでは、②で作った複数のトリミング画像を1つのPDFファイルに変換します。

これは、MacのFinderの標準機能で可能です。

Finderでトリミングした画像を一括選択して、右クリックメニューを表示します。

「クイックアクション」から「PDFを作成」を選択すると、1つのPDFファイルに変換されます。

変換されたら、本のタイトルなど適当な名前を付けておきます。

MacのFinderでPDF作成

 

作成したPDFの活用ですが、書き込みをするには「GoodNote」、表示だけなら「ComicShare」が使いやすくておすすめです。

GoodNotes 5(Mac/iPad/iPhone)

iCloud経由で各端末で同期ができます。

‎GoodNotes 5
‎Macを小型のデジタルペーパーとパワフルな書類管理システムに変えましょう。 GoodNotesのiPadバージョンと同じ機能をMacで使用して、いつでもどこでもあなたの好きな時間や場所で書類に作業が...

ComicShare(iPad/iPhone)

各端末で同期はできませんが、きめ細やか設定ができて動作が軽いです。

https://apps.apple.com/jp/app/comicshare-%E3%82%B3%E3%83%9F%E3%83%83%E3%82%AF-%E9%9B%BB%E5%AD%90%E6%9B%B8%E7%B1%8D%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC/id642097030

このページの記事は、ここまでです。

コメント

  1. いく より:

    いきなりのご連絡申し訳ございません。
    初めまして、いくと申します。
    Macのアンチョコサイトをみたものです。

    「アップルスクリプトを使用し、Kindleページのスクショ記事」を見させていただきました。
    大変わかりやすく、ありがとうございます!!

    1点ご質問があり連絡させていただきました。

    自動スクショはできるのですが、スクショした画像がどこにも見当たらなくどこにあるかがわかりません。。
    指定したフォルダにみも、パソコンの中にも見当たりません。。

    下記にコードを貼り付けますので、もしよければアドバイスの方いただければなと思います。
    大変お忙しいと思いますが、よろしくお願いいたします。

    — ページ数
    set pages to 230
    — 対象アプリ
    set target to “Kindle”
    — 保存フォルダ
    set savepath to “~/pic/image/”
    — 開始ファイル番号
    set spage to 1
    — めくり方向(1=左 2=右)
    set pagedir to 2
    — ページめくりウエイト(秒)
    set pausetime to 2.0
    — 切り抜きサイズ(画面中心から)
    set cropx to 0
    set cropy to 0
    — リサイズ横(切り抜く前のサイズ換算=画面横/切り抜き横*仕上がり横)
    set resizew to 0

    if pagedir = 1 then
    set keychar to (ASCII character 28)
    else
    set keychar to (ASCII character 29)
    end if
    if target is not “” then
    tell application target
    activate
    end tell
    end if
    delay pausetime
    repeat with i from spage to pages
    if i < 10 then
    set dp to "00" & i
    else if i < 100 then
    set dp to "0" & i
    else if i < 1000 then
    set dp to "" & i
    end if
    set spath to (savepath & "p" & dp & ".png")
    do shell script "screencapture " & spath
    if cropx is not 0 and cropy is not 0 then
    if resizew is not 0 then
    do shell script "sips -c " & cropy & " " & cropx & " –resampleWidth " & resizew & " " & spath & " –out " & spath
    else
    do shell script "sips -c " & cropy & " " & cropx & " " & spath & " –out " & spath
    end if
    end if
    tell application "System Events"
    keystroke keychar
    end tell
    delay pausetime
    end repeat
    activate

  2. いく より:

    何度も申し訳ございません。。

    保存先のフォルダの指定を変更しましたら無事解決いたしました。。
    お騒がせして申し訳ございませんでした。
    今後とも機会がありましたら、よろしくお願いいたします。

    いく

  3. yamafd より:

    返事のタイミングがずれましたが、質問時に掲載していただいたアップルスクリプトで、こちらでも正常に動作・キャプチャできることが確認できました。

    ご連絡ありがとうございました。

    • ミッチー より:

      非常に有益な情報をありがとうございます。
      以下のように設定しましたが、スクショはされるのですが、どこにも画像データが見つからず‥
      どこか間違っているでしょうか?

      if pagedir = 1 then
      set keychar to (ASCII character 28)
      else
      set keychar to (ASCII character 29)
      end if
      if target is not “” then
      tell application target
      activate
      end tell
      end if
      delay pausetime
      repeat with i from spage to pages
      if i < 10 then
      set dp to "00" & i
      else if i < 100 then
      set dp to "0" & i
      end if
      set spath to (savepath & "p" & dp & ".png")
      do shell script "screencapture " & spath
      if cropx is not 0 and cropy is not 0 then
      if resizew is not 0 then
      do shell script "sips -c " & cropy & " " & cropx & " –resampleWidth " & resizew & " " & spath & " –out " & spath
      else
      do shell script "sips -c " & cropy & " " & cropx & " " & spath & " –out " & spath
      end if
      end if
      tell application "System Events"
      keystroke keychar
      end tell
      delay pausetime
      end repeat
      activate

      • yamafd より:

        コピペしていただいた部分よりも前にもスクリプトがありますが、そちらはどうなっていますか?
        コピペされていない部分では、targetという変数でファイルの保存場所が指定されています。
        以下、コピペされていない部分です。

        〜 ここから 〜

        — ページ数
        set pages to 2
        — 対象アプリ
        set target to “iBooks”
        — 保存フォルダ
        set savepath to “~/Pictures/”
        — 開始ファイル番号
        set spage to 1
        — めくり方向(1=左 2=右)
        set pagedir to 1
        — ページめくりウエイト(秒)
        set pausetime to 2.0
        — 切り抜きサイズ(画面中心から)
        set cropx to 0
        set cropy to 0
        — リサイズ横(切り抜く前のサイズ換算=画面横/切り抜き横*仕上がり横)
        set resizew to 0

        〜 ここまで 〜

        • koba より:

          全く同じ状況です
          osはventura

          • yamafd より:

            macOSの「システム設定(システム環境設定)」の中の、以下の内容を確認してみてください。

            ・「プライバシーとセキュリティ」>「画面収録」のアプリ一覧で「スクリプトエディタ」が表示されて、「許可」にスイッチが入っているかどうか

            これが「許可」されていないと、Kindleのキャプチャができずに、macOSのデスクトップがスクショされることが、当方のMacで確認できました。

  4. いだ より:

    質問失礼します。

    上記のプログラムをコピペして動かしてみたのですが、スクショされた画像がデスクトップ画像しか写っておらず困っています。見かけ上はページめくりも上手くいっているのですが対処法が分かる方いらっしゃいますでしょうか?操作環境はBig Sur11.6です。

    • koba より:

      全く同じ状況です
      osはventura

    • yamafd より:

      macOSの「システム設定(システム環境設定)」の中の、以下の内容を確認してみてください。

      ・「プライバシーとセキュリティ」>「画面収録」のアプリ一覧で「スクリプトエディタ」が表示されて、「許可」にスイッチが入っているかどうか

      これが「許可」されていないと、Kindleのキャプチャができずに、macOSのデスクトップがスクショされることが、当方のMacで確認できました。

  5. 香川圭佑 より:

    大変参考になる記事ありがとうございます。
    一つご質問があります。
    ページ数が999ページ以上の場合は、どのようにしたらいいでしょうか。

    • yamafd より:

      手元に999ページを超える本がないので検証できないのですが、⑧のあたりのrepeat withからend ifまでを、次のように置き換えたらどうでしょうか?

      
      repeat with i from spage to pages
        if i < 10 then
          set dp to "000" & i
        else if i < 100 then
          set dp to "00" & i
        else if i < 1000 then
          set dp to "0" & i
        else if i < 10000 then
          set dp to "" & i
      end if
      
      
  6. kouこう より:

    とても有用な情報とスクリプトをありがとうございます。
    1点ご教授ください。

    スクリプトを動かし1ページ目のスクリーンショットが撮られた後、
    error “System Eventsでエラーが起きました: スクリプトエディタにはキー操作の送信は許可されません ” number 1002
    と表示されて止まってしまいます。

    どのようにしたら良いかアドバイスいただけませんでしょうか。
    どうぞよろしくお願いいたします。

    • yamafd より:

      システム設定(または、システム環境設定)にて、スクリプトエディタに実行許可を与えてください。
      以下、作業の流れです。

      アプリ「システム設定(または、システム環境設定)」 > 項目「プライバシーとセキュリティ」 > 項目「アクセシビリティ」を開く。
       ↓
      コンピュータの制御を許可したアプリ一覧に、「スクリプトエディタ」を追加&スイッチオンにする。

      • kouこう より:

        yamafd様
        ご回答いただきありがとうございました。
        無事解決できました。
        とても使い勝手の良いスクリプトをありがとうございました。
        今後も活用させていただきます。

PHP Code Snippets Powered By : XYZScripts.com
タイトルとURLをコピーしました