-
Notifications
You must be signed in to change notification settings - Fork 0
/
OperationSplit.js
69 lines (63 loc) · 2.47 KB
/
OperationSplit.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
const PDFToolsSdk = require('@adobe/documentservices-pdftools-node-sdk');
const getPageRanges = (startingPage, endingPage) => {
// Specify pages ranges.
const pageRanges = new PDFToolsSdk.PageRanges();
// Add page 1.
if(startingPage ==endingPage) pageRanges.addSinglePage(startingPage);
else pageRanges.addPageRange(startingPage, endingPage);
return pageRanges;
};
module.exports = async function splitFile(baseFile, startingPage, endingPage){
let saved;
try {
// Initial setup, create credentials instance.
const credentials = PDFToolsSdk.Credentials
.serviceAccountCredentialsBuilder()
.fromFile("pdftools-api-credentials.json")
.build();
// Create an ExecutionContext using credentials
const executionContext = PDFToolsSdk.ExecutionContext.create(credentials);
// Create a new operation instance.
const splitPDFOperation = PDFToolsSdk.SplitPDF.Operation.createNew(),
input = PDFToolsSdk.FileRef.createFromLocalFile(
`uploads/${baseFile}`,
PDFToolsSdk.SplitPDF.SupportedSourceFormat.pdf
);
// Set operation input from a source file.
splitPDFOperation.setInput(input);
// Set the page ranges where each page range corresponds to a single output file.
const pageRanges = getPageRanges(startingPage, endingPage);
splitPDFOperation.setPageRanges(pageRanges);
// Execute the operation and Save the result to the specified location.
saved = await splitPDFOperation.execute(executionContext)
.then(async result => {
let savedFiles = [];
for(let i = 0; i < result.length; i++){
let savedFile = `${baseFile.replace(".pdf","")}_${i}-${Date.now()}.pdf`
await result[i].saveAsFile(`uploads/${savedFile}`)
await savedFiles.push(savedFile)
}
return ({
success: true,
savedFiles: savedFiles
})
})
.catch(err => {
if(err instanceof PDFToolsSdk.Error.ServiceApiError
|| err instanceof PDFToolsSdk.Error.ServiceUsageError) {
console.log('Exception encountered while executing operation', err);
} else {
console.log('Exception encountered while executing operation', err);
}
return ({
success: false
})
});
} catch (err) {
console.log('Exception encountered while executing operation', err);
return ({
success: false
})
}
return saved
}