mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2024-12-21 19:08:24 +01:00
65 lines
2.3 KiB
JavaScript
65 lines
2.3 KiB
JavaScript
|
import { scaleContent } from "./functions/scaleContent.js";
|
||
|
import { scalePage, PageSize } from "./functions/scalePage.js";
|
||
|
import * as exampleWorkflows from "./exampleWorkflows.js";
|
||
|
import { traverseOperations } from "./traverseOperations.js";
|
||
|
import * as Functions from "./functions.js";
|
||
|
|
||
|
(async () => {
|
||
|
const workflowField = document.getElementById("workflow");
|
||
|
|
||
|
const dropdown = document.getElementById("pdfOptions");
|
||
|
// Clear existing options (if any)
|
||
|
dropdown.innerHTML = '';
|
||
|
|
||
|
// Iterate over the keys of the object and create an option for each key
|
||
|
for (const key in exampleWorkflows) {
|
||
|
const option = document.createElement('option');
|
||
|
option.value = key;
|
||
|
option.text = key;
|
||
|
dropdown.appendChild(option);
|
||
|
}
|
||
|
|
||
|
const loadButton = document.getElementById("loadButton");
|
||
|
loadButton.addEventListener("click", (e) => {
|
||
|
workflowField.value = JSON.stringify(exampleWorkflows[dropdown.value], null, 2);
|
||
|
});
|
||
|
loadButton.click();
|
||
|
|
||
|
const pdfFileInput = document.getElementById('pdfFile');
|
||
|
const doneButton = document.getElementById("doneButton");
|
||
|
|
||
|
doneButton.addEventListener('click', async (e) => {
|
||
|
console.log("Starting...");
|
||
|
|
||
|
const files = Array.from(pdfFileInput.files);
|
||
|
const inputs = await Promise.all(files.map(async file => {
|
||
|
return {
|
||
|
originalFileName: file.name.replace(/\.[^/.]+$/, ""),
|
||
|
fileName: file.name.replace(/\.[^/.]+$/, ""),
|
||
|
buffer: new Uint8Array(await file.arrayBuffer())
|
||
|
}
|
||
|
}));
|
||
|
console.log(inputs);
|
||
|
|
||
|
const workflow = JSON.parse(workflowField.value);
|
||
|
console.log(workflow);
|
||
|
const traverse = traverseOperations(workflow.operations, inputs, Functions);
|
||
|
|
||
|
let pdfResults;
|
||
|
let iteration;
|
||
|
while (true) {
|
||
|
iteration = await traverse.next();
|
||
|
if (iteration.done) {
|
||
|
pdfResults = iteration.value;
|
||
|
console.log(`data: processing done\n\n`);
|
||
|
break;
|
||
|
}
|
||
|
console.log(`data: ${iteration.value}\n\n`);
|
||
|
}
|
||
|
|
||
|
// TODO: Zip if wanted
|
||
|
pdfResults.forEach(result => {
|
||
|
download(result.buffer, result.fileName, "application/pdf");
|
||
|
});
|
||
|
});
|
||
|
})();
|