Extract Text from PDF using NodeJS
Table of contents
- Introduction
- How to extract text from PDFs using NodeJS
- Return result to a callback url
- Complete Code Example
- Configuration Options
- Upload by URL
- Using Authentication
- Further details
Introduction
The following tutorial shows you how to extract text from PDFs using a hosted JPedal cloud API. You can set up your own self-hosted JPedal microservice
Whilst the above service can be accessed with plain old HTTP requests, this tutorial uses our open source NodeJS IDRCloudClient which provides a simple NodeJS wrapper around the REST API.
How to extract text from PDFs using NodeJS
- Using npm, install the idrcloudclient package with the following command:
npm install --save @idrsolutions/idrcloudclient
- Create an idrcloudclient object with
var idrcloudclient = require('@idrsolutions/idrcloudclient');
- Create endpoint variable
var endpoint = 'https://my-self-hosted-service.com/' + idrcloudclient.JPEDAL;
- Create Parameters map to upload a file
var parameters = { input: idrcloudclient.UPLOAD, file: 'path/to/exampleFile.pdf', settings: '{"mode":"extractText","type":"plainText"}' }
- [Optional] Create listeners to trigger on progress, success, and failure.
function progressListener(e) { console.log(JSON.stringify(e)); }
function failureListener(e) { console.log(e); console.log('Failed!'); }
function successListener(e) { console.log(JSON.stringify(e)); console.log('Download URL: ' + e.downloadUrl); }
- Call convert method using variables created previously
idrcloudclient.convert({ endpoint: endpoint, parameters: parameters, // The below are the optional listeners, ignore any you haven't defined progress: progressListener, success: successListener, failure: failureListener });
Return result to a callback url
The JPedal Microservice accepts a callback url to send the status of a extraction on completion. Using a callback url removes the need to poll the service to determine when the extraction is complete.
The callback url can be provided to the parameters variable as shown below.
var parameters = {
input: idrcloudclient.UPLOAD,
callbackUrl: 'http://listener.url',
file: 'path/to/exampleFile.pdf',
settings: '{"mode":"extractText","type":"plainText"}'
}
Complete Code Example
Here is a complete code example to extract text from PDFs based on the above sections steps. Configuration options and advanced features can be found in the following sections.
var idrcloudclient = require('@idrsolutions/idrcloudclient');
function progressListener(e) {
console.log(JSON.stringify(e));
}
function failureListener(e) {
console.log(e);
console.log('Failed!');
}
function successListener(e) {
console.log(JSON.stringify(e));
console.log('Download URL: ' + e.downloadUrl);
}
var endpoint = 'https://my-self-hosted-service.com/' + idrcloudclient.JPEDAL;
var parameters = {
input: idrcloudclient.UPLOAD,
file: 'path/to/exampleFile.pdf',
settings: '{"mode":"extractText","type":"plainText"}'
}
idrcloudclient.convert({
endpoint: endpoint,
parameters: parameters,
// The below are the available listeners
progress: progressListener,
success: successListener,
failure: failureListener
});
Configuration Options
The JPedal API accepts a stringified JSON object containing key value pair configuration options to customise your extraction. The settings should be added to the parameters array. A full list of the configuration options to extract text from PDFs can be found here.
settings: '{"key":"value","key":"value"}'
Upload by URL
As well as uploading a local file you can also provide a URL which the JPedal Microservice will download and then perform the extraction. To do this you should replace the input and file values in the parameters variable with the following.
input: IDRCloudClient.DOWNLOAD
url: 'http://exampleURL/exampleFile.pdf'
Using Authentication
If you have deployed your own JPedal Microservice that requires a username and password to extract text from PDFs, you will need to provide them with each conversion. These are provided by passing two variables named username and password to the convert method as shown below.
username: 'username',
password: 'password',
Further details
IDRCloudClient on GitHub
IDRCloudClient on NPM
JPedal Microservice API
JPedal Microservice Use