Darmowe API Java do konwersji wysokiej jakości dokumentu Word do PDF
Wiodąca otwarto‑źródłowa biblioteka umożliwia programistom Java konwertowanie plików MS Office DOCX, XLSX i PDF z wysoką dokładnością, używając natywnych aplikacji.
Czym jest Documents4j ?
documents4j to potężna, otwarto‑źródłowa biblioteka Java przeznaczona do konwertowania dokumentów pomiędzy różnymi formatami, takimi jak DOCX do PDF czy XLSX do PDF. W odróżnieniu od wielu tradycyjnych bibliotek, documents4j deleguje proces konwersji do natywnych aplikacji, takich jak Microsoft Word i Excel, zapewniając wysokiej jakości wynik przy minimalnych problemach z formatowaniem. Biblioteka przyjmuje inne podejście. Zamiast ponownie implementować logikę konwersji, działa jako most, delegując ciężkie zadania natywnym aplikacjom (np. Microsoft Word lub Excel), które już doskonale rozumieją te formaty. Dzięki temu dokument wyjściowy — na przykład PDF wygenerowany z pliku Word — wygląda dokładnie tak, jakbyś kliknął \"Zapisz jako\" ręcznie w MS Office.
Główną wartością documents4j jest jej dokładność. Dla firm, które potrzebują dokumentacji na poziomie profesjonalnym, gdzie każda krawędź i czcionka musi pozostać nienaruszona, poleganie na otwarto‑źródłowych parserach może być ryzykowne. documents4j jest szczególnie przydatny do generowania faktur lub raportów z szablonów, automatyzacji przepływów pracy z dokumentami w środowisku opartym na Windows oraz odseparowania logiki konwersji od głównej aplikacji przy pomocy zdalnego serwera. Wykorzystując natywne aplikacje, zapewnia nieporównywalną precyzję w stosunku do tradycyjnych bibliotek. Obsługa przetwarzania lokalnego i zdalnego, równoległego wykonania oraz równoważenia obciążenia sprawia, że jest wysoce odpowiednia dla systemów klasy enterprise.
Rozpoczęcie pracy z documents4j
Zalecanym sposobem instalacji documents4j jest użycie repozytorium Maven. Bibliotekę documents4j możesz łatwo dodać bezpośrednio do swoich projektów Maven przy użyciu prostych konfiguracji.
Repozytorium Maven dla 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>
Zainstaluj documents4j z GitHub
git clone https://github.com/documents4j/documents4j.git
cd documents4j
cd documents4j-local-demo
mvn jetty:run
Konwertowanie Word do PDF przy użyciu biblioteki Java
Serce documents4j stanowi elegancko zaprojektowane fluent API, które sprawia, że konwersja dokumentów jest naturalna i czytelna. Interfejs IConverter oferuje łańcuch w stylu buildera, pozwalający określić plik lub strumień źródłowy, zadeklarować typy dokumentów wejściowych i wyjściowych, ustawić priorytet konwersji oraz wybrać pomiędzy wykonaniem synchronicznym a asynchronicznym — wszystko w jednej przejrzystej konstrukcji. API ukrywa wszystkie szczegóły implementacji, dzięki czemu Twoja logika biznesowa nigdy nie musi wiedzieć, czy pod spodem działa lokalny, czy zdalny konwerter. Oto prosty przykład pokazujący, jak zrealizować proces konwersji.
Jak skonwertować Word do PDF przy użyciu biblioteki 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();
}
}
Zdalny konwerter z serwerem REST API
Nie każdy serwer aplikacji Java ma zainstalowane MS Office — i nie powinien. documents4j rozwiązuje to dzięki wbudowanej architekturze zdalnego konwertera. Samodzielny serwer konwersji (który wewnętrznie korzysta z LocalConverter) działa na oddzielnym komputerze z systemem Windows z zainstalowanym MS Office i udostępnia REST API. Twoja aplikacja Java używa RemoteConverter, który wysyła dokumenty przez HTTP i odbiera z powrotem skonwertowany plik. Cały proces wymiany danych jest niewidoczny w kodzie aplikacji; ten sam interfejs IConverter jest używany po obu stronach.
Jak wykonać zdalną konwersję dokumentów Word w aplikacjach 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();
}
}
Szyfrowanie SSL i podstawowe uwierzytelnianie
W środowiskach produkcyjnych pliki dokumentów często zawierają wrażliwe dane biznesowe, prawne lub osobiste. Przesyłanie ich przez czysty HTTP stanowi poważne ryzyko bezpieczeństwa. Biblioteka documents4j rozwiązuje ten problem, oferując wbudowane wsparcie szyfrowania SSL/TLS między klientem a serwerem konwersji, konfigurowalne za pomocą standardowego SSLContext w Javie. Samodzielny serwer obsługuje także podstawowe uwierzytelnianie HTTP, aby zapewnić, że tylko autoryzowani klienci mogą wysyłać żądania konwersji. Obie funkcje bezpieczeństwa można włączyć przy minimalnej konfiguracji, co czyni documents4j praktycznym rozwiązaniem nawet w regulowanych branżach.
Przetwarzanie asynchroniczne i priorytetowe
Konwersje mogą wymagać dużych zasobów. documents4j pozwala planować konwersje, które będą uruchamiane w tle (asynchronicznie) przy użyciu typu zwrotnego Future