উচ্চমানের Word ডকুমেন্টকে PDF তে রূপান্তর করার জন্য ফ্রি জাভা API

একটি শীর্ষস্থানীয় ওপেন-সোর্স লাইব্রেরি জাভা ডেভেলপারদেরকে নেটিভ অ্যাপ্লিকেশন ব্যবহার করে উচ্চ যথার্থতায় MS Office DOCX, XLSX এবং PDF ফাইল রূপান্তর করতে সক্ষম করে।

Documents4j কি?

documents4j একটি শক্তিশালী ওপেন-সোর্স জাভা লাইব্রেরি, যা DOCX থেকে PDF বা XLSX থেকে PDF মতো বিভিন্ন ফরম্যাটের মধ্যে ডকুমেন্ট রূপান্তরের জন্য ডিজাইন করা হয়েছে। অনেক ঐতিহ্যবাহী লাইব্রেরির তুলনায়, documents4j রূপান্তর প্রক্রিয়াটি Microsoft Word ও Excel এর মতো নেটিভ অ্যাপ্লিকেশনের উপর নির্ভর করে, যা ন্যূনতম ফরম্যাটিং সমস্যার সঙ্গে উচ্চমানের আউটপুট নিশ্চিত করে। লাইব্রেরিটি একটি ভিন্ন পদ্ধতি গ্রহণ করে। কনভার্সন লজিক পুনরায় বাস্তবায়নের পরিবর্তে, এটি একটি সেতু হিসাবে কাজ করে এবং ভারী কাজগুলো নেটিভ অ্যাপ্লিকেশনগুলিতে (যেমন Microsoft Word বা Excel) অর্পণ করে, যেগুলি এই ফরম্যাটগুলি সম্পূর্ণভাবে বুঝে থাকে। এর ফলে আউটপুট ডকুমেন্ট—যেমন একটি Word ফাইল থেকে তৈরি PDF—সঠিকভাবে সেই রূপে প্রদর্শিত হয় যেভাবে আপনি ম্যানুয়ালি MS Office এ \"Save As\" এ ক্লিক করলে দেখবেন।

documents4j এর প্রধান মূল্য তার নির্ভুলতায়। এমন ব্যবসার জন্য যা পেশাদার-গ্রেড ডকুমেন্টেশন প্রয়োজন যেখানে প্রতিটি মার্জিন ও ফন্ট অক্ষত থাকে, ওপেন-সোর্স পার্সারগুলোর উপর নির্ভর করা ঝুঁকিপূর্ণ হতে পারে। documents4j টেমপ্লেট থেকে ইনভয়েস বা রিপোর্ট তৈরি, Windows-ভিত্তিক পরিবেশে ডকুমেন্ট ওয়ার্কফ্লো অটোমেট করা এবং রিমোট সার্ভার সেটআপের মাধ্যমে রূপান্তর লজিককে প্রধান অ্যাপ্লিকেশন থেকে আলাদা করার ক্ষেত্রে বিশেষভাবে উপযোগী। নেটিভ অ্যাপ্লিকেশনগুলো ব্যবহার করার মাধ্যমে এটি প্রচলিত লাইব্রেরির তুলনায় অতুলনীয় নির্ভুলতা নিশ্চিত করে। স্থানীয় ও রিমোট প্রোসেসিং, সমসাময়িক এক্সিকিউশন ও লোড ব্যাল্যান্সিং সমর্থন এটিকে এন্টারপ্রাইজ-গ্রেড সিস্টেমের জন্য অত্যন্ত উপযোগী করে তোলে।

Previous Next

documents4j দিয়ে শুরু করা

documents4j ইনস্টল করার সুপারিশকৃত উপায় হল Maven রেপোজিটরির মাধ্যমে। সহজ কনফিগারেশনের মাধ্যমে আপনি আপনার Maven প্রকল্পে সরাসরি documents4j লাইব্রেরি যুক্ত করতে পারেন।

