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!