Giter VIP home page Giter VIP logo

node-ebook-converter's Introduction

Node E-Book Converter

Node.js minimal and powerful ebook converter (single package) with built in queue and threading functionalities. With a few steps, you can convert ebooks and other documents to any format wanted. You can also define custom properties defined at Calibre Documentation. Atention: This library is not responsable for the convertion algorithm, only the wrapper, queue system, threading and pooling.

How to use it?

First, you need to install Calibre official conversion package, as this library work as a full-featured wrapper for it. To install it, access Calibre Website. (There are CLI and GUI versions).

Second, install the package through NPM (Node Package Manager) as it follows:

npm i node-ebook-converter

If you use yarn as your package manager:

yarn add node-ebook-converter

After installing the library, you must import it inside your .js (JavaScript) file and start converting ebooks:

const ebookConverter =  require('node-ebook-converter');

/* Adds the convertion to the Execution Queue */
ebookConverter.convert({
  input: "./input/bear.pdf",
  output: "./output/bear.epub",
  authors: "Probably a bear..."
}).then(response => console.log(response))
  .catch(error => console.error(error));

This example takes a pdf at "./input/bear.pdf" and converts it to an epub (specified in the output extension) at "./output/bear.epub". To specifiy the output extension, you just need to specify the extension in the output attribute of the conversion object.

Convertion Parameters

You can specify parameters before starting your conversion. The list can be found in the following table:

Attribute Optional Type Description
input false string Defines the input file to be converted (any extension)
output false string Defines where to save the converted file to the specified extension (should contain the extension to convert in it)
delete true boolean Deletes the input file when the conversion is done
silent true boolean In this mode, library does not print messages

Those are only the parameters created to this package. node-ebook-converter supports all native flags. You can find all of them in the following link: https://manual.calibre-ebook.com/generated/en/ebook-convert.html

Methods

Currently, there are two methods in this package:

Convert

Starts the conversion. Can be used through the following structure:

ebookConverter.convert({
  input: "./input/bear.pdf", // Input file
  output: "./output/bear.epub", // Output file + Extension to convert
  delete: false // Does not delete input after converting
}).then(response => console.log(response))
  .catch(error => console.error(error));

setPoolSize

Changes the thread pool size, allowing the execution of n thread simultaneously. Can be used through the following structure:

ebookConverter.setPoolSize(2); // Allows 2 conversions to run simultaneously.

If more ebooks are added than the thread pool size, it will be stored in the Idle Queue to be processed later.

Queue

This package comes with a built-in library system, allowing the user to add infinitely many conversions and limit the number of those that can occur concurrently. The size of the Execution Queue (Thread Pool Size) is defined through the setPoolSize described above. If more conversions are called than the allowed by the Thread Pool Size, it will be stored in the Idle Queue to be processed later. This is an event-based and lightweight implementation of the queue process.

Contributing

This package is built under the MIT license. For the long-term support, you can contribute to this project by openning issues in the "Issue" tab in the GitHub platform, submit Pull Requests, and give tips on building this package. If you want me to keep doing this kind of job, help me by buying me a coffee!

Buy Me A Coffee

node-ebook-converter's People

Contributors

alynva avatar jvkdouk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

node-ebook-converter's Issues

'MODULE_NOT_FOUND' when converting pdf to epub [ electron with CRA ]

In main process

let pdfPath = path.parse(data.path)
// Convert with calibre
ebookConverter.convert({
  input: data.path,
  output: `${pdfPath.dir}/${pdfPath.name}.epub`,
  silent: true,
}).then(async (res) => await event.reply('convertPdfToEpub', {status: 'success'}))
  .catch(async (err) => await event.reply('convertPdfToEpub', {status: 'failed', err: err}))

It works in development but once i build the electron app and try to convert that error shows up.
Note: I also have a check to see if ebook-convert command can be executed so the conversion only runs if check returns true

Convert timeout

Can it have an timeout config? Looks like something in my setup has changed and its now getting stuck when converting PDF files, other files works fine.

When converting other files, this process starts and ends just fine:

image

But when it is PDFs, this process starts and never ends:

image

There is no error, the worker just never resolves the promise.

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.