From 6fb8cffe1054f204244239016fb4bc6e7c90b05c Mon Sep 17 00:00:00 2001 From: Dmitriy-Xawstov Date: Tue, 19 Aug 2025 19:40:18 +0300 Subject: [PATCH 1/3] Added change password in pdf snippet --- UsesCases/EncryptDecrypt/passwordModify.js | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 UsesCases/EncryptDecrypt/passwordModify.js diff --git a/UsesCases/EncryptDecrypt/passwordModify.js b/UsesCases/EncryptDecrypt/passwordModify.js new file mode 100644 index 00000000..89a8bed7 --- /dev/null +++ b/UsesCases/EncryptDecrypt/passwordModify.js @@ -0,0 +1,57 @@ +import credentials from "../../../Credentials/credentials.json" with { type: "json" }; // json-file in this format: { "id": "*****", "key": "*******" } +import fs from 'node:fs/promises'; +import path from 'node:path'; +import { PdfApi } from "../../src/api/api.js"; + +const configParams = { + LOCAL_FOLDER: "C:\\Samples\\", + PDF_DOCUMENT_NAME: "sample_encrypted.pdf", + LOCAL_RESULT_DOCUMENT_NAME: "output_sample.pdf", + DOCUMENT_PASSWORD: "Owner-Password", + NEW_USER_PASSWORD: "NEW-User-Password", + NEW_OWNER_PASSWORD: "NEW-Owner-Password", +}; + +const pdfApi = new PdfApi(credentials.id, credentials.key); + +const pdfPasswordModify = { + async uploadDocument () { + const fileNamePath = path.join(configParams.LOCAL_FOLDER, configParams.PDF_DOCUMENT_NAME); + const pdfFileData = await fs.readFile(fileNamePath); + await pdfApi.uploadFile(configParams.PDF_DOCUMENT_NAME, pdfFileData) + .then(() => console.log("File: '" + configParams.PDF_DOCUMENT_NAME +"' successfully uploaded.")); + }, + + async downloadResult() { + const changedPdfData = await pdfApi.downloadFile(configParams.PDF_DOCUMENT_NAME); + const filePath = path.join(configParams.LOCAL_FOLDER, configParams.LOCAL_RESULT_DOCUMENT_NAME); + await fs.writeFile(filePath, changedPdfData.body); + console.log("Downloaded: " + filePath); + }, + + async change_passwords() { + const password_encoded = btoa(configParams.DOCUMENT_PASSWORD); + const new_user_password_encoded = btoa(configParams.NEW_USER_PASSWORD); + const new_owner_password_encoded = btoa(configParams.NEW_OWNER_PASSWORD); + + const response = await pdfApi.postChangePasswordDocumentInStorage(configParams.PDF_DOCUMENT_NAME, password_encoded, new_user_password_encoded, new_owner_password_encoded); + + if (response.body.code == 200) + console.log("change_passwords(): Password in document #'" + configParams.PDF_DOCUMENT_NAME + "' successfully changed.") + else + throw new Error("change_passwords(): Failed to decrypt document #'" + configParams.PDF_DOCUMENT_NAME + "'. Response code: {" + response.code + "}") + }, + +} + +async function main() { + try { + await pdfPasswordModify.uploadDocument(); + await pdfPasswordModify.change_passwords(); + await pdfPasswordModify.downloadResult(); + } catch (error) { + console.error("Error:", error.message); + } +} + +main(); \ No newline at end of file From bf8ba8dbb801fd062a8ea3848f169a3aeb6cde4f Mon Sep 17 00:00:00 2001 From: Dmitriy-Xawstov Date: Tue, 19 Aug 2025 19:41:51 +0300 Subject: [PATCH 2/3] Update passwordModify.js --- UsesCases/EncryptDecrypt/passwordModify.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/UsesCases/EncryptDecrypt/passwordModify.js b/UsesCases/EncryptDecrypt/passwordModify.js index 89a8bed7..050317ae 100644 --- a/UsesCases/EncryptDecrypt/passwordModify.js +++ b/UsesCases/EncryptDecrypt/passwordModify.js @@ -39,7 +39,7 @@ const pdfPasswordModify = { if (response.body.code == 200) console.log("change_passwords(): Password in document #'" + configParams.PDF_DOCUMENT_NAME + "' successfully changed.") else - throw new Error("change_passwords(): Failed to decrypt document #'" + configParams.PDF_DOCUMENT_NAME + "'. Response code: {" + response.code + "}") + throw new Error("change_passwords(): Failed to change password in document #'" + configParams.PDF_DOCUMENT_NAME + "'. Response code: {" + response.code + "}") }, } @@ -54,4 +54,5 @@ async function main() { } } -main(); \ No newline at end of file + +main(); From e0cc2ad8d6a99457e8ff1e53283fb334b4988c9d Mon Sep 17 00:00:00 2001 From: Dmitriy-Xawstov Date: Tue, 19 Aug 2025 23:43:29 +0300 Subject: [PATCH 3/3] Update passwordModify.js --- UsesCases/EncryptDecrypt/passwordModify.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/UsesCases/EncryptDecrypt/passwordModify.js b/UsesCases/EncryptDecrypt/passwordModify.js index 050317ae..9dbc694e 100644 --- a/UsesCases/EncryptDecrypt/passwordModify.js +++ b/UsesCases/EncryptDecrypt/passwordModify.js @@ -6,7 +6,7 @@ import { PdfApi } from "../../src/api/api.js"; const configParams = { LOCAL_FOLDER: "C:\\Samples\\", PDF_DOCUMENT_NAME: "sample_encrypted.pdf", - LOCAL_RESULT_DOCUMENT_NAME: "output_sample.pdf", + LOCAL_RESULT_DOCUMENT_NAME: "change_password_output_sample.pdf", DOCUMENT_PASSWORD: "Owner-Password", NEW_USER_PASSWORD: "NEW-User-Password", NEW_OWNER_PASSWORD: "NEW-Owner-Password", @@ -14,7 +14,7 @@ const configParams = { const pdfApi = new PdfApi(credentials.id, credentials.key); -const pdfPasswordModify = { +const pdfEncoder = { async uploadDocument () { const fileNamePath = path.join(configParams.LOCAL_FOLDER, configParams.PDF_DOCUMENT_NAME); const pdfFileData = await fs.readFile(fileNamePath); @@ -39,20 +39,19 @@ const pdfPasswordModify = { if (response.body.code == 200) console.log("change_passwords(): Password in document #'" + configParams.PDF_DOCUMENT_NAME + "' successfully changed.") else - throw new Error("change_passwords(): Failed to change password in document #'" + configParams.PDF_DOCUMENT_NAME + "'. Response code: {" + response.code + "}") + throw new Error("change_passwords(): Failed to decrypt document #'" + configParams.PDF_DOCUMENT_NAME + "'. Response code: {" + response.code + "}") }, } async function main() { try { - await pdfPasswordModify.uploadDocument(); - await pdfPasswordModify.change_passwords(); - await pdfPasswordModify.downloadResult(); + await pdfEncoder.uploadDocument(); + await pdfEncoder.change_passwords(); + await pdfEncoder.downloadResult(); } catch (error) { console.error("Error:", error.message); } } - main();