واجهة برمجة تطبيقات جافا مجانية لتحويل مستند Word عالي الجودة إلى PDF
مكتبة مفتوحة المصدر رائدة تمكّن مطوري جافا من تحويل ملفات MS Office DOCX و XLSX و PDF بدقة عالية باستخدام التطبيقات الأصلية.
ما هو Documents4j ؟
documents4j هي مكتبة جافا مفتوحة المصدر قوية مصممة لتحويل المستندات بين الصيغ المختلفة، مثل DOCX إلى PDF أو XLSX إلى PDF. على عكس العديد من المكتبات التقليدية، تقوم documents4j بتفويض عملية التحويل إلى التطبيقات الأصلية مثل Microsoft Word و Excel، مما يضمن مخرجات عالية الجودة مع أقل مشاكل في التنسيق. تتبع المكتبة نهجًا مختلفًا. بدلاً من إعادة تنفيذ منطق التحويل، تعمل كجسر، فتفوض الأعمال الثقيلة إلى التطبيقات الأصلية (مثل Microsoft Word أو Excel) التي تفهم هذه الصيغ تمامًا. هذا يضمن أن المستند الناتج—مثل PDF تم إنشاؤه من ملف Word—يظهر تمامًا كما لو أنك نقرت "حفظ باسم" يدويًا في MS Office.
القيمة الأساسية لـ documents4j تكمن في دقتها. بالنسبة للشركات التي تحتاج إلى مستندات بمستوى احترافي حيث يجب أن تبقى كل هوامش وخطوط ثابتة، الاعتماد على محولات مفتوحة المصدر قد يكون محفوفًا بالمخاطر. تُعد documents4j مفيدة بشكل خاص لإنشاء الفواتير أو التقارير من القوالب، وأتمتة سير عمل المستندات في بيئة تعتمد على Windows وفصل منطق التحويل عن التطبيق الرئيسي من خلال إعداد خادم بعيد. من خلال الاستفادة من التطبيقات الأصلية، تضمن دقة لا مثيل لها مقارنة بالمكتبات التقليدية. دعمها للمعالجة المحلية والبعيدة، والتنفيذ المتزامن، وتوزيع الأحمال يجعلها مناسبة للغاية لأنظمة المؤسسات.
البدء مع 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 توجد واجهة برمجة تطبيقات سلسة مصممة بأناقة تجعل عملية تحويل المستندات تبدو طبيعية وسهلة القراءة. توفر واجهة IConverter سلسلة على نمط الباني تسمح لك بتحديد ملف المصدر أو الدفق، وإعلان أنواع المستندات المدخلية والخرجية، وتعيين أولوية التحويل، واختيار التنفيذ المتزامن أو غير المتزامن — كل ذلك في تعبير واحد واضح. تُخفى الواجهة كل تفاصيل التنفيذ، لذا لا يحتاج منطق أعمالك إلى معرفة ما إذا كان محولًا محليًا أم بعيدًا يعمل في الخلفية. إليك مثالًا بسيطًا يوضح كيفية تنفيذ عملية التحويل.
كيف يتم تحويل 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 بين عميل التحويل والخادم، يمكن تكوينه عبر SSLContext القياسي في جافا. كما يدعم الخادم المستقل المصادقة الأساسية HTTP لضمان أن العملاء المصرح لهم فقط يمكنهم تقديم طلبات التحويل. يمكن تمكين كلا الميزتين الأمنيتين بإعدادات بسيطة، مما يجعل documents4j حلاً عمليًا حتى في الصناعات المنظمة.
معالجة غير متزامنة مع أولوية
يمكن أن تكون عمليات التحويل مستهلكة للموارد. تسمح لك documents4j بجدولة التحويلات لتعمل في الخلفية (بشكل غير متزامن) باستخدام نوع إرجاع Future