Epublib

General

Category
Free
Tag
EPUB
License
GNU Lesser General Public License, Version 3.0
Registered
Jul 5, 2014
Favorites
1
Link
https://github.com/psiegman/epublib
See also
EpubParser
SkyEpub

Additional

Language
Java
Version
N/A
Created
Nov 18, 2009
Updated
Jan 19, 2024
Owner
Paul Siegmann (psiegman)
Contributors
Alex Kuiper (NightWhistler)
Paul Siegmann (psiegman)
Mayleen Lacouture (maylencita)
Mikko Nylén (mnylen)
Veselin Nikolov (veselinn)
Niels (opensource21)
sheepsskullcity
ttopalov
William Brawner (wbrawner)
Ernesto Perez Nieto (ernesto-arm)
faltiska
Christian Hujer (christianhujer)
Anton Bondoc (MountainHills)
13
Activity
Badge
Generate
Download
Source code

epublib

Epublib is a java library for reading/writing/manipulating epub files.

It consists of 2 parts: a core that reads/writes epub and a collection of tools. The tools contain an epub cleanup tool, a tool to create epubs from html files, a tool to create an epub from an uncompress html file. It also contains a swing-based epub viewer.

The core runs both on android and a standard java environment. The tools run only on a standard java environment.

This means that reading/writing epub files works on Android.

Build status

  • Travis Build Status:

Command line examples

Set the author of an existing epub java -jar epublib-3.0-SNAPSHOT.one-jar.jar --in input.epub --out result.epub --author Tester,Joe

Set the cover image of an existing epub java -jar epublib-3.0-SNAPSHOT.one-jar.jar --in input.epub --out result.epub --cover-image my_cover.jpg

Creating an epub programmatically

package nl.siegmann.epublib.examples;

import java.io.InputStream;
import java.io.FileOutputStream;
 
import nl.siegmann.epublib.domain.Author;
import nl.siegmann.epublib.domain.Book;
import nl.siegmann.epublib.domain.Metadata;
import nl.siegmann.epublib.domain.Resource;
import nl.siegmann.epublib.domain.TOCReference;

import nl.siegmann.epublib.epub.EpubWriter;
 
public class Translator {
  private static InputStream getResource( String path ) {
    return Translator.class.getResourceAsStream( path );
  }

  private static Resource getResource( String path, String href ) {
    return new Resource( getResource( path ), href );
  }

  public static void main(String[] args) {
    try {
      // Create new Book
      Book book = new Book();
      Metadata metadata = book.getMetadata();
       
      // Set the title
      metadata.addTitle("Epublib test book 1");
       
      // Add an Author
      metadata.addAuthor(new Author("Joe", "Tester"));
       
      // Set cover image
      book.setCoverImage(
        getResource("/book1/test_cover.png", "cover.png") );
       
      // Add Chapter 1
      book.addSection("Introduction",
        getResource("/book1/chapter1.html", "chapter1.html") );
       
      // Add css file
      book.getResources().add(
        getResource("/book1/book1.css", "book1.css") );
       
      // Add Chapter 2
      TOCReference chapter2 = book.addSection( "Second Chapter",
        getResource("/book1/chapter2.html", "chapter2.html") );
       
      // Add image used by Chapter 2
      book.getResources().add(
        getResource("/book1/flowers_320x240.jpg", "flowers.jpg"));
       
      // Add Chapter2, Section 1
      book.addSection(chapter2, "Chapter 2, section 1",
        getResource("/book1/chapter2_1.html", "chapter2_1.html"));
       
      // Add Chapter 3
      book.addSection("Conclusion",
        getResource("/book1/chapter3.html", "chapter3.html"));
       
      // Create EpubWriter
      EpubWriter epubWriter = new EpubWriter();
       
      // Write the Book as Epub
      epubWriter.write(book, new FileOutputStream("test1_book1.epub"));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Usage in Android

Add the following lines to your app module's build.gradle file:

    repositories {
        maven {
            url 'https://github.com/psiegman/mvn-repo/raw/master/releases'
        }
    }

    dependencies {
        implementation('nl.siegmann.epublib:epublib-core:4.0') {
            exclude group: 'org.slf4j'
            exclude group: 'xmlpull'
        }
        implementation 'org.slf4j:slf4j-android:1.7.25'
    }