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