Additional decryption translations

This commit is contained in:
Reece Browne 2024-12-06 21:26:28 +00:00
parent f2c9549ba1
commit 6ee6254f5a
4 changed files with 42 additions and 24 deletions

View File

@ -965,15 +965,15 @@ multiTool.dragDropMessage=Page(s) Selected
multiTool.undo=Undo multiTool.undo=Undo
multiTool.redo=Redo multiTool.redo=Redo
#multiTool-decrypt #decrypt
multiTool.decrypt.passwordPrompt=This file is password-protected. Please enter the password: decrypt.passwordPrompt=This file is password-protected. Please enter the password:
multiTool.decrypt.cancelled=Operation cancelled for PDF: {0} decrypt.cancelled=Operation cancelled for PDF: {0}
multiTool.decrypt.noPassword=No password provided for encrypted PDF: {0} decrypt.noPassword=No password provided for encrypted PDF: {0}
multiTool.decrypt.invalidPassword=Please try again with the correct password. decrypt.invalidPassword=Please try again with the correct password.
multiTool.decrypt.invalidPasswordHeader=Incorrect password for PDF: {0} decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0}
multiTool.decrypt.unexpectedError=There was an error processing the file. Please try again. decrypt.unexpectedError=There was an error processing the file. Please try again.
multiTool.decrypt.serverError=Server error while decrypting: {0} decrypt.serverError=Server error while decrypting: {0}
multiTool.decrypt.success=File decrypted successfully. decrypt.success=File decrypted successfully.
#multiTool-advert #multiTool-advert
multiTool-advert.message=This feature is also available in our <a href="{0}">multi-tool page</a>. Check it out for enhanced page-by-page UI and additional features! multiTool-advert.message=This feature is also available in our <a href="{0}">multi-tool page</a>. Check it out for enhanced page-by-page UI and additional features!

View File

