1. Produkte
  2.   Textverarbeitung
  3.   Java
  4.   documents4j
 
  

Kostenlose Java‑API zum Konvertieren hochwertiger Word-Dokumente zu PDF

Eine führende Open-Source-Bibliothek ermöglicht Java-Entwicklern, MS Office DOCX, XLSX und PDF-Dateien mit hoher Genauigkeit unter Verwendung nativer Anwendungen zu konvertieren.

Was ist Documents4j ?

documents4j ist eine leistungsstarke Open‑Source‑Java‑Bibliothek, die für die Konvertierung von Dokumenten zwischen verschiedenen Formaten entwickelt wurde, z. B. DOCX zu PDF oder XLSX zu PDF. Im Gegensatz zu vielen traditionellen Bibliotheken delegiert documents4j den Konvertierungsprozess an native Anwendungen wie Microsoft Word und Excel, wodurch qualitativ hochwertige Ausgaben mit minimalen Formatierungsproblemen entstehen. Die Bibliothek verfolgt einen anderen Ansatz. Anstatt die Konvertierungslogik neu zu implementieren, fungiert sie als Brücke und übergibt die schwere Arbeit nativen Anwendungen (wie Microsoft Word oder Excel), die diese Formate bereits perfekt verstehen. Das gewährleistet, dass das Ausgabedokument – etwa ein aus einer Word‑Datei erzeugtes PDF – exakt so aussieht, wie wenn Sie in MS Office manuell "Save As" gewählt hätten.

Der Hauptwert von documents4j liegt in seiner Genauigkeit. Für Unternehmen, die professionelle Dokumentation benötigen, bei der jede Margin und jede Schriftart unverändert bleibt, kann die Verwendung von Open‑Source‑Parsern riskant sein. documents4j ist besonders nützlich zur Erstellung von Rechnungen oder Berichten aus Vorlagen, zur Automatisierung von Dokumenten‑Workflows in einer Windows‑Umgebung und zur Entkopplung der Konvertierungslogik von Ihrer Hauptanwendung über eine Remote‑Server‑Einrichtung. Durch die Nutzung nativer Anwendungen gewährleistet es eine unübertroffene Genauigkeit im Vergleich zu traditionellen Bibliotheken. Die Unterstützung von lokaler und entfernter Verarbeitung, gleichzeitiger Ausführung und Lastverteilung macht es für Unternehmens‑Systeme äußerst geeignet.

Previous Next

Erste Schritte mit documents4j

Der empfohlene Weg, documents4j zu installieren, ist über ein Maven-Repository. Sie können die documents4j-Bibliothek einfach direkt in Ihre Maven-Projekte einbinden mit einfachen Konfigurationen.

Maven-Repository für 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 von GitHub installieren


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

Word zu PDF konvertieren über Java-Bibliothek

Im Herzen von documents4j liegt ein elegant gestaltetes Fluent‑API, das die Dokumentenkonvertierung natürlich und lesbar macht. Das IConverter‑Interface bietet eine Builder‑ähnliche Kette, mit der Sie die Quelldatei oder den Stream angeben, Eingabe‑ und Ausgabetypen deklarieren, eine Konvertierungspriorität festlegen und zwischen synchroner oder asynchroner Ausführung wählen können – alles in einem klaren Ausdruck. Das API versteckt sämtliche Implementierungsdetails, sodass Ihre Geschäftslogik nie wissen muss, ob darunter ein lokaler oder ein Remote‑Konverter läuft. Hier ein einfaches Beispiel, das zeigt, wie der Konvertierungsprozess erreicht wird.

Wie konvertiert man Word zu PDF über die Java-Bibliothek?

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

Remote-Konverter mit REST-API-Server

Nicht jeder Java-Anwendungsserver hat MS Office installiert – und es sollte auch nicht. documents4j löst das mit einer integrierten Remote‑Converter-Architektur. Ein eigenständiger Konvertierungsserver (der intern einen LocalConverter verwendet) läuft auf einer separaten Windows-Maschine mit installiertem MS Office und stellt ein REST‑API bereit. Ihre Java-Anwendung nutzt einen RemoteConverter, der Dokumente über HTTP sendet und die konvertierte Datei zurückerhält. Der gesamte Handshake ist für den Anwendungscode unsichtbar; das gleiche IConverter‑Interface wird auf beiden Seiten verwendet.

Wie führt man Remote-Word-Dokumentkonvertierung innerhalb von Java-Apps durch?

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-Verschlüsselung und Basis-Authentifizierung

In Produktionsumgebungen enthalten Dokumentdateien häufig sensible geschäftliche, rechtliche oder personenbezogene Daten. Die Übertragung über unverschlüsseltes HTTP stellt ein ernsthaftes Sicherheitsrisiko dar. Die documents4j-Bibliothek adressiert dies mit integrierter Unterstützung für SSL/TLS-Verschlüsselung zwischen dem Konvertierungs‑Client und -Server, konfigurierbar über das standardmäßige Java SSLContext. Der eigenständige Server unterstützt zudem HTTP Basic Authentication, um sicherzustellen, dass nur autorisierte Clients Konvertierungsanfragen stellen können. Beide Sicherheitsfunktionen können mit minimaler Konfiguration aktiviert werden, wodurch documents4j auch in regulierten Branchen eine praktikable Lösung darstellt.

Asynchrone und priorisierte Verarbeitung

Konvertierungen können ressourcenintensiv sein. documents4j ermöglicht es, Konvertierungen im Hintergrund (asynchron) mit einem Future-Rückgabetyp zu planen. Darüber hinaus unterstützt es einen Priorisierungsmechanismus. Wenn Ihre Anwendung ein hohes Anfragenvolumen verarbeitet, können Sie kritischen Dokumenten eine höhere Priorität zuweisen, sodass sie an die Spitze der internen Job-Warteschlange verschoben werden.

 Deutsch