PythonでMarkdownからEPUBをつくろう

この連載について

 この連載は、『PythonでMarkdownからEPUBをつくろう』を一部抜粋して編集したものです。

 本編には、全てのソースコードや、生成する原稿のサンプルが付属しています。ぜひ、こちらもご購入ください。

 姉妹版の『PythonとPygameで作る レトロ風RPG 全コード』もあります。

目次に戻る

7-3 カバー画像関連の構築

公開:2025-05-26

 mod/epub/cover.pyでは、カバー画像をコピーして、カバー用のXHTMLファイルを作ります。

 ここでは、カバー画像をdoc/02_epub/epub/item/image/に複製したあと、doc/02_epub/epub/item/xhtml/内のcover.xhtmlの内容を書き換えます。

▶ ファイル構成
▶ mod/epub/cover.py
 1import shutil
 2from mod.util import file as uf
 3
 4# カバー画像関連の構築
 5def build(data):
 6    dir = data['dirs']
 7    con = data['config']
 8
 9    # カバー画像の複製
10    src = uf.join(dir['input'], con['coverPath'])
11    dst = uf.join(dir['outputEpub'], 'item/image/cover.jpg')
12    shutil.copy2(src, dst)
13
14    # cover.xhtmlの書き換え
15    p = uf.join(dir['outputEpub'], 'item/xhtml/cover.xhtml')
16    t = uf.read(p)
17    t = t.replace('@coverWidth@', str(con['coverWidth']))
18    t = t.replace('@coverHeight@', str(con['coverHeight']))
19    t = t.replace('@lang@', con['lang'])
20    uf.write(p, t)

 ファイルの複製はshutil.copy2(src, dst)を用います。srcは複製元のパス、dstは複製先のパスです。

 cover.xhtmlの中身は次のようになっています。

▶ mod/epub/cover.py
 1<?xml version="1.0" encoding="UTF-8"?>
 2<!DOCTYPE html>
 3<html xmlns="http://www.w3.org/1999/xhtml" 
 4  xmlns:epub="http://www.idpf.org/2007/ops" 
 5  xml:lang="@lang@">
 6    <head>
 7        <title>cover</title>
 8        <meta charset="UTF-8" />
 9        <meta name="viewport" content="width=@coverWidth@ ,height=@coverHeight@" />
10        <style>
11            html, body {margin: 0; padding: 0; font-size: 0;}
12            svg {margin: 0; padding: 0;}
13        </style>
14    </head>
15  <body epub:type="cover">
16      <div class="main">
17        <svg xmlns="http://www.w3.org/2000/svg"
18          xmlns:xlink="http://www.w3.org/1999/xlink"
19          version="1.1" width="100%" height="100%"
20          viewBox="0 0 @coverWidth@ @coverHeight@">
21            <image width="@coverWidth@" height="@coverHeight@" xlink:href="../image/cover.jpg"/>
22        </svg>
23      </div>
24  </body>
25</html>

 このファイルの@coverWidth@@coverHeight@@lang@の値を、config.yamlで定義した値に書き換えます。

 書き換えはテキストのreplace()関数を使います。テキスト.replace('検索テキスト', '置換テキスト')と書きます。こうすることで、検索テキストの内容を置換テキストに置き換えたテキストを得られます。


目次に戻る

この連載について

 この連載は、『PythonでMarkdownからEPUBをつくろう』を一部抜粋して編集したものです。

 本編には、全てのソースコードや、生成する原稿のサンプルが付属しています。ぜひ、こちらもご購入ください。

 姉妹版の『PythonとPygameで作る レトロ風RPG 全コード』もあります。

 技術系同人誌など まとめページ


トップページに戻る
Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2025 Cronus Crown (c)1997-2025 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について