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

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

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

Cloud API to Convert PDF To Excel in JavaScript From Uploaded File (Node.js)

Looking for a faster and easier way of writing code to convert PDF to XLS from the uploaded file in JavaScript (Node.js)? Look no further. Cloud API is designed to assist developers of any skill level to streamline the process of transforming PDF to Excel API, as well as to help in performing other tasks such as extracting data, merging or splitting PDFs, and editing and formatting documents.

Cloud API can also be utilized in generating and reading barcodes from PDFs, images, and scanned documents. It is equipped with a built-in OCR and image recognition capability.

Our specially prepared sample code will significantly slash the time required in writing and testing your code. To expedite the implementation of converting PDF to Excel API in your JavaScript project, just copy and paste this sample code to your application and run it. You may also opt to obtain this JavaScript code snippet from our GitHub.

A FREE ByteScout trial version can be downloaded from our website at your convenience. It comes with helpful programming tutorials along with source code samples.

ConvertPdfToXlsFromUploadedFile.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 XLS file name
const DestinationFile = "./result.xls";


// 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 XLS
        convertPdfToXls(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 convertPdfToXls(apiKey, uploadedFileUrl, password, pages, destinationFile) {
    // Prepare request to `PDF To XLS` API endpoint
    var queryPath = `/v1/pdf/convert/to/xls?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 XLS file
                var file = fs.createWriteStream(destinationFile);
                https.get(data.url, (response2) => {
                    response2.pipe(file)
                    .on("close", () => {
                        console.log(`Generated XLS 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