GithubHelp home page GithubHelp logo

Comments (3)

SaschaUvA avatar SaschaUvA commented on September 27, 2024

Hi!

Unfortunately, the get_content() inside the write_epub() function is causing the information inside the <head> tag to be lost.
I also incurred this issue, but found a workaround in another issue here: #221 (comment)

I hope this helps!

Best,
Sascha

from ebooklib.

dajames-mk1 avatar dajames-mk1 commented on September 27, 2024

Hi,

I found the same thing. The issue is that ebooklib writes its own<head> section to each HTML file, and this replaces any header you may have written yourself.

It's possible to specify a CSS file by adding an appropriate EpubItem to each chapter as you go. If you want to put the sytlesheet in a folder called styles, as is usual, you have to jump through a few hoops to get the name resolved correctly.

This is what I do. I create two EpubItems, one is used to get the style sheet included in the ebook, the other is to create the reference to it from each chapter.

# Create EpubItem object to include the CSS in the ebook

doc_style = epub.EpubItem(
    uid = "doc_style",
    file_name = "styles/my_styles.css",
    media_type = "text/css",
    content = open("../my_styles.css").read() )

# Add the style sheet to the book

journal_book.add_item(doc_style)

# ... and a second CSS object with a relative path to be referenced by
# chapters whose source is not in the EBOOK root (e.g. in text/).
# (we don't need any content, it's not going to be added to the document,
# it's just a holder for a relative path to the real CSS file)
#
# NOTE: This is very hacky and may one day stop working.

doc_style_ref = epub.EpubItem(
    uid = "doc_style",
    file_name = "../styles/my_styles.css",
    media_type = "text/css",
    content = '' )

Note the difference between the file_name fields of the two.

Then, as each chapter is being processed I have:

    chapter.add_item( doc_style_ref )

To add the object containing the relative path name to the chapter.

ebooklib doesn't have any special logic to handle relative paths.

I hope this is clear ... and useful!

from ebooklib.

manujchandra avatar manujchandra commented on September 27, 2024

I was able to implement this solution, which seems to be working for my use case.

from ebooklib.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.