Cloud API - PDF To JSON - JavaScript - Convert PDF To JSON From Uploaded File (Node.js) - ByteScout

Cloud API – PDF To JSON – JavaScript – Convert PDF To JSON From Uploaded File (Node.js)

  • Home
  • /
  • Articles
  • /
  • Cloud API – PDF To JSON – JavaScript – Convert PDF To JSON From Uploaded File (Node.js)

How to Convert PDF To JSON From Uploaded File (Node.js) in JavaScript

Cloud API simplifies for all developers the coding process to convert PDF to JSON from an uploaded file in JavaScript. This powerful Rest API is also teeming with functionalities that make complex tasks like automatic data extraction, document manipulation, and PDF division or integration easy and fast. Amazingly, it also has the penchant for generating and reading barcodes from PDFs, scanned documents, and images, as it has a built-in OCR and a superb image recognition capability.

Save a lot of time and effort by simply taking the code below instead of writing and testing one of your own to use in your application. Simply copy & paste it into your ongoing JavaScript project and run your app! This JS sample source code will take care of the implementation of the PDF to JSON Web API conversion.

Go ahead and download the FREE ByteScout trial version from our website. We also included easy-to-understand programming tutorials along with source code samples.

ConvertPdfToJsonFromUploadedFile.js

/*jshint esversion: 6 */

// (!) If you are getting "(403) Forbidden" error please ensure you have set the correct API_KEY

var https = require("https");
var path = require("path");
var fs = require("fs");
var url = require("url");
// `request` module is required for file upload.
// Use "npm install request" command to install.
var request = require("request");

// The authentication key (API Key).
// Get your own by registering at https://secure.bytescout.com/users/sign_up
const API_KEY = "***********************************";


// Source PDF file
const SourceFile = "./sample.pdf";
// Comma-separated list of page indices (or ranges) to process. Leave empty for all pages. Example: '0,2-5,7-'.
const Pages = "";
// PDF document password. Leave empty for unprotected documents.
const Password = "";
// Destination JSON file name
const DestinationFile = "./result.json";


// 1. RETRIEVE PRESIGNED URL TO UPLOAD FILE.
getPresignedUrl(API_KEY, SourceFile)
.then(([uploadUrl, uploadedFileUrl]) => {
    // 2. UPLOAD THE FILE TO CLOUD.
    uploadFile(API_KEY, SourceFile, uploadUrl)
    .then(() => {
        // 3. CONVERT UPLOADED PDF FILE TO JSON
        convertPdfToJson(API_KEY, uploadedFileUrl, Password, Pages, DestinationFile);
    })
    .catch(e => {
        console.log(e);
    });
})
.catch(e => {
    console.log(e);
});


function getPresignedUrl(apiKey, localFile) {
    return new Promise(resolve => {
        // Prepare request to `Get Presigned URL` API endpoint
        let queryPath = `/v1/file/upload/get-presigned-url?contenttype=application/octet-stream&name=${path.basename(SourceFile)}`;
        let reqOptions = {
            host: "api.pdf.co",
            path: encodeURI(queryPath),
            headers: { "x-api-key": API_KEY }
        };
        // Send request
        https.get(reqOptions, (response) => {
            response.on("data", (d) => {
                let data = JSON.parse(d);
                if (data.error == false) {
                    // Return presigned url we received
                    resolve([data.presignedUrl, data.url]);
                }
                else {
                    // Service reported error
                    console.log("getPresignedUrl(): " + data.message);
                }
            });
        })
        .on("error", (e) => {
            // Request error
            console.log("getPresignedUrl(): " + e);
        });
    });
}

function uploadFile(apiKey, localFile, uploadUrl) {
    return new Promise(resolve => {
        fs.readFile(SourceFile, (err, data) => {
            request({
                method: "PUT",
                url: uploadUrl,
                body: data,
                headers: {
                    "Content-Type": "application/octet-stream"
                }
            }, (err, res, body) => {
                if (!err) {
                    resolve();
                }
                else {
                    console.log("uploadFile() request error: " + e);
                }
            });
        });
    });
}

function convertPdfToJson(apiKey, uploadedFileUrl, password, pages, destinationFile) {
    // Prepare request to `PDF To JSON` API endpoint
    var queryPath = `/v1/pdf/convert/to/json?name=${path.basename(destinationFile)}&password=${password}&pages=${pages}&url=${uploadedFileUrl}`;
    let reqOptions = {
        host: "api.pdf.co",
        path: encodeURI(queryPath),
        method: "GET",
        headers: { "x-api-key": API_KEY }
    };
    // Send request
    https.get(reqOptions, (response) => {
        response.on("data", (d) => {
            response.setEncoding("utf8");
            // Parse JSON response
            let data = JSON.parse(d);
            if (data.error == false) {
                // Download JSON file
                var file = fs.createWriteStream(destinationFile);
                https.get(data.url, (response2) => {
                    response2.pipe(file)
                    .on("close", () => {
                        console.log(`Generated JSON file saved as "${destinationFile}" file.`);
                    });
                });
            }
            else {
                // Service reported error
                console.log("readBarcodes(): " + data.message);
            }
        });
    })
    .on("error", (e) => {
        // Request error
        console.log("readBarcodes(): " + e);
    });
}



  Click here to get your Free Trial version of the SDK

Tutorials:

prev
next