documents4j এর জন্য Maven রেপোজিটরি


// Here’s a commonly used dependency (Local converter): 

<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-local</artifactId>
<version>1.1.13</version>
</dependency>

//If you only need the API:
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-api</artifactId>
<version>1.1.13</version>
</dependency>

GitHub থেকে documents4j ইনস্টল করুন


git clone https://github.com/documents4j/documents4j.git
cd documents4j
cd documents4j-local-demo
mvn jetty:run

জাভা লাইব্রেরি মাধ্যমে Word কে PDF তে রূপান্তর

documents4j এর মূলভাগে রয়েছে একটি মার্জিতভাবে নকশা করা ফ্লুয়েন্ট API, যা ডকুমেন্ট রূপান্তরকে স্বাভাবিক ও পাঠযোগ্য করে তোলে। IConverter ইন্টারফেস একটি বিল্ডার-স্টাইল চেইন প্রদান করে, যা আপনাকে সোর্স ফাইল বা স্ট্রিম নির্ধারণ, ইনপুট ও আউটপুট ডকুমেন্ট টাইপ ঘোষণা, রূপান্তর অগ্রাধিকার সেট করা এবং সিঙ্ক্রোনাস বা অ্যাসিঙ্ক্রোনাস এক্সিকিউশন বেছে নেওয়ার সুযোগ দেয়—সবই একটি পরিষ্কৃত এক্সপ্রেশনে। API প্রতিটি ইমপ্লিমেন্টেশন বিস্তারিত লুকিয়ে রাখে, ফলে আপনার বিজনেস লজিককে কখনও জানতে হয় না যে নিচে স্থানীয় নাকি রিমোট কনভার্টার চালু আছে। নিচে একটি সহজ উদাহরণ রয়েছে যা রূপান্তর প্রক্রিয়া কীভাবে অর্জন করা যায় তা দেখায়।

জাভা লাইব্রেরি মাধ্যমে Word কে PDF তে কীভাবে রূপান্তর করবেন?

import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.LocalConverter;

import java.io.File;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

public class DocumentConverter {
    public static void main(String[] args) {
        // 1. Specify the source and target files
        File wordFile = new File("C:/documents/input.docx");
        File targetFile = new File("C:/documents/output.pdf");

        // 2. Initialize the converter (Local instance)
        IConverter converter = LocalConverter.builder()
                .workerPool(20, 25, 2, TimeUnit.SECONDS)
                .processTimeout(5, TimeUnit.SECONDS)
                .build();

        // 3. Execute the conversion fluently
        boolean success = converter.convert(wordFile).as(DocumentType.MS_WORD)
                                   .to(targetFile).as(DocumentType.PDF)
                                   .execute();

        if (success) {
            System.out.println("Conversion completed successfully!");
        }

        // 4. Always shut down the converter to release native resources
        converter.shutDown();
    }
}

REST API সার্ভার সহ রিমোট কনভার্টার

প্রত্যেক জাভা অ্যাপ্লিকেশন সার্ভারে MS Office ইনস্টল থাকে না — এবং থাকা উচিতও নয়। documents4j এই সমস্যার সমাধান দেয় একটি বিল্ট-ইন রিমোট কনভার্টার আর্কিটেকচার দিয়ে। একটি স্ট্যান্ডঅ্যালোন কনভার্শন সার্ভার (যা অভ্যন্তরীণভাবে LocalConverter ব্যবহার করে) একটি পৃথক Windows মেশিনে MS Office ইনস্টল করে চালায় এবং একটি REST API উন্মুক্ত করে। আপনার জাভা অ্যাপ্লিকেশন একটি RemoteConverter ব্যবহার করে যা HTTP এর মাধ্যমে ডকুমেন্ট পাঠায় এবং রূপান্তরিত ফাইল ফিরে পায়। পুরো হ্যান্ডশেকটি অ্যাপ্লিকেশন কোডের জন্য অদৃশ্য; একই IConverter ইন্টারফেস উভয় দিকেই ব্যবহার হয়।