@ -71,9 +71,6 @@
}, 5000); }, 5000);
try { try {
submitButton.textContent = 'Processing...';
submitButton.disabled = true;
if (!url.includes('remove-password')) { if (!url.includes('remove-password')) {
// Check if any PDF files are encrypted and handle decryption if necessary // Check if any PDF files are encrypted and handle decryption if necessary
const decryptedFiles = await checkAndDecryptFiles(url, files); const decryptedFiles = await checkAndDecryptFiles(url, files);
@ -84,6 +81,9 @@
}); });
} }
submitButton.textContent = 'Processing...';
submitButton.disabled = true;
if (remoteCall === true) { if (remoteCall === true) {
if (override === 'multi' || (!multipleInputsForSingleRequest && files.length > 1 && override !== 'single')) { if (override === 'multi' || (!multipleInputsForSingleRequest && files.length > 1 && override !== 'single')) {
await submitMultiPdfForm(url, files); await submitMultiPdfForm(url, files);
@ -181,11 +181,14 @@
if (error.name === 'PasswordException' && error.code === 1) { if (error.name === 'PasswordException' && error.code === 1) {
console.log(`PDF requires password: ${file.name}`, error); console.log(`PDF requires password: ${file.name}`, error);
console.log(`Attempting to remove password from PDF: ${file.name} with password.`); console.log(`Attempting to remove password from PDF: ${file.name} with password.`);
const password = prompt(`This PDF (${file.name}) is encrypted. Please enter the password:`); const password = prompt(`${window.translations.decrypt.passwordPrompt}`);
if (!password) { if (!password) {
console.error(`No password provided for encrypted PDF: ${file.name}`); console.error(`No password provided for encrypted PDF: ${file.name}`);
showErrorBanner(`No password provided for encrypted PDF: ${file.name}`, 'Please enter a valid password.'); showErrorBanner(
`${window.translations.decrypt.noPassword.replace('{0}', file.name)}`,
`${window.translations.decrypt.unexpectedError}`
);
throw error; throw error;
} }
@ -217,7 +220,10 @@
} }
} catch (decryptError) { } catch (decryptError) {
console.error(`Failed to decrypt PDF: ${file.name}`, decryptError); console.error(`Failed to decrypt PDF: ${file.name}`, decryptError);
showErrorBanner(`Failed to decrypt PDF: ${file.name}`, 'Incorrect password or unsupported encryption.'); showErrorBanner(
`${window.translations.invalidPasswordHeader.replace('{0}', file.name)}`,
`${window.translations.invalidPassword}`
);
throw decryptError; throw decryptError;
} }
} else { } else {

View File

@ -203,7 +203,19 @@
</script> </script>
<script type="module" th:src="@{'/pdfjs-legacy/pdf.mjs'}"></script> <script type="module" th:src="@{'/pdfjs-legacy/pdf.mjs'}"></script>
<script th:src="@{'/js/downloader.js'}"></script> <script th:src="@{'/js/downloader.js'}"></script>
<script>
window.translations = {
decrypt: {
passwordPrompt: '[[#{decrypt.passwordPrompt}]]',
cancelled: '[[#{decrypt.cancelled}]]',
noPassword: '[[#{decrypt.noPassword}]]',
invalidPassword: '[[#{decrypt.invalidPassword}]]',
invalidPasswordHeader: '[[#{decrypt.invalidPasswordHeader}]]',
unexpectedError: '[[#{decrypt.unexpectedError}]]',
serverError: '[[#{decrypt.serverError}]]',
success: '[[#{decrypt.success}]]',
}
};</script>
<div class="custom-file-chooser mb-3" th:attr="data-bs-unique-id=${name}, data-bs-element-id=${name+'-input'}, data-bs-element-container-id=${name+'-input-container'}, data-bs-files-selected=#{filesSelected}, data-bs-pdf-prompt=#{pdfPrompt}"> <div class="custom-file-chooser mb-3" th:attr="data-bs-unique-id=${name}, data-bs-element-id=${name+'-input'}, data-bs-element-container-id=${name+'-input-container'}, data-bs-files-selected=#{filesSelected}, data-bs-pdf-prompt=#{pdfPrompt}">
<div class="mb-3 d-flex flex-row justify-content-center align-items-center flex-wrap input-container" th:name="${name}+'-input'" th:id="${name}+'-input-container'" th:data-text="#{fileChooser.hoveredDragAndDrop}"> <div class="mb-3 d-flex flex-row justify-content-center align-items-center flex-wrap input-container" th:name="${name}+'-input'" th:id="${name}+'-input-container'" th:data-text="#{fileChooser.hoveredDragAndDrop}">
<label class="file-input-btn d-none"> <label class="file-input-btn d-none">

View File

@ -163,14 +163,14 @@
dragDropMessage:'[[#{multiTool.dragDropMessage}]]', dragDropMessage:'[[#{multiTool.dragDropMessage}]]',
undo: '[[#{multiTool.undo}]]', undo: '[[#{multiTool.undo}]]',
redo: '[[#{multiTool.redo}]]', redo: '[[#{multiTool.redo}]]',
passwordPrompt: '[[#{multiTool.decrypt.passwordPrompt}]]', passwordPrompt: '[[#{decrypt.passwordPrompt}]]',
cancelled: '[[#{multiTool.decrypt.cancelled}]]', cancelled: '[[#{decrypt.cancelled}]]',
noPassword: '[[#{multiTool.decrypt.noPassword}]]', noPassword: '[[#{decrypt.noPassword}]]',
invalidPassword: '[[#{multiTool.decrypt.invalidPassword}]]', invalidPassword: '[[#{decrypt.invalidPassword}]]',
invalidPasswordHeader: '[[#{multiTool.decrypt.invalidPasswordHeader}]]', invalidPasswordHeader: '[[#{decrypt.invalidPasswordHeader}]]',
unexpectedError: '[[#{multiTool.decrypt.unexpectedError}]]', unexpectedError: '[[#{decrypt.unexpectedError}]]',
serverError: '[[#{multiTool.decrypt.serverError}]]', serverError: '[[#{decrypt.serverError}]]',
success: '[[#{multiTool.decrypt.success}]]', success: '[[#{decrypt.success}]]',
}; };