将样式表添加到使用ebooklib Python 3创建的epub中

5vf7fwbs  于 2023-04-13  发布在  Python
关注(0)|答案(1)|浏览(200)

我有一个Python项目,我动态创建epub文件。为此,我使用ebooklib库。我试图添加一个背景图像到每个页面作为水印的形式。按照www.example.com上的说明http://docs.sourcefabric.org/projects/ebooklib/en/latest/tutorial.html#creating-epub添加样式表,我写的代码

style = 'body { background-image: url(../watermark.png); background-repeat: no-repeat; background-attachment: fixed; }'
nav_css = epub.EpubItem(uid="style_nav",
                        file_name="style/nav.css",
                        media_type="text/css",
                        content=style)
book.add_item(nav_css)

无法添加图像。我想可能是路径不正确,所以将其更改为

style = 'body { color: red; }'
nav_css = epub.EpubItem(uid="style_nav",
                        file_name="style/nav.css",
                        media_type="text/css",
                        content=style)
book.add_item(nav_css)

在文本中添加红色,这样我就可以看到添加样式表是否有效。它没有。当我在calibri中打开这本书时,文本仍然是黑色的。我尝试在每章中添加nav_css,仍然是一样的。我做错了什么?
编辑:我只是想补充一下,我在calibri中点击了“编辑”这本书,nav.css文件确实被包含在内了。但是我没有看到任何风格上的改变。

col17t5w

col17t5w1#

在calibri中以编辑模式打开epub并查看epub的各个部分后,我终于发现了问题所在。原来我需要将nav_css样式表添加到整本书和**我希望应用样式的每个章节。我还需要将用作背景水印的图像添加到书中:

image_content = open('../watermark.png', 'rb').read()
epub_img = epub.EpubImage(uid='watermark', file_name='watermark.png', content=image_content)
book.add_item(epub_img)

最后,我添加了最后一个,因为它可能会帮助其他人,似乎calibri有一个通用的设置,默认情况下将文本显示为黑色。即使我正确应用了样式,我也没有看到整个文本为红色(但是,我看到了背景图像)。只有当我在编辑模式下打开epub时,我才能在预览中看到红色文本。

相关问题