জাভা অ্যাপে রিমোট Word ডকুমেন্ট রূপান্তর কীভাবে সম্পাদন করবেন?

import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.RemoteConverter;

import java.io.*;
import java.util.concurrent.TimeUnit;

public class RemoteConverterExample {

    public static void main(String[] args) throws Exception {

        // The RemoteConverter connects to the standalone server
        IConverter converter = RemoteConverter.builder()
                .baseFolder(new File("/tmp/documents4j"))
                .workerPool(10, 20, 5, TimeUnit.SECONDS)
                // Timeout for each HTTP conversion request
                .requestTimeout(30, TimeUnit.SECONDS)
                // URI of the running conversion server
                .baseUri("http://192.168.1.100:9998")
                .build();

        // Convert using InputStream / OutputStream — recommended for RemoteConverter
        // because data is already serialized for HTTP transport
        try (InputStream source = new FileInputStream("/input/contract.docx");
             OutputStream target = new FileOutputStream("/output/contract.pdf")) {

            boolean success = converter
                    .convert(source).as(DocumentType.MS_WORD)
                    .to(target).as(DocumentType.PDF)
                    .execute();

            System.out.println("Remote conversion success: " + success);
        }

        converter.shutDown();
    }
}          

SSL এনক্রিপশন এবং বেসিক অথেনটিকেশন

প্রোডাকশন পরিবেশে, ডকুমেন্ট ফাইলে প্রায়শই সংবেদনশীল ব্যবসায়িক, আইনগত অথবা পার্সোনাল ডেটা থাকে। সেগুলি প্লেইন HTTP মাধ্যমে প্রেরণ করা একটি গুরুতর নিরাপত্তা ঝুঁকি। documents4j লাইব্রেরি এই সমস্যার সমাধান করে কনভার্সন ক্লায়েন্ট ও সার্ভারের মধ্যে SSL/TLS এনক্রিপশনের বিল্ট-ইন সাপোর্ট দিয়ে, যা Java এর স্ট্যান্ডার্ড SSLContext এর মাধ্যমে কনফিগার করা যায়। স্ট্যান্ডঅ্যালোন সার্ভার এছাড়াও HTTP Basic Authentication সমর্থন করে যাতে শুধুমাত্র অনুমোদিত ক্লায়েন্টই রূপান্তর রিকোয়েস্ট পাঠাতে পারে। উভয় সিকিউরিটি ফিচারই ন্যূনতম কনফিগারেশনে সক্ষম করা যায়, যা নিয়ন্ত্রিত শিল্পক্ষেত্রেও documents4j-কে একটি ব্যবহারযোগ্য সমাধান করে তোলে।

অ্যাসিঙ্ক্রোনাস এবং অগ্রাধিকারের ভিত্তিতে প্রোসেসিং

রূপান্তরগুলি রিসোর্স-ইনটেনসিভ হতে পারে। documents4j আপনাকে Future রিটার্ন টাইপ ব্যবহার করে রূপান্তরগুলো ব্যাকগ্রাউন্ডে (অ্যাসিঙ্ক্রোনাসভাবে) চালানোর সময়সূচি নির্ধারণের সুযোগ দেয়। তদুপরি, এটি একটি অগ্রাধিকার মেকানিজম সমর্থন করে। যদি আপনার অ্যাপ্লিকেশন উচ্চ পরিমাণের রিকোয়েস্ট হ্যান্ডেল করে, আপনি গুরুত্বপূর্ণ ডকুমেন্টগুলোর জন্য উচ্চতর অগ্রাধিকার নির্ধারণ করতে পারেন, যাতে সেগুলি অভ্যন্তরীণ জব কিউয়ের শীর্ষে স্থানান্তরিত হয়।

 বাংলা