ConvertPdfToJpegFromUploadedFile.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | /*jshint esversion: 6 */ var https = require( "https" ); var path = require( "path" ); 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 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 = "" ; // 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 JPEG convertPdfToJpeg(API_KEY, uploadedFileUrl, Password, Pages); }) . 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 convertPdfToJpeg(apiKey, uploadedFileUrl, password, pages) { // Prepare URL for `PDF To JPEG` API call var queryPath = `/v1/pdf/convert/to/jpg?password=${password}&pages=${pages}&url=${uploadedFileUrl}& async =True`; 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 ) { checkIfJobIsCompleted(data.jobId, data.url); } else { // Service reported error console.log( "convertPdfToJpeg(): " + data.message); } }); }) .on( "error" , (e) => { // Request error console.log( "convertPdfToJpeg(): " + 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}.jpg`; var file = fs.createWriteStream(localFileName); https.get(url, (response2) => { response2.pipe(file) .on( "close" , () => { console.log(`Generated JPEG 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
IMPORTANT:
Cloud API is deprecated and was replaced with more powerful and secure www.PDF.co Web API
CLICK HERE
TO LEARN MORE
ABOUT NEW
www.PDF.co
w/ Web API
On-Premise API Server
Cloud API Server