1. produkty
  2.   Zpracování textu
  3.   Java
  4.   documents4j
 
  

Bezplatné Java API pro převod vysoce kvalitního Word dokumentu do PDF

Vedoucí open source knihovna umožňuje Java vývojářům převádět soubory MS Office DOCX, XLSX a PDF s vysokou přesností pomocí nativních aplikací.

Co je Documents4j ?

documents4j je výkonná open-source Java knihovna určená ke konverzi dokumentů mezi různými formáty, jako je DOCX do PDF nebo XLSX do PDF. Na rozdíl od mnoha tradičních knihoven deleguje documents4j proces konverze na nativní aplikace jako Microsoft Word a Excel, čímž zajišťuje vysokou kvalitu výstupu s minimálními problémy s formátováním. Knihovna zvolila jiný přístup. Místo opětovné implementace logiky konverze funguje jako most, který deleguje těžkou práci na nativní aplikace (jako Microsoft Word nebo Excel), které tyto formáty již dokonale rozumí. To zajišťuje, že výstupní dokument – například PDF vygenerované ze souboru Word – vypadá přesně tak, jako byste v MS Office ručně klikli na „Uložit jako“.

Hlavní hodnota documents4j spočívá v jeho přesnosti. Pro firmy, které vyžadují profesionální dokumentaci, kde musí zůstat zachovány všechny okraje a písmo, může být spoléhat na open-source parsers riskantní. documents4j je zvláště užitečný pro generování faktur nebo zpráv ze šablon, automatizaci pracovních toků dokumentů v prostředí založeném na Windows a oddělení logiky konverze od hlavní aplikace pomocí nastavení vzdáleného serveru. Využitím nativních aplikací zajišťuje bezkonkurenční přesnost ve srovnání s tradičními knihovnami. Jeho podpora lokálního i vzdáleného zpracování, souběžného spuštění a vyvažování zátěže ho činí vysoce vhodným pro podnikové systémy.

Previous Next

Začínáme s documents4j

Doporučený způsob instalace documents4j je přes Maven repozitář. Můžete snadno přidat knihovnu documents4j přímo do vašich Maven projektů s jednoduchou konfigurací.

Maven repozitář pro 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>

Instalace documents4j z GitHubu


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

Převod Wordu do PDF pomocí Java knihovny

V jádru documents4j je elegantně navržené fluent API, které činí konverzi dokumentů přirozenou a čitelnou. Rozhraní IConverter poskytuje řetězec ve stylu builderu, který vám umožní specifikovat zdrojový soubor nebo stream, deklarovat vstupní a výstupní typy dokumentů, nastavit prioritu konverze a zvolit mezi synchronním nebo asynchronním provedením – vše v jedné čisté syntaxi. API skrývá všechny implementační detaily, takže vaše obchodní logika nikdy nemusí vědět, zda pod kapotou běží místní nebo vzdálený konvertor. Zde je jednoduchý příklad, který ukazuje, jak dosáhnout procesu konverze.

Jak převést Word do PDF pomocí Java knihovny?

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

Vzdálený konvertor s REST API serverem

Ne každý Java aplikační server má nainstalovaný MS Office – a neměl by. documents4j to řeší vestavěnou architekturou Remote Converter. Samostatný konverzní server (který interně používá LocalConverter) běží na odděleném Windows počítači s nainstalovaným MS Office a vystavuje REST API. Vaše Java aplikace používá RemoteConverter, který odesílá dokumenty přes HTTP a přijímá zpět konvertovaný soubor. Celý handshake je pro kód aplikace neviditelný; stejné rozhraní IConverter je použito na obou stranách.

Jak provést vzdálený převod Word dokumentů v Java aplikacích?

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 šifrování a základní autentizace

V produkčních prostředích obsahují soubory dokumentů často citlivá obchodní, právní nebo osobní data. Přenos přes nezabezpečený HTTP představuje vážné bezpečnostní riziko. Knihovna documents4j to řeší vestavěnou podporou SSL/TLS šifrování mezi klientem a serverem konverze, konfigurovatelnou pomocí standardního Java SSLContext. Samostatný server také podporuje HTTP Basic Authentication, aby zajistil, že pouze autorizovaní klienti mohou odesílat požadavky na konverzi. Obě bezpečnostní funkce lze aktivovat s minimální konfigurací, což činí documents4j životaschopným řešením i v regulovaných odvětvích.

Asynchronní a prioritní zpracování

Převody mohou být náročné na zdroje. documents4j vám umožňuje naplánovat převody, aby běžely na pozadí (asynchronně) pomocí návratového typu Future. Dále podporuje mechanismus prioritizace. Pokud vaše aplikace zpracovává velké množství požadavků, můžete přiřadit vyšší prioritu kritickým dokumentům, aby byly přesunuty na začátek interní fronty úloh.

 Čeština