diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java b/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java index 27262feb..cb5eef10 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java @@ -98,10 +98,10 @@ public class CertSignController { public CreateSignature(KeyStore keystore, char[] pin) throws KeyStoreException, - UnrecoverableKeyException, - NoSuchAlgorithmException, - IOException, - CertificateException { + UnrecoverableKeyException, + NoSuchAlgorithmException, + IOException, + CertificateException { super(keystore, pin); ClassPathResource resource = new ClassPathResource("static/images/signature.png"); try (InputStream is = resource.getInputStream()) { @@ -160,8 +160,7 @@ public class CertSignController { extState.setNonStrokingAlphaConstant(0.5f); cs.setGraphicsStateParameters(extState); cs.transform(Matrix.getScaleInstance(0.08f, 0.08f)); - PDImageXObject img = - PDImageXObject.createFromFileByExtension(logoFile, doc); + PDImageXObject img = PDImageXObject.createFromFileByExtension(logoFile, doc); cs.drawImage(img, 100, 0); cs.restoreGraphicsState(); } @@ -209,10 +208,7 @@ public class CertSignController { } @PostMapping(consumes = "multipart/form-data", value = "/cert-sign") - @Operation( - summary = "Sign PDF with a Digital Certificate", - description = - "This endpoint accepts a PDF file, a digital certificate and related information to sign the PDF. It then returns the digitally signed PDF file. Input:PDF Output:PDF Type:SISO") + @Operation(summary = "Sign PDF with a Digital Certificate", description = "This endpoint accepts a PDF file, a digital certificate and related information to sign the PDF. It then returns the digitally signed PDF file. Input:PDF Output:PDF Type:SISO") public ResponseEntity signPDFWithCert(@ModelAttribute SignPDFWithCertRequest request) throws Exception { MultipartFile pdf = request.getFileInput(); @@ -242,7 +238,7 @@ public class CertSignController { PrivateKey privateKey = getPrivateKeyFromPEM(privateKeyFile.getBytes(), password); Certificate cert = (Certificate) getCertificateFromPEM(certFile.getBytes()); ks.setKeyEntry( - "alias", privateKey, password.toCharArray(), new Certificate[] {cert}); + "alias", privateKey, password.toCharArray(), new Certificate[] { cert }); break; case "PKCS12": ks = KeyStore.getInstance("PKCS12"); @@ -314,22 +310,19 @@ public class CertSignController { private PrivateKey getPrivateKeyFromPEM(byte[] pemBytes, String password) throws IOException, OperatorCreationException, PKCSException { - try (PEMParser pemParser = - new PEMParser(new InputStreamReader(new ByteArrayInputStream(pemBytes)))) { + try (PEMParser pemParser = new PEMParser(new InputStreamReader(new ByteArrayInputStream(pemBytes)))) { Object pemObject = pemParser.readObject(); JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC"); PrivateKeyInfo pkInfo; if (pemObject instanceof PKCS8EncryptedPrivateKeyInfo) { - InputDecryptorProvider decProv = - new JceOpenSSLPKCS8DecryptorProviderBuilder().build(password.toCharArray()); + InputDecryptorProvider decProv = new JceOpenSSLPKCS8DecryptorProviderBuilder() + .build(password.toCharArray()); pkInfo = ((PKCS8EncryptedPrivateKeyInfo) pemObject).decryptPrivateKeyInfo(decProv); } else if (pemObject instanceof PEMEncryptedKeyPair) { - PEMDecryptorProvider decProv = - new JcePEMDecryptorProviderBuilder().build(password.toCharArray()); - pkInfo = - ((PEMEncryptedKeyPair) pemObject) - .decryptKeyPair(decProv) - .getPrivateKeyInfo(); + PEMDecryptorProvider decProv = new JcePEMDecryptorProviderBuilder().build(password.toCharArray()); + pkInfo = ((PEMEncryptedKeyPair) pemObject) + .decryptKeyPair(decProv) + .getPrivateKeyInfo(); } else { pkInfo = ((PEMKeyPair) pemObject).getPrivateKeyInfo(); } diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 1257625e..bd7d3b10 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=هذه الميزة متوفرة في صفحة الأدوات المتعددة لدينا. اطلع عليها للحصول على واجهة مستخدم محسّنة لكل صفحة وميزات إضافية! diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 1521c77d..8374f522 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index 38ee1edd..0de8afc7 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_cs_CZ.properties b/src/main/resources/messages_cs_CZ.properties index a7490121..ac8c6f00 100644 --- a/src/main/resources/messages_cs_CZ.properties +++ b/src/main/resources/messages_cs_CZ.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_da_DK.properties b/src/main/resources/messages_da_DK.properties index e744d7f4..8750bcfd 100644 --- a/src/main/resources/messages_da_DK.properties +++ b/src/main/resources/messages_da_DK.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index 019a0725..a51e010d 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=Diese Funktion ist auch auf unserer PDF-Multitool-Seite verfügbar. Probieren Sie sie aus, denn sie bietet eine verbesserte Benutzeroberfläche und zusätzliche Funktionen! diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index 093b5fc3..cf4f2e47 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index bc0b9745..bfd98861 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index d8028142..8bc95393 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index db7c43bc..125ff16c 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index ecfef3f2..a9e9a160 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index aa4753b3..97b9f16a 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_ga_IE.properties b/src/main/resources/messages_ga_IE.properties index 2e1dfbc2..2787fd02 100644 --- a/src/main/resources/messages_ga_IE.properties +++ b/src/main/resources/messages_ga_IE.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 3547f9be..32762eed 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_hr_HR.properties b/src/main/resources/messages_hr_HR.properties index d4025f82..7ab24943 100644 --- a/src/main/resources/messages_hr_HR.properties +++ b/src/main/resources/messages_hr_HR.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index 7890785c..dc209207 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index ec4d3036..d5840926 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 1e0f6d73..1cd63418 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -952,6 +952,7 @@ multiTool.split=Dividi multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=Questa funzione è disponibile anche nella nostra pagina multi-strumento. Scoprila per un'interfaccia utente pagina per pagina migliorata e funzionalità aggiuntive! diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index 48e3e4d9..1a84eedd 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index 57791893..792dd7cd 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index 098bbee7..451d7e8c 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_no_NB.properties b/src/main/resources/messages_no_NB.properties index 07782283..f4ac6dc8 100644 --- a/src/main/resources/messages_no_NB.properties +++ b/src/main/resources/messages_no_NB.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index 11b1414a..520b2756 100755 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index 9629d40d..bc75eecd 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index d48c9e44..72048120 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index b3d55298..b7005691 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index 708fe435..29b07bb1 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_sk_SK.properties b/src/main/resources/messages_sk_SK.properties index 1b26fc2a..88709aef 100644 --- a/src/main/resources/messages_sk_SK.properties +++ b/src/main/resources/messages_sk_SK.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index ebd60d6f..966fc749 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index 5051fea8..c1b0ed2a 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_th_TH.properties b/src/main/resources/messages_th_TH.properties index 84944663..229a8eb3 100644 --- a/src/main/resources/messages_th_TH.properties +++ b/src/main/resources/messages_th_TH.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index 3458f679..d8adef67 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties index d0266f59..bfeee3a9 100644 --- a/src/main/resources/messages_uk_UA.properties +++ b/src/main/resources/messages_uk_UA.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_vi_VN.properties b/src/main/resources/messages_vi_VN.properties index be7a3775..e75ae670 100644 --- a/src/main/resources/messages_vi_VN.properties +++ b/src/main/resources/messages_vi_VN.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index 1aa3f9c8..2db63cf8 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index 6db39f9c..1e0834f0 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -952,6 +952,7 @@ multiTool.split=Split multiTool.moveLeft=Move Left multiTool.moveRight=Move Right multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! diff --git a/src/main/resources/static/css/dragdrop.css b/src/main/resources/static/css/dragdrop.css index 7758bdd9..65ec786f 100644 --- a/src/main/resources/static/css/dragdrop.css +++ b/src/main/resources/static/css/dragdrop.css @@ -19,6 +19,15 @@ transform-origin: top left; } +#drag-container .multidrag { + position: fixed; + max-width: 200px; + max-height: 200px; + transform-origin: top left; + margin-left: 1rem; + background-color: rgba(0, 29, 41, 0.9); +} + .drag-manager_dragging { width: 0px; visibility: hidden; diff --git a/src/main/resources/static/css/pdfActions.css b/src/main/resources/static/css/pdfActions.css index 02309735..8d69d792 100644 --- a/src/main/resources/static/css/pdfActions.css +++ b/src/main/resources/static/css/pdfActions.css @@ -138,7 +138,7 @@ html[dir="rtl"] .pdf-actions_container:last-child>.pdf-actions_insert-file-butto padding: 6px 8px; border-radius: 8px; font-size: 16px; - z-index: 3; + z-index: 10; } .hidden { diff --git a/src/main/resources/static/js/multitool/DragDropManager.js b/src/main/resources/static/js/multitool/DragDropManager.js index 969f2fc2..ce79ee14 100644 --- a/src/main/resources/static/js/multitool/DragDropManager.js +++ b/src/main/resources/static/js/multitool/DragDropManager.js @@ -1,29 +1,21 @@ class DragDropManager { - dragContainer; - wrapper; - pageDirection; - movePageTo; - pageDragging; - draggelEl; - draggedImageEl; - hoveredEl; - endInsertionElement; - constructor(id, wrapperId) { this.dragContainer = document.getElementById(id); this.pageDirection = document.documentElement.getAttribute("dir"); this.wrapper = document.getElementById(wrapperId); this.pageDragging = false; this.hoveredEl = undefined; - this.draggelEl = undefined; this.draggedImageEl = undefined; + this.draggedEl = undefined; + this.selectedPageElements = []; // Store selected pages for multi-page mode - var styleElement = document.createElement("link"); + // Add CSS dynamically + const styleElement = document.createElement("link"); styleElement.rel = "stylesheet"; styleElement.href = "css/dragdrop.css"; - document.head.appendChild(styleElement); + // Create the endpoint element const div = document.createElement("div"); div.classList.add("drag-manager_endpoint"); div.innerHTML = ` @@ -32,6 +24,7 @@ class DragDropManager { `; this.endInsertionElement = div; + // Bind methods this.startDraggingPage = this.startDraggingPage.bind(this); this.onDragEl = this.onDragEl.bind(this); this.stopDraggingPage = this.stopDraggingPage.bind(this); @@ -40,20 +33,41 @@ class DragDropManager { } startDraggingPage(div) { - this.pageDragging = true; - this.draggedEl = div; - const img = div.querySelector("img"); - div.classList.add("drag-manager_dragging"); - const imageSrc = img.src; + if (window.selectPage) { + // Multi-page drag logic + this.selectedPageElements = window.selectedPages.map((index) => { + const pageEl = document.getElementById(`page-container-${index}`); + if (pageEl) { + pageEl.initialTransform = pageEl.style.transform || "translate(0px, 0px)"; + } + return pageEl; + }).filter(Boolean); - const imgEl = document.createElement("img"); - imgEl.classList.add("dragged-img"); - imgEl.src = imageSrc; - this.draggedImageEl = imgEl; - imgEl.style.visibility = "hidden"; - imgEl.style.transform = `rotate(${img.style.rotate === "" ? "0deg" : img.style.rotate}) translate(-50%, -50%)`; - this.dragContainer.appendChild(imgEl); + if (this.selectedPageElements.length === 0) return; + this.pageDragging = true; + this.draggedImageEl = document.createElement("div"); + this.draggedImageEl.classList.add("multidrag"); + this.draggedImageEl.textContent = `${this.selectedPageElements.length} ${window.translations.dragDropMessage}`; + this.draggedImageEl.style.visibility = "hidden"; + this.dragContainer.appendChild(this.draggedImageEl); + } else { + // Single-page drag logic + this.pageDragging = true; + this.draggedEl = div; + const img = div.querySelector("img"); + div.classList.add("drag-manager_dragging"); + + const imgEl = document.createElement("img"); + imgEl.classList.add("dragged-img"); + imgEl.src = img.src; + imgEl.style.visibility = "hidden"; + imgEl.style.transform = `rotate(${img.style.rotate === "" ? "0deg" : img.style.rotate}) translate(-50%, -50%)`; + this.draggedImageEl = imgEl; + this.dragContainer.appendChild(imgEl); + } + + // Common setup for both modes window.addEventListener("mouseup", this.stopDraggingPage); window.addEventListener("mousemove", this.onDragEl); this.wrapper.classList.add("drag-manager_dragging-container"); @@ -74,21 +88,43 @@ class DragDropManager { this.wrapper.classList.remove("drag-manager_dragging-container"); this.wrapper.removeChild(this.endInsertionElement); window.removeEventListener("mouseup", this.stopDraggingPage); - this.draggedImageEl = undefined; + + if (this.draggedImageEl) { + this.dragContainer.removeChild(this.draggedImageEl); + this.draggedImageEl = undefined; + } + + if (window.selectPage) { + // Multi-page drop logic + if (!this.hoveredEl) { + this.selectedPageElements.forEach((pageEl) => { + pageEl.style.transform = pageEl.initialTransform || "translate(0px, 0px)"; + pageEl.classList.remove("drag-manager_dragging"); + }); + } else { + this.selectedPageElements.forEach((pageEl) => { + pageEl.classList.remove("drag-manager_dragging"); + if (this.hoveredEl === this.endInsertionElement) { + this.movePageTo(pageEl); + } else { + this.movePageTo(pageEl, this.hoveredEl); + } + }); + } + this.selectedPageElements = []; + window.resetPages() + } else { + // Single-page drop logic + if (!this.hoveredEl) return; + this.draggedEl.classList.remove("drag-manager_dragging"); + if (this.hoveredEl === this.endInsertionElement) { + this.movePageTo(this.draggedEl); + } else { + this.movePageTo(this.draggedEl, this.hoveredEl); + } + } + this.pageDragging = false; - this.draggedEl.classList.remove("drag-manager_dragging"); - this.hoveredEl?.classList.remove("drag-manager_draghover"); - this.dragContainer.childNodes.forEach((dragChild) => { - this.dragContainer.removeChild(dragChild); - }); - if (!this.hoveredEl) { - return; - } - if (this.hoveredEl === this.endInsertionElement) { - this.movePageTo(this.draggedEl); - return; - } - this.movePageTo(this.draggedEl, this.hoveredEl); } setActions({ movePageTo }) { diff --git a/src/main/resources/static/js/multitool/PdfContainer.js b/src/main/resources/static/js/multitool/PdfContainer.js index c7db2829..41d96ac4 100644 --- a/src/main/resources/static/js/multitool/PdfContainer.js +++ b/src/main/resources/static/js/multitool/PdfContainer.js @@ -29,6 +29,7 @@ class PdfContainer { this.updatePagesFromCSV = this.updatePagesFromCSV.bind(this); this.addFilesBlankAll = this.addFilesBlankAll.bind(this) this.removeAllElements = this.removeAllElements.bind(this); + this.resetPages = this.resetPages.bind(this); this.pdfAdapters = pdfAdapters; @@ -55,6 +56,7 @@ class PdfContainer { window.updatePageNumbersAndCheckboxes = this.updatePageNumbersAndCheckboxes; window.addFilesBlankAll = this.addFilesBlankAll window.removeAllElements = this.removeAllElements; + window.resetPages = this.resetPages; const filenameInput = document.getElementById("filename-input"); const downloadBtn = document.getElementById("export-button"); @@ -193,7 +195,7 @@ class PdfContainer { const div = document.createElement("div"); div.classList.add("page-container"); - + div.id = "page-container-" + (i + 1); var img = document.createElement("img"); img.classList.add("page-image"); const imageSrc = await renderer.renderPage(i); @@ -202,7 +204,6 @@ class PdfContainer { img.rend = renderer; img.doc = pdfDocument; div.appendChild(img); - this.pdfAdapters.forEach((adapter) => { adapter.adapt?.(div); }); @@ -701,6 +702,31 @@ class PdfContainer { } } + resetPages() { + const pageContainers = this.pagesContainer.querySelectorAll(".page-container"); + + pageContainers.forEach((container, index) => { + container.id = "page-container-" + (index + 1); + }); + + const checkboxes = document.querySelectorAll(".pdf-actions_checkbox"); + window.selectAll = false; + const selectIcon = document.getElementById("select-All-Container"); + const deselectIcon = document.getElementById("deselect-All-Container"); + + selectIcon.style.display = "inline"; + deselectIcon.style.display = "none"; + + checkboxes.forEach((checkbox) => { + const pageNumber = Array.from(checkbox.parentNode.parentNode.children).indexOf(checkbox.parentNode) + 1; + + const index = window.selectedPages.indexOf(pageNumber); + if (index !== -1) { + window.selectedPages.splice(index, 1); + } + }); + window.toggleSelectPageVisibility(); + } setDownloadAttribute() { this.downloadLink.setAttribute("download", this.fileName ? this.fileName : "managed.pdf"); diff --git a/src/main/resources/templates/multi-tool.html b/src/main/resources/templates/multi-tool.html index 5ac9039e..2a47a1e9 100644 --- a/src/main/resources/templates/multi-tool.html +++ b/src/main/resources/templates/multi-tool.html @@ -112,13 +112,6 @@
-
-
- -
- File Page -
@@ -145,7 +138,8 @@ delete: '[[#{multiTool.delete}]]', split: '[[#{multiTool.split}]]', addFile: '[[#{multiTool.addFile}]]', - insertPageBreak:'[[#{multiTool.insertPageBreak}]]' + insertPageBreak:'[[#{multiTool.insertPageBreak}]]', + dragDropMessage:'[[#{multiTool.dragDropMessage}]]' };