Giter VIP home page Giter VIP logo

epub2pdf's Introduction

Instruction to Setup

  1. (Windows) install gtk3 runtime
  2. conda env create -f environment.yml or pip install -r requirements.txt
  3. source activate epub

Epub2pdf

  1. python epub2pdf.py -i [EPUBPATH] -o [PDFPATH]
  2. It will generate {filename}.pdf in current directory

New Feature

  1. sample output pages
    python epub2pdf.py -i [EPUBPATH] -o [PDFPATH] -s --sample_page [PAGE]

  2. change font size

    • by ratio
      python epub2pdf.py -i [EPUBPATH] -o [PDFPATH] -r --font_size_ratio [RATIO]
    • by given size
      python epub2pdf.py -i [EPUBPATH] -o [PDFPATH] -r --font_size [FONTSIZE] --font_unit [px|em]

Mobi2PDf

  1. python mobi2pdf.pf "{filepath}"
  2. It will generate {filename}.pdf in current directory

Known Bugs

  1. Pdf Outline issues.
  2. page change for each chapter.
  3. page lost

Fix Bugs (on Epub)

  • not support Chinese
    use encoding=utf8 when write/read files
  • page lost
    locate content files in content.opf instead of toc.ncx
  • toc lost use regex to update hyperlink
  • better css format
    1. parse css file
    2. load content selector
    3. change to suiltable setting
  • css overriden problem
    Thanks to @liZe's help.
    Use css-inline to change css style to inline, then it can solve the overriden problem.

TODO

  • [√] config Font
  • [√] better css format
  • [√] better page organize
  • [] transfer update to mobi

How it works [Epub]

  1. Epub is zipped file containing xhtml and metadata.
  2. So I used weasyprint to convert xhtml to pdf.
  3. But how to know which html to add first.
  4. That information is contained in *.ncx inside epub bundle. BS4 is used to read ncx file.

How it works [Mobi]

  1. Kindle unpack to extract data.
  2. Weasyprint to convert html to pdf.

Credits

  1. KindleUnpack
  2. Weasyprint

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.