mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-09-14 04:35:29 +02:00
# Description of Changes Migrated Stirling PDF to a multi-module structure: * Introduced new `:stirling-pdf` module * Moved all the core logic and features of Stirling PDF into `:stirling-pdf` * Updated paths of jobs and scripts --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details.
77 lines
2.6 KiB
JavaScript
77 lines
2.6 KiB
JavaScript
window.goToFirstOrLastPage = goToFirstOrLastPage;
|
|
|
|
document.getElementById('download-pdf').addEventListener('click', async () => {
|
|
const downloadButton = document.getElementById('download-pdf');
|
|
const originalContent = downloadButton.innerHTML;
|
|
|
|
downloadButton.disabled = true;
|
|
downloadButton.innerHTML = `
|
|
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
|
|
`;
|
|
|
|
try {
|
|
const modifiedPdf = await DraggableUtils.getOverlayedPdfDocument();
|
|
const modifiedPdfBytes = await modifiedPdf.save();
|
|
const blob = new Blob([modifiedPdfBytes], { type: 'application/pdf' });
|
|
const link = document.createElement('a');
|
|
link.href = URL.createObjectURL(blob);
|
|
link.download = originalFileName + '_addedImage.pdf';
|
|
link.click();
|
|
} finally {
|
|
downloadButton.disabled = false;
|
|
downloadButton.innerHTML = originalContent;
|
|
}
|
|
});
|
|
let originalFileName = '';
|
|
document.querySelector('input[name=pdf-upload]').addEventListener('change', async (event) => {
|
|
const fileInput = event.target;
|
|
fileInput.addEventListener('file-input-change', async (e) => {
|
|
const { allFiles } = e.detail;
|
|
if (allFiles && allFiles.length > 0) {
|
|
const file = allFiles[0];
|
|
originalFileName = file.name.replace(/\.[^/.]+$/, '');
|
|
const pdfData = await file.arrayBuffer();
|
|
pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs';
|
|
const pdfDoc = await pdfjsLib.getDocument({ data: pdfData }).promise;
|
|
await DraggableUtils.renderPage(pdfDoc, 0);
|
|
|
|
document.querySelectorAll('.show-on-file-selected').forEach((el) => {
|
|
el.style.cssText = '';
|
|
});
|
|
}
|
|
});
|
|
});
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
document.querySelectorAll('.show-on-file-selected').forEach((el) => {
|
|
el.style.cssText = 'display:none !important';
|
|
});
|
|
document.addEventListener('keydown', (e) => {
|
|
if (e.key === 'Delete') {
|
|
DraggableUtils.deleteDraggableCanvas(DraggableUtils.getLastInteracted());
|
|
}
|
|
});
|
|
});
|
|
|
|
const imageUpload = document.querySelector('input[name=image-upload]');
|
|
imageUpload.addEventListener('change', (e) => {
|
|
if (!e.target.files) {
|
|
return;
|
|
}
|
|
for (const imageFile of e.target.files) {
|
|
var reader = new FileReader();
|
|
reader.readAsDataURL(imageFile);
|
|
reader.onloadend = function (e) {
|
|
DraggableUtils.createDraggableCanvasFromUrl(e.target.result);
|
|
};
|
|
}
|
|
});
|
|
|
|
async function goToFirstOrLastPage(page) {
|
|
if (page) {
|
|
const lastPage = DraggableUtils.pdfDoc.numPages;
|
|
await DraggableUtils.goToPage(lastPage - 1);
|
|
} else {
|
|
await DraggableUtils.goToPage(0);
|
|
}
|
|
}
|