PDF.co Web API - PDF To Image API - JavaScript - Convert PDF To PNG From URL (Node.js) - Async API - ByteScout

PDF.co Web API – PDF To Image API – JavaScript – Convert PDF To PNG From URL (Node.js) – Async API

  • Home
  • /
  • Articles
  • /
  • PDF.co Web API – PDF To Image API – JavaScript – Convert PDF To PNG From URL (Node.js) – Async API

PDF.co Web API – PDF To Image API – JavaScript – Convert PDF To PNG From URL (Node.js) – Async API

ConvertPdfToPngFromUrl.js

var https = require("https");
var fs = require("fs");

// `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://app.pdf.co/documentation/api
const API_KEY = "***********************************";

// Source PDF file
const SourceFileUrl = "https://s3-us-west-2.amazonaws.com/bytescout-com/files/demo-files/cloud-api/pdf-to-image/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 = "";


// Prepare request to `PDF To PNG` API endpoint
var queryPath = `/v1/pdf/convert/to/png?password=${Password}&pages=${Pages}&url=${SourceFileUrl}&async=True`;
var reqOptions = {
    host: "api.pdf.co",
    path: encodeURI(queryPath),
    headers: {
        "x-api-key": API_KEY
    }
};
// Send request
https.get(reqOptions, (response) => {
    response.on("data", (d) => {
        // Parse JSON response
        var data = JSON.parse(d);        
        if (data.error == false) {
            checkIfJobIsCompleted(data.jobId, data.url);
        }
        else {
            // Service reported error
            console.log(data.message);
        }
    });
}).on("error", (e) => {
    // Request error
    console.error(e);
});

function checkIfJobIsCompleted(jobId, resultFileUrlJson) {

    let queryPath = `/v1/job/check?jobid=${jobId}`;
    let reqOptions = {
        host: "api.pdf.co",
        path: encodeURI(queryPath),
        method: "GET",
        headers: { "x-api-key": API_KEY }
    };

    https.get(reqOptions, (response) => {
        response.on("data", (d) => {
            response.setEncoding("utf8");
            // Parse JSON response
            let data = JSON.parse(d);
            if (data.Status == "InProgress") {
                // Check again after 2 seconds
                setTimeout(function(){checkIfJobIsCompleted(jobId, resultFileUrlJson)} , 2000);
            }
            else if (data.Status == "Finished") {

                request({ method: 'GET', uri: resultFileUrlJson, gzip: true },
                    function (error, response, body) {

                        //* workaround for issue with non supoprted firstchar code
                        var firstCharCode = body.charCodeAt(0);
                        if (firstCharCode == 65279) {
                            body = body.substring(1);
                        }

                        // Parse JSON response
                        let respJsonFileArray = JSON.parse(body);
                        let page = 1;

                        respJsonFileArray.forEach((url) => {
                            var localFileName = `./page${page}.png`;
                            var file = fs.createWriteStream(localFileName);
                            https.get(url, (response2) => {
                                response2.pipe(file)
                                    .on("close", () => {
                                        console.log(`Generated PNG file saved as "${localFileName} file."`);
                                    });
                            });
                            page++;
                        }, this);

                    });
            }
            else {
                console.log(`Operation ended with status: "${data.Status}".`);
            }
        })
    });
}


  Click here to get your Free Trial version of the SDK

Tutorials:

prev
next