1. Produk
  2.   Pemrosesan Kata
  3.   Java
  4.   documents4j
 
  

API Java Gratis untuk Mengonversi Dokumen Word Berkualitas Tinggi ke PDF

Perpustakaan Open Source Terdepan Memungkinkan Pengembang Java Mengonversi File MS Office DOCX, XLSX, dan PDF dengan Akurasi Tinggi Menggunakan Aplikasi Asli.

Apa itu Documents4j ?

documents4j adalah perpustakaan Java open-source yang kuat yang dirancang untuk mengonversi dokumen antara format yang berbeda, seperti DOCX ke PDF atau XLSX ke PDF. Tidak seperti banyak perpustakaan tradisional, documents4j mendelegasikan proses konversi ke aplikasi asli seperti Microsoft Word dan Excel, memastikan output berkualitas tinggi dengan masalah format minimal. Perpustakaan ini mengambil pendekatan yang berbeda. Alih-alih mengimplementasikan ulang logika konversi, ia berfungsi sebagai jembatan, mendelegasikan pekerjaan berat ke aplikasi asli (seperti Microsoft Word atau Excel) yang sudah memahami format ini dengan sempurna. Ini memastikan bahwa dokumen output—seperti PDF yang dihasilkan dari file Word—tampil persis seperti jika Anda mengklik "Save As" secara manual di MS Office.

Nilai utama documents4j terletak pada akurasinya. Bagi bisnis yang membutuhkan dokumentasi tingkat profesional dimana setiap margin dan font harus tetap utuh, mengandalkan parser open-source dapat berisiko. documents4j sangat berguna untuk menghasilkan faktur atau laporan dari templat, mengotomatiskan alur kerja dokumen di lingkungan berbasis Windows dan memisahkan logika konversi dari aplikasi utama Anda melalui penyiapan server jarak jauh. Dengan memanfaatkan aplikasi asli, ia memastikan akurasi yang tak tertandingi dibandingkan perpustakaan tradisional. Dukungan untuk pemrosesan lokal dan jarak jauh, eksekusi bersamaan, dan penyeimbangan beban membuatnya sangat cocok untuk sistem tingkat perusahaan.

Previous Next

Memulai dengan documents4j

Cara yang direkomendasikan untuk menginstal documents4j adalah melalui repositori Maven. Anda dapat dengan mudah menambahkan perpustakaan documents4j langsung ke Proyek Maven Anda dengan konfigurasi sederhana.

Repositori Maven untuk 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>

Instal documents4j dari GitHub


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

Mengonversi Word ke PDF via Perpustakaan Java

Di inti documents4j terdapat API fluent yang dirancang elegan yang membuat konversi dokumen terasa alami dan mudah dibaca. Antarmuka IConverter menyediakan rantai bergaya builder yang memungkinkan Anda menentukan file atau stream sumber, mendeklarasikan jenis dokumen input dan output, mengatur prioritas konversi, dan memilih antara eksekusi sinkron atau asinkron — semuanya dalam satu ekspresi bersih. API menyembunyikan setiap detail implementasi, sehingga logika bisnis Anda tidak pernah perlu mengetahui apakah konverter lokal atau jarak jauh yang berjalan di belakangnya. Berikut contoh sederhana yang menunjukkan cara mencapai proses konversi.

Bagaimana Mengonversi Word ke PDF via Perpustakaan Java?

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();
    }
}

Konverter Jarak Jauh dengan Server REST API

Tidak semua server aplikasi Java memiliki MS Office terpasang — dan tidak seharusnya. documents4j menyelesaikan ini dengan arsitektur Remote Converter bawaan. Sebuah server konversi mandiri (yang secara internal menggunakan LocalConverter) berjalan pada mesin Windows terpisah dengan MS Office terpasang dan mengekspos REST API. Aplikasi Java Anda menggunakan RemoteConverter yang mengirim dokumen melalui HTTP dan menerima kembali file yang telah dikonversi. Seluruh proses handshake tidak terlihat dalam kode aplikasi; antarmuka IConverter yang sama digunakan di kedua sisi.

Bagaimana Melakukan Konversi Dokumen Word Jarak Jauh di dalam Aplikasi Java?

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();
    }
}          

Enkripsi SSL dan Otentikasi Dasar

Dalam lingkungan produksi, file dokumen sering berisi data bisnis, hukum, atau pribadi yang sensitif. Mengirimnya melalui HTTP biasa merupakan risiko keamanan yang serius. Perpustakaan documents4j mengatasi ini dengan dukungan bawaan untuk enkripsi SSL/TLS antara klien konversi dan server, dapat dikonfigurasi melalui SSLContext standar Java. Server mandiri juga mendukung Otentikasi Dasar HTTP untuk memastikan hanya klien yang berwenang dapat mengirim permintaan konversi. Kedua fitur keamanan ini dapat diaktifkan dengan konfigurasi minimal, menjadikan documents4j solusi yang layak bahkan dalam industri yang diatur.

Pemrosesan Asinkron dan Prioritas

Konversi dapat memakan banyak sumber daya. documents4j memungkinkan Anda menjadwalkan konversi untuk dijalankan di latar belakang (asinkron) menggunakan tipe pengembalian Future. Selain itu, ia mendukung mekanisme prioritas. Jika aplikasi Anda menangani volume permintaan tinggi, Anda dapat memberikan prioritas lebih tinggi pada dokumen kritis untuk memastikan mereka dipindahkan ke depan antrean pekerjaan internal.

 Indonesia