ConvertDocToPdfFromUploadedFile.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 | /*jshint esversion: 6 */ 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://app.pdf.co/documentation/api const API_KEY = "***********************************" ; // Source DOC or DOCX file const SourceFile = "./sample.docx" ; // Destination PDF file name const DestinationFile = "./result.pdf" ; // 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 DOC (DOCX) FILE TO PDF convertDocToPdf(API_KEY, uploadedFileUrl, 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 convertDocToPdf(apiKey, uploadedFileUrl, destinationFile) { // Prepare URL for `DOC To PDF` API call let queryPath = `/v1/pdf/convert/from/doc?name=${path.basename(destinationFile)}&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 PDF file var file = fs.createWriteStream(destinationFile); https.get(data.url, (response2) => { response2.pipe(file) .on( "close" , () => { console.log(`Generated PDF 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