API رایگان جاوا برای تبدیل سند Word با کیفیت بالا به PDF
یک کتابخانه پیشرو منبع باز به توسعهدهندگان جاوا امکان میدهد فایلهای MS Office DOCX، XLSX و PDF را با دقت بالا با استفاده از برنامههای بومی تبدیل کنند.
Documents4j چیست؟
documents4j یک کتابخانه قدرتمند منبع باز جاوا است که برای تبدیل اسناد بین فرمتهای مختلف، مانند DOCX به PDF یا XLSX به PDF طراحی شده است. برخلاف بسیاری از کتابخانههای سنتی، documents4j فرآیند تبدیل را به برنامههای بومی مانند Microsoft Word و Excel واگذار میکند، بدین ترتیب خروجی با کیفیت بالا و مشکلات کم فرمتبندی ایجاد میشود. این کتابخانه رویکرد متفاوتی دارد. به جای پیادهسازی مجدد منطق تبدیل، به عنوان یک پل عمل میکند و کار سنگین را به برنامههای بومی (مانند Microsoft Word یا Excel) که بهخوبی این فرمتها را میدانند، واگذار میکند. این اطمینان میدهد که سند خروجی—مانند PDF تولید شده از یک فایل Word—دقیقا همانگونه است که اگر در MS Office گزینه "Save As" را بهصورت دستی کلیک میکردید.
ارزش اصلی documents4j در دقت آن نهفته است. برای کسبوکارهایی که به مستندات با کیفیت حرفهای نیاز دارند و هر حاشیه و قلمی باید دست نخورده بماند، تکیه بر تجزیهگرهای منبع باز میتواند ریسکزا باشد. documents4j بهخصوص برای تولید فاکتورها یا گزارشها از قالبها، خودکارسازی جریان کاری اسناد در محیط مبتنی بر ویندوز و جداسازی منطق تبدیل از برنامه اصلی شما از طریق تنظیم سرور ریموت مفید است. با بهرهگیری از برنامههای بومی، دقتی بینظیر نسبت به کتابخانههای سنتی فراهم میکند. پشتیبانی آن از پردازش محلی و ریموت، اجرای همزمان و تعادل بار، آن را برای سیستمهای سطح سازمانی بسیار مناسب میسازد.
شروع کار با documents4j
روش پیشنهادی برای نصب documents4j از طریق مخزن Maven است. میتوانید کتابخانه documents4j را بهراحتی در پروژههای Maven خود با پیکربندیهای ساده اضافه کنید.
وابستگی Maven برای documents4j
// 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>
نصب documents4j از GitHub
git clone https://github.com/documents4j/documents4j.git
cd documents4j
cd documents4j-local-demo
mvn jetty:run
تبدیل Word به PDF از طریق کتابخانه جاوا
در قلب documents4j یک API روان (fluent) با طراحی زیبا وجود دارد که تبدیل اسناد را طبیعی و قابلخواندن میکند. رابط IConverter زنجیرهای به‑صورت builder فراهم میکند که به شما اجازه میدهد فایل یا جریان منبع را مشخص کنید، نوعهای ورودی و خروجی سند را اعلام کنید، اولویت تبدیل را تعیین کنید و بین اجرای همزمان یا ناهمزمان انتخاب کنید — همه در یک عبارت واضح. این 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();
}
}
سفارشیسازی پیشرفته هنگام تبدیل اسناد به PDF
همه سرورهای برنامه جاوا MS Office نصب ندارند — و نیازی به این نیست. documents4j این مشکل را با معماری مبدل ریموت درونساختی حل میکند. یک سرور تبدیل مستقل (که بهصورت داخلی از LocalConverter استفاده میکند) بر روی یک ماشین ویندوز جداگانه با نصب MS Office اجرا میشود و یک REST API ارائه میدهد. برنامه جاوای شما از RemoteConverter استفاده میکند که اسناد را از طریق HTTP ارسال میکند و فایل تبدیلشده را دریافت مینماید. تمام روند handshake برای کد برنامه نامرئی است؛ همان رابط 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();
}
}
مدیریت چندین فرمت فایل
در محیطهای تولید، فایلهای اسناد اغلب شامل دادههای حساس تجاری، قانونی یا شخصی هستند. انتقال آنها از طریق HTTP ساده خطر امنیتی جدیای است. کتابخانه documents4j این مشکل را با پشتیبانی درونساختی از رمزنگاری SSL/TLS بین کلاینت و سرور تبدیل، که از طریق SSLContext استاندارد جاوا قابل تنظیم است، برطرف میکند. سرور مستقل همچنین از احراز هویت پایه HTTP پشتیبانی میکند تا فقط کلاینتهای مجاز بتوانند درخواستهای تبدیل را ارسال کنند. هر دو ویژگی امنیتی میتوانند با پیکربندی حداقل فعال شوند و documents4j را حتی در صنایع تحتنظر مقررات بهعنوان یک راهحل قابلاعتماد میسازند.
Asynchronous and Prioritized Processing
تبدیلها میتوانند به منابع زیاد نیاز داشته باشند. documents4j به شما امکان میدهد تبدیلها را برای اجرا در پسزمینه (بهصورت ناهمزمان) با استفاده از نوع بازگشتی Future