পিডিএফবক্স (PDFBox) লাইব্রেরি ব্যবহার করে Java-তে পিডিএফ ডকুমেন্ট সুরক্ষিত করা সম্ভব। সুরক্ষিত পিডিএফ ডকুমেন্টের জন্য পাসওয়ার্ড সেট করা, অনুমতি (permissions) কনফিগার করা এবং ডকুমেন্টের সম্পাদনা বা প্রিন্টিং নিয়ন্ত্রণ করা যায়। এটি পিডিএফ ডকুমেন্টে নিরাপত্তা ব্যবস্থার মাধ্যমে ফাইলের অনুমোদিত ব্যবহারকারীদের অনুমতি দেয় এবং অন্যদের নিরুৎসাহিত করে।
পিডিএফ ডকুমেন্ট সুরক্ষিত করার জন্য প্রয়োজনীয় লাইব্রেরি
প্রথমে নিচের লাইব্রেরি ইমপোর্ট করতে হবে:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDEncryption;
import org.apache.pdfbox.pdmodel.PDDocumentSecurity;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDPassword;
পিডিএফ ডকুমেন্ট সুরক্ষিত করার প্রক্রিয়া
পিডিএফবক্স ব্যবহার করে পিডিএফ ডকুমেন্টে পাসওয়ার্ড এবং অনুমতি সেট করার একটি উদাহরণ নিচে দেওয়া হলো:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDEncryption;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import java.io.IOException;
public class SecurePDF {
public static void main(String[] args) {
try {
// নতুন পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
// নতুন পিডিএফ পেজ তৈরি
PDPage page = new PDPage();
document.addPage(page);
// পিডিএফ পেজে কন্টেন্ট স্ট্রিম তৈরি
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.beginText();
contentStream.newLineAtOffset(100, 700);
contentStream.showText("This is a secured PDF document!");
contentStream.endText();
contentStream.close();
// পিডিএফ সুরক্ষা সেট করা (পাসওয়ার্ড এবং অনুমতি)
document.protect("userPassword", "ownerPassword");
// পিডিএফ ডকুমেন্ট সেভ করা
document.save("secured_example.pdf");
// ডকুমেন্ট বন্ধ করা
document.close();
System.out.println("পিডিএফ সুরক্ষিত করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- PDDocument: পিডিএফ ডকুমেন্ট তৈরি বা লোড করার জন্য ব্যবহৃত ক্লাস।
- PDPage: নতুন পিডিএফ পেজ তৈরি করার জন্য ব্যবহৃত হয়।
- PDPageContentStream: এটি পিডিএফ পেজে কন্টেন্ট যেমন টেক্সট, লাইন ইত্যাদি যোগ করার জন্য ব্যবহৃত হয়।
- document.protect("userPassword", "ownerPassword"): এখানে
protectমেথড ব্যবহার করে পিডিএফ ডকুমেন্টে দুটি পাসওয়ার্ড সেট করা হচ্ছে।userPasswordব্যবহারকারীদের পিডিএফ খুলতে পাসওয়ার্ড চায়, আরownerPasswordমালিকের জন্য সম্পাদনা, প্রিন্টিং, কপি ইত্যাদি অনুমতি নিয়ন্ত্রণ করে।
পিডিএফ সুরক্ষিত করার আরও কিছু বিকল্প
পিডিএফবক্সের সাহায্যে আপনি সুরক্ষিত পিডিএফে নিম্নলিখিত অনুমতি কনফিগার করতে পারেন:
- তথ্য কপি বা টেক্সট সিলেকশন নিষিদ্ধ করা: অনুমতি সীমাবদ্ধ করে।
- প্রিন্টিং নিষিদ্ধ করা: ডকুমেন্ট প্রিন্টিং বন্ধ করা যায়।
- সুরক্ষা নিষেধাজ্ঞা: ডকুমেন্টে কোনো পরিবর্তন বা ইমেজ যোগ করা নিষিদ্ধ করা যায়।
অনুমতি সেট করার উদাহরণ
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDEncryption;
import org.apache.pdfbox.pdmodel.PDDocumentSecurity;
public class SecurePDFPermissions {
public static void main(String[] args) {
try {
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.beginText();
contentStream.showText("This PDF has restricted permissions!");
contentStream.endText();
contentStream.close();
// পিডিএফে সুরক্ষা এবং অনুমতি সেট করা
PDDocumentSecurity security = document.getSecurity();
security.setEncryption("ownerPassword", "userPassword",
PDEncryption.ALLOW_COPY | PDEncryption.ALLOW_PRINTING);
document.save("secured_permissions.pdf");
document.close();
System.out.println("পিডিএফ সুরক্ষিত এবং অনুমতি নির্ধারণ করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
পিডিএফ সুরক্ষিত করার সুবিধা
- নিরাপত্তা: পাসওয়ার্ড দিয়ে ডকুমেন্টটি সুরক্ষিত রাখা যায়, যাতে শুধুমাত্র অনুমোদিত ব্যবহারকারী পিডিএফটি খুলতে বা সম্পাদনা করতে পারে।
- অথেনটিকেশন: মালিক পাসওয়ার্ড ব্যবহারের মাধ্যমে প্রিন্টিং, কপি, এবং সম্পাদনার অনুমতি নিয়ন্ত্রণ করা যায়।
- বিশ্বস্ততা: সুরক্ষিত পিডিএফ ডকুমেন্টগুলি কম্পিউটার বা নেটওয়ার্ক ট্রান্সফারের সময় নিরাপদ থাকে।
পিডিএফবক্স (PDFBox) ব্যবহার করে পিডিএফ ডকুমেন্ট সুরক্ষিত করা একটি সহজ প্রক্রিয়া, যা পাসওয়ার্ড এবং অনুমতি কনফিগার করে ডকুমেন্টের নিরাপত্তা নিশ্চিত করে।
পিডিএফবক্স (PDFBox) ব্যবহার করে Java প্রোগ্রামে পিডিএফ ডকুমেন্টে পাসওয়ার্ড প্রটেকশন যোগ করা যায়। এটি পিডিএফ ডকুমেন্টের নিরাপত্তা বৃদ্ধি করতে সাহায্য করে, যাতে শুধুমাত্র অনুমোদিত ব্যবহারকারী পিডিএফ ফাইলটি ওপেন বা মডিফাই করতে পারে। পিডিএফবক্স লাইব্রেরি PDDocument ক্লাসের মাধ্যমে পাসওয়ার্ড সেট করার সুবিধা প্রদান করে।
পিডিএফ ডকুমেন্টের জন্য পাসওয়ার্ড প্রটেকশন যোগ করার প্রক্রিয়া
পিডিএফ ডকুমেন্টে পাসওয়ার্ড প্রটেকশন যোগ করতে, প্রথমে পিডিএফ ডকুমেন্ট লোড করতে হবে এবং তারপর setAllSecurityToBeRemoved(true) মেথডের মাধ্যমে নিরাপত্তা সক্ষম করতে হবে।
কোড উদাহরণ
নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি পিডিএফ ডকুমেন্টে পাসওয়ার্ড প্রটেকশন যোগ করা হচ্ছে:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDEncryption;
import java.io.IOException;
public class PDFPasswordProtection {
public static void main(String[] args) {
try {
// পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = PDDocument.load(new File("example.pdf"));
// পাসওয়ার্ড প্রটেকশন সেট করা
document.encrypt("password123"); // পাসওয়ার্ড সেট করা
// পিডিএফ ডকুমেন্ট সেভ করা
document.save("secured_example.pdf");
// ডকুমেন্ট বন্ধ করা
document.close();
System.out.println("পিডিএফ ডকুমেন্টে পাসওয়ার্ড প্রটেকশন যোগ করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- PDDocument.load(): এটি পিডিএফ ডকুমেন্ট লোড করার জন্য ব্যবহৃত হয়। এখানে
"example.pdf"পিডিএফ ফাইলটি লোড করা হচ্ছে। - document.encrypt(): এই মেথডের মাধ্যমে পাসওয়ার্ড সেট করা হয়। এখানে
"password123"পাসওয়ার্ড হিসেবে সেট করা হয়েছে। আপনি আপনার প্রয়োজন অনুযায়ী এটি পরিবর্তন করতে পারেন। - document.save(): এটি পিডিএফ ডকুমেন্টটি সেভ করে নতুন ফাইলের নাম হিসেবে
"secured_example.pdf"দেওয়া হয়েছে।
পাসওয়ার্ড রিমুভ করার পদ্ধতি
যদি পিডিএফ ডকুমেন্টের পাসওয়ার্ড রিমুভ করতে চান, তবে decrypt() মেথড ব্যবহার করতে হবে। উদাহরণ:
document.decrypt("password123"); // সঠিক পাসওয়ার্ড দিয়ে ডিক্রিপ্ট করা
পিডিএফ নিরাপত্তা কনফিগারেশন
পিডিএফবক্স আরও কিছু নিরাপত্তা কনফিগারেশন প্রদান করে যেমন:
- প্রিন্টিং অনুমতি: আপনি পিডিএফ ডকুমেন্টে প্রিন্টিং অনুমতি সীমিত করতে পারেন।
- এডিটিং অনুমতি: আপনি ডকুমেন্টে এডিটিং বা কপি করার অনুমতি নিষিদ্ধ করতে পারেন।
এটি করতে হলে নিরাপত্তা পলিসি কনফিগার করতে হবে, যা পিডিএফবক্সে সম্ভব।
পিডিএফবক্স ব্যবহার করে পিডিএফ ডকুমেন্টে পাসওয়ার্ড প্রটেকশন যোগ করা একটি সহজ প্রক্রিয়া। এটি পিডিএফ ডকুমেন্টের নিরাপত্তা নিশ্চিত করতে সাহায্য করে, বিশেষ করে যখন সেগুলি সেনসিটিভ বা কনফিডেনশিয়াল ডাটা ধারণ করে।
পিডিএফবক্স (PDFBox) Java লাইব্রেরি ব্যবহার করে পিডিএফ ডকুমেন্টে এনক্রিপশন (Encryption) এবং ডিক্রিপশন (Decryption) প্রয়োগ করা সম্ভব। এটি একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা পিডিএফ ডকুমেন্টের সিকিউরিটি নিশ্চিত করতে সাহায্য করে, যেমন পাসওয়ার্ড সুরক্ষা বা অন্যান্য শর্তাবলীর মাধ্যমে পিডিএফ অ্যাক্সেস সীমাবদ্ধ করা।
পিডিএফ এ এনক্রিপশন (Encryption)
এনক্রিপশন হল একটি প্রক্রিয়া যার মাধ্যমে পিডিএফ ডকুমেন্টে পাসওয়ার্ড বা অন্যান্য নিরাপত্তা ব্যবস্থা প্রয়োগ করা হয়, যাতে অবাঞ্ছিত ব্যবহারকারীরা ডকুমেন্টটি পড়তে বা সম্পাদনা করতে না পারে।
পিডিএফ এ এনক্রিপশন প্রয়োগ করার উদাহরণ
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
import java.io.IOException;
public class EncryptPDF {
public static void main(String[] args) throws IOException {
// পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
// কন্টেন্ট স্ট্রিম তৈরি
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.beginText();
contentStream.newLineAtOffset(100, 700);
contentStream.showText("This is an encrypted PDF");
contentStream.endText();
contentStream.close();
// এনক্রিপশন প্রোপার্টি সেট করা
String userPassword = "user123";
String ownerPassword = "owner123";
document.protect(new StandardProtectionPolicy(userPassword, ownerPassword));
// পিডিএফ সেভ করা
document.save("encrypted_pdf.pdf");
document.close();
}
}
কোড ব্যাখ্যা
- StandardProtectionPolicy: এটি পিডিএফ ডকুমেন্টে এনক্রিপশন প্রোপার্টি প্রয়োগ করার জন্য ব্যবহৃত হয়। এতে ব্যবহারকারী এবং মালিকের পাসওয়ার্ড সেট করা যায়।
- protect(): এই ফাংশনটি পিডিএফ ডকুমেন্টে এনক্রিপশন প্রক্রিয়া প্রয়োগ করে।
এনক্রিপশনের মাধ্যমে পিডিএফ ডকুমেন্টে অ্যাক্সেস সীমাবদ্ধ করা হয়। পাসওয়ার্ডের মাধ্যমে ডকুমেন্টটি খুলতে হলে ব্যবহারকারীকে সঠিক পাসওয়ার্ড প্রদান করতে হবে।
পিডিএফ এ ডিক্রিপশন (Decryption)
ডিক্রিপশন হল এনক্রিপ্ট করা পিডিএফ ডকুমেন্টের পাসওয়ার্ড সরবরাহ করার মাধ্যমে ডকুমেন্টটি আবার অ্যাক্সেস করা।
পিডিএফ এ ডিক্রিপশন প্রয়োগ করার উদাহরণ
import org.apache.pdfbox.pdmodel.*;
import java.io.IOException;
public class DecryptPDF {
public static void main(String[] args) throws IOException {
// এনক্রিপ্টেড পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = PDDocument.load(new File("encrypted_pdf.pdf"));
// ডিক্রিপশন প্রক্রিয়া
String userPassword = "user123"; // সঠিক পাসওয়ার্ড প্রদান করতে হবে
if (document.isEncrypted()) {
document.decrypt(userPassword); // ডিক্রিপ্ট করা
System.out.println("Document decrypted successfully.");
} else {
System.out.println("Document is not encrypted.");
}
// পিডিএফ সেভ করা
document.save("decrypted_pdf.pdf");
document.close();
}
}
কোড ব্যাখ্যা
- decrypt(): এটি ডকুমেন্টে প্রাপ্ত পাসওয়ার্ডের মাধ্যমে ডিক্রিপশন প্রক্রিয়া শুরু করে।
- isEncrypted(): এটি চেক করে যে ডকুমেন্টটি এনক্রিপ্টেড কিনা। যদি তা হয়, তাহলে ডিক্রিপশন করা হয়।
গুরুত্বপূর্ণ বিষয়
- এনক্রিপশন পদ্ধতি: পিডিএফবক্সে দুটি পাসওয়ার্ড প্রদান করা যায়—একটি ব্যবহারকারী (user) এবং অন্যটি মালিক (owner)। মালিক পাসওয়ার্ড পিডিএফের সম্পূর্ণ অ্যাক্সেস প্রদান করে, যখন ব্যবহারকারী পাসওয়ার্ড শুধুমাত্র নির্দিষ্ট সুবিধা (যেমন পড়া) প্রদান করে।
- পাসওয়ার্ড সুরক্ষা: এনক্রিপশন ব্যবহারের মাধ্যমে পিডিএফ ডকুমেন্টের সিকিউরিটি নিশ্চিত করা যায় এবং অপ্রত্যাশিত অ্যাক্সেস সীমিত করা যায়।
পিডিএফবক্সের মাধ্যমে পিডিএফ ডকুমেন্টে এনক্রিপশন এবং ডিক্রিপশন প্রয়োগ করা যেতে পারে, যা পিডিএফ ফাইলের সিকিউরিটি বাড়াতে সাহায্য করে। এটি ব্যবহারকারীদের ডকুমেন্টে সুরক্ষা প্রদান করতে এবং পাসওয়ার্ডের মাধ্যমে ডকুমেন্ট অ্যাক্সেস নিয়ন্ত্রণ করতে সক্ষম করে।
পিডিএফ ডকুমেন্টে ডিজিটাল সিগনেচার (Digital Signature) যোগ করা একটি গুরুত্বপূর্ণ প্রক্রিয়া, যা পিডিএফ ফাইলের অখণ্ডতা এবং স্বীকৃতিকে নিশ্চিত করে। PDFBox ব্যবহার করে আপনি Java দিয়ে পিডিএফ ডকুমেন্টে ডিজিটাল সিগনেচার যোগ করতে পারেন। ডিজিটাল সিগনেচারটি সাধারণত একটি সার্টিফিকেট এবং প্রাইভেট কী (Private Key) ব্যবহার করে করা হয়।
প্রয়োজনীয় লাইব্রেরি
ডিজিটাল সিগনেচার যোগ করার জন্য BouncyCastle লাইব্রেরি ব্যবহার করতে হয়। BouncyCastle একটি ওপেন সোর্স ক্রিপ্টোগ্রাফিক লাইব্রেরি যা পিডিএফে ডিজিটাল সিগনেচার যোগ করতে সাহায্য করে। PDFBox এর সাথে BouncyCastle লাইব্রেরি ইনস্টল করা প্রয়োজন।
- Maven ডিপেনডেন্সি: যদি আপনি Maven ব্যবহার করেন, তাহলে
pom.xmlফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.28</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.70</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk15on</artifactId>
<version>1.70</version>
</dependency>
ডিজিটাল সিগনেচার যোগ করার কোড উদাহরণ
নিচে একটি উদাহরণ দেওয়া হলো, যেখানে একটি পিডিএফ ডকুমেন্টে ডিজিটাল সিগনেচার যোগ করা হচ্ছে।
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDSignature;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDRectangle;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.io.File;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import java.security.Signature;
import java.security.Security;
public class PDFSignatureExample {
public static void main(String[] args) throws Exception {
// BouncyCastle পদ্ধতি সংযুক্ত করা
Security.addProvider(new BouncyCastleProvider());
// পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = PDDocument.load(new File("input.pdf"));
// পিডিএফে সিগনেচার অ্যাড করা
PDSignature signature = new PDSignature();
// ডিজিটাল সিগনেচারের অবস্থান এবং আকার
signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
signature.setSignDate(Calendar.getInstance());
document.addSignature(signature);
// কীস্টোর থেকে প্রাইভেট কী এবং সার্টিফিকেট লোড করা
KeyStore keyStore = KeyStore.getInstance("PKCS12");
char[] password = "password".toCharArray();
keyStore.load(new FileInputStream("path_to_keystore.p12"), password);
PrivateKey privateKey = (PrivateKey) keyStore.getKey("alias", password);
X509Certificate certificate = (X509Certificate) keyStore.getCertificate("alias");
// সিগনেচার তৈরি করা
Signature sig = Signature.getInstance("SHA256withRSA");
sig.initSign(privateKey);
sig.update("Signature data".getBytes());
byte[] signedData = sig.sign();
// সিগনেচার যোগ করা
PDDocumentCatalog catalog = document.getDocumentCatalog();
catalog.setSignature(signature);
// পিডিএফ ডকুমেন্টে সিগনেচার অ্যাড করা
FileOutputStream fos = new FileOutputStream("signed_pdf.pdf");
document.saveIncremental(fos);
document.close();
}
}
কোড ব্যাখ্যা
- BouncyCastle প্রোভাইডার:
Security.addProvider(new BouncyCastleProvider())লাইনের মাধ্যমে BouncyCastle প্রোভাইডার যোগ করা হয়, যা ডিজিটাল সিগনেচার প্রক্রিয়ায় সাহায্য করে।
- PDSignature সেটিংস:
PDSignatureঅবজেক্ট তৈরি করে সিগনেচারের ফিল্টার এবং সাবফিল্টার সেট করা হয়। এখানেPDSignature.FILTER_ADOBE_PPKLITEএবংPDSignature.SUBFILTER_ADBE_PKCS7_DETACHEDব্যবহার করা হয়েছে।
- KeyStore থেকে প্রাইভেট কী এবং সার্টিফিকেট লোড করা:
KeyStoreক্লাস ব্যবহার করে.p12ফরম্যাটের কীস্টোর থেকে প্রাইভেট কী এবং সার্টিফিকেট লোড করা হয়েছে।
- সিগনেচার সাইনিং:
Signatureক্লাস ব্যবহার করে সিগনেচার তৈরি এবং প্রাইভেট কী দিয়ে তা সাইন করা হয়েছে।
- পিডিএফে সিগনেচার অ্যাড করা:
document.addSignature(signature)দিয়ে পিডিএফ ডকুমেন্টে সিগনেচার যোগ করা হয়।
সিগনেচার ভেরিফিকেশন
ডিজিটাল সিগনেচার যোগ করার পর, আপনি যদি সিগনেচারটি যাচাই করতে চান, তবে নিচের কোডটি ব্যবহার করতে পারেন:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDSignature;
import org.apache.pdfbox.signature.SignatureVerifier;
public class VerifySignature {
public static void main(String[] args) throws Exception {
PDDocument document = PDDocument.load(new File("signed_pdf.pdf"));
PDSignature signature = document.getSignature(0);
SignatureVerifier verifier = new SignatureVerifier();
boolean isValid = verifier.verify(signature);
if (isValid) {
System.out.println("Signature is valid.");
} else {
System.out.println("Signature is not valid.");
}
document.close();
}
}
এভাবে PDFBox এবং BouncyCastle ব্যবহার করে পিডিএফ ডকুমেন্টে ডিজিটাল সিগনেচার যোগ করা সম্ভব। আপনি আপনার প্রয়োজন অনুযায়ী সার্টিফিকেট, প্রাইভেট কী এবং পিডিএফ ডকুমেন্টের সাথে সিগনেচার সম্পন্ন করতে পারবেন।
PDFBox লাইব্রেরি ব্যবহার করে আপনি পিডিএফ ডকুমেন্টে পাসওয়ার্ড প্রটেকশন (সুরক্ষা) যোগ করতে পারেন। এটি পিডিএফ ফাইলের নিরাপত্তা নিশ্চিত করতে সাহায্য করে, যাতে ব্যবহারকারী শুধুমাত্র সঠিক পাসওয়ার্ড জানলে ফাইলটি খুলতে পারে বা সম্পাদনা করতে পারে।
প্রয়োজনীয় লাইব্রেরি
প্রথমে আপনার প্রজেক্টে PDFBox লাইব্রেরি অন্তর্ভুক্ত থাকতে হবে। যদি এটি পূর্বে অন্তর্ভুক্ত না থাকে, তবে Maven ব্যবহার করলে pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version>
</dependency>
কোড উদাহরণ: PDF ডকুমেন্ট সুরক্ষিত করা
এখানে একটি উদাহরণ দেওয়া হচ্ছে, যেখানে একটি পিডিএফ ডকুমেন্ট তৈরি করা হবে এবং তাতে পাসওয়ার্ড সুরক্ষা যোগ করা হবে।
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDType1Font;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
import org.apache.pdfbox.pdmodel.encryption.PDEncryption;
import java.io.IOException;
public class PDFWithPasswordProtection {
public static void main(String[] args) {
try {
// একটি নতুন পিডিএফ ডকুমেন্ট তৈরি করুন
PDDocument document = new PDDocument();
// একটি নতুন পৃষ্ঠা যোগ করুন
PDPage page = new PDPage();
document.addPage(page);
// পৃষ্ঠায় কনটেন্ট স্ট্রিম তৈরি করুন
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// টেক্সট লেখার জন্য ফন্ট এবং পজিশন সেট করুন
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.beginText();
contentStream.newLineAtOffset(100, 750);
contentStream.showText("This PDF is protected!");
contentStream.endText();
// কনটেন্ট স্ট্রিম বন্ধ করুন
contentStream.close();
// পিডিএফ ডকুমেন্ট সুরক্ষিত করার জন্য পাসওয়ার্ড সেট করুন
String userPassword = "userpassword"; // ব্যবহারকারীর পাসওয়ার্ড
String ownerPassword = "ownerpassword"; // মালিকের পাসওয়ার্ড
StandardProtectionPolicy policy = new StandardProtectionPolicy(ownerPassword, userPassword, null);
policy.setEncryptionKeyLength(128); // এনক্রিপশনের কীগণের দৈর্ঘ্য নির্ধারণ
policy.setPermissions(PDEncryption.ALLOW_PRINTING); // শুধুমাত্র প্রিন্ট করার অনুমতি দিন
// ডকুমেন্ট সুরক্ষিত করুন
document.protect(policy);
// সুরক্ষিত পিডিএফ ফাইল সেভ করুন
document.save("ProtectedPDF.pdf");
// ডকুমেন্ট বন্ধ করুন
document.close();
System.out.println("PDF ফাইল সুরক্ষিত করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড বিশ্লেষণ
- PDDocument: পিডিএফ ডকুমেন্ট তৈরি করার জন্য ব্যবহৃত হয়।
- PDPage: একটি নতুন পৃষ্ঠা তৈরি করা হয়েছে, যাতে টেক্সট লেখা হবে।
- PDPageContentStream: এটি পিডিএফ পৃষ্ঠায় কনটেন্ট যোগ করার জন্য ব্যবহৃত হয়।
- setFont: ফন্ট এবং সাইজ নির্ধারণ করা হয়।
- StandardProtectionPolicy: এই ক্লাসটি পিডিএফ ডকুমেন্ট সুরক্ষিত করার জন্য ব্যবহৃত হয়। এখানে পাসওয়ার্ড সেট করা হয়।
- setEncryptionKeyLength: এনক্রিপশন কীগণের দৈর্ঘ্য নির্ধারণ করা হয় (128-বিট সাধারণত সুরক্ষিত মনে করা হয়)।
- setPermissions: এটি ডকুমেন্টের জন্য অনুমতিগুলি নির্ধারণ করে (যেমন শুধুমাত্র প্রিন্টিং অনুমতি দেওয়া)।
- protect: পিডিএফ ডকুমেন্টটি সুরক্ষিত করতে এই মেথড ব্যবহার করা হয়।
- save: সুরক্ষিত পিডিএফ ফাইল সেভ করা হয়।
- close: ডকুমেন্ট বন্ধ করা হয়।
আউটপুট
এই কোডটি চালানোর পর একটি ProtectedPDF.pdf নামক পিডিএফ ফাইল তৈরি হবে, যা পাসওয়ার্ড সুরক্ষিত থাকবে। ব্যবহারকারী শুধুমাত্র সঠিক পাসওয়ার্ড জানলে ডকুমেন্টটি খুলতে বা সম্পাদনা করতে পারবে।
- ব্যবহারকারীর পাসওয়ার্ড:
userpassword - মালিকের পাসওয়ার্ড:
ownerpassword
এই উদাহরণটি আপনাকে PDFBox ব্যবহার করে পিডিএফ ডকুমেন্টে পাসওয়ার্ড সুরক্ষা যোগ করার প্রক্রিয়া বুঝতে সাহায্য করবে। আপনি পাসওয়ার্ড, অনুমতিসমূহ এবং এনক্রিপশন কীগণের দৈর্ঘ্য কাস্টমাইজ করতে পারেন আপনার প্রয়োজন অনুযায়ী।
Read more