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.
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