この連載は、『PythonでMarkdownからEPUBをつくろう』を一部抜粋して編集したものです。
本編には、全てのソースコードや、生成する原稿のサンプルが付属しています。ぜひ、こちらもご購入ください。
姉妹版の『PythonとPygameで作る レトロ風RPG 全コード』もあります。
≫ 目次に戻る mod/epub/cover.py
では、カバー画像をコピーして、カバー用のXHTMLファイルを作ります。
ここでは、カバー画像をdoc/02_epub/epub/item/image/
に複製したあと、doc/02_epub/epub/item/xhtml/
内のcover.xhtml
の内容を書き換えます。
tool/
gen-epub/
main.py
mod/
epub/
cover.py
doc/
01_md/
cover.jpg
…… この画像を02_epub/
epub/
item/
image/
cover.jpg
…… ここに複製xhtml/
cover.xhtml
…… 内容を書き換える 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
の中身は次のようになっています。
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 全コード』もあります。