みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Calibreでpdfのヘッダーとフッターを取り除いたeBookを作成する

Calibreでpdfのヘッダーとフッターを取り除く方法を紹介します。

今回は、pdf版のKathryn Montgomery著のHow Doctors Think: Clinical Judgment and the Practice of Medicineという本から、ヘッダーとフッターを取り除いて、美しいepubに変換します。

pdfのヘッダーとフッターはうっとおしい

pdfファイルを開くと下のように表示されますが、コピーしようとすると、ページをまたがる場合ページ数や見出しなども一緒にコピーされてしまい、うっとおしいです。

f:id:atsuhiro-me:20151101233146p:plain:w300

(写真をクリックすると大きくなります。以下同様。)

実際、上のように選択して、コピーした結果は、下のようになります。

Raymond Curry, Jorge Daaboul, Joel Frader, Lester Friedman, Warren Furey,Robert Golub, Philip Greenland, Robert Hirschtick, Joshua Hauser, KristiKirschner, Myria Knox, Ellen LeVee, John Merrill, Maureen Brady Moran,

viii acknowledgments

Scott Moses, David Neely, Kathy Johnson Neely, Douglas Reifler, HenryRuder, John Sanders, Carol Schilling, Katie Watson, the late Bob Winter,and the Work-in-Progress Group of the Medical Humanities and BioethicsProgram. For

文章の途中にページ数や見出し語が入っていて、epubで読むには見苦しいです。

CalibreのSearch&Replaceを開く

Calibreを利用すると、これを取り除くことができます。まずは、下のように変換する本を選択してConvert individuallyをクリックします。

f:id:atsuhiro-me:20151101233151p:plain:w300

f:id:atsuhiro-me:20151101233152p:plain:w300

すると下のような画面が開くので、左メニューのsearch&replaceを選択します。

f:id:atsuhiro-me:20151101233154p:plain:w300

すると下のような画面になります。ここで、右にあるよくわからないボタン(ステッキ?)をクリックします。

f:id:atsuhiro-me:20151101233157p:plain:w300

下のような画面が表示されたら、pdfを選択します。これは、2つ以上のフォーマットが存在する場合に表示されます。

f:id:atsuhiro-me:20151101233201p:plain:w300

下のような画面が表示されます。

CalibreのSearch&Replaceで任意の文字列を削除する

まずは、This page intentionally left blank(このページは白紙です)という、うっとおしいけどよくある文字列を削除します。

f:id:atsuhiro-me:20151101233203p:plain:w300

Regex欄に"This page intentionally left blank"と入力して、右にあるTestボタンを押します。ヒットすれば、Occurrencesにヒット数が表示されます。Goto:Previous,Nextを駆使して、すべてのThis page intentionally left blankが選択されていることを確認します。うまくいけばOKを押します。

これでepubに変換すると、This page intentionally left blankが削除されているはずです。

CalibreのSearch&Replaceでヘッダーとフッターを削除する(正規表現を利用)

下のように設定します。

f:id:atsuhiro-me:20151101233206p:plain:w300

Regexは正規表現のことです。したがって、画面下に表示されているhtmlから、削除したいヘッダーとフッターを見つけて、適切な正規表現に置き換えればいいわけです。すべての本のヘッダーとフッターを削除する万能の正規表現があれば便利なのですが、みーはとても考えつきませんので、自分で適宜作成する必要があります。

例えば上の例では、

<hr>
<.*?></a>.*?<br>
.*?<br>

などの正規表現を用いればすべてのヘッダーとフッターがヒットします。.*?は最小の長さの任意の文字列を表します。改行コードは入力できないので、下の画面からコピペするのが便利です。上の画面では、Regex欄ではうまく改行されていませんが、改行コードはちゃんと挿入されているので、うまくいきます。