Nemokama Java API konvertuoti aukštos kokybės Word dokumentą į PDF
Vyriausia atviro kodo biblioteka leidžia Java kūrėjams konvertuoti MS Office DOCX, XLSX ir PDF failus su dideliu tikslumu naudojant natūralias programas.
Kas yra Documents4j?
documents4j yra galinga atviro kodo Java biblioteka, skirta konvertuoti dokumentus tarp skirtingų formatų, pvz., DOCX į PDF arba XLSX į PDF. Skirtingai nuo daugelio tradicinių bibliotekų, documents4j deleguoja konvertavimo procesą į natūralias programas, tokias kaip Microsoft Word ir Excel, užtikrinant aukštos kokybės išvestį su minimaliais formatavimo sutrikimais. Biblioteka priima kitokį požiūrį. Vietoje to, kad iš naujo įgyvendintų konvertavimo logiką, ji veikia kaip tiltas, perduodama sunkią dalį natūralioms programoms (pvz., Microsoft Word ar Excel), kurios jau puikiai supranta šiuos formatus. Tai užtikrina, kad išvesties dokumentas – pavyzdžiui, PDF, sukurtas iš Word failo – atrodytų lygiai taip pat, kaip jei būtumėte rankiniu būdu spustelėję „Išsaugoti kaip“ MS Office programoje.
Pagrindinė documents4j vertė yra jos tikslumas. Verslams, kuriems reikalinga profesionalaus lygio dokumentacija, kurioje kiekvienas paraštės ir šriftas turi likti nepakitęs, pasikliauti atviro kodo parseriais gali būti rizikinga. documents4j ypač naudinga generuojant sąskaitas faktūras ar ataskaitas iš šablonų, automatizuojant dokumentų darbo srautus Windows aplinkoje ir atskiriant konvertavimo logiką nuo pagrindinės programos per nuotolinį serverį. Naudodama natūralias programas, ji užtikrina neprilygstamą tikslumą, lyginant su tradicinėmis bibliotekomis. Jos palaikymas vietiniam ir nuotoliniam apdorojimui, lygiagreti vykdymas ir apkrovos balansavimas padaro ją labai tinkamą įmonės lygio sistemoms.
Pradžia su documents4j
Rekomenduojamas būdas įdiegti documents4j yra per Maven saugyklą. Galite lengvai pridėti documents4j biblioteką tiesiai į savo Maven projektus su paprastomis konfigūracijomis.
Maven saugykla 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>
Įdiekite documents4j iš GitHub
git clone https://github.com/documents4j/documents4j.git
cd documents4j
cd documents4j-local-demo
mvn jetty:run
Word konvertavimas į PDF naudojant Java biblioteką
documents4j širdyje yra elegantiškai sukurtas sklandus API, kuris daro dokumentų konvertavimą natūralų ir skaitomą. IConverter sąsaja suteikia grandinės stiliaus kūrimo metodą, leidžiantį nurodyti šaltinio failą arba srautą, deklaruoti įvesties ir išvesties dokumentų tipus, nustatyti konvertavimo prioritetą ir pasirinkti sinchroninį arba asinchroninį vykdymą – viskas vienoje švarioje išraiškoje. API paslepia kiekvieną įgyvendinimo detalę, todėl jūsų verslo logika niekada neturi žinoti, ar veikia vietinis, ar nuotolinis konverteris. Štai paprastas pavyzdys, rodantis, kaip įgyvendinti konvertavimo procesą.
Kaip konvertuoti Word į PDF naudojant Java biblioteką?
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();
}
}
Nuotolinis konverteris su REST API serveriu
Ne kiekvienas Java programų serveris turi įdiegtą MS Office – ir neturėtų. documents4j tai sprendžia įdiegtą Nuotolinio konverterio architektūrą. Atskiras konvertavimo serveris (kuris viduje naudoja LocalConverter) veikia atskirame Windows kompiuteryje su įdiegtu MS Office ir pateikia REST API. Jūsų Java programa naudoja RemoteConverter, kuris siunčia dokumentus per HTTP ir gauna atgal konvertuotą failą. Visa šis procesas yra nematomas programų kode; abiejų pusių naudojama ta pati IConverter sąsaja.
Kaip atlikti nuotolinį Word dokumentų konvertavimą Java programose?
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 šifravimas ir bazinis autentifikavimas
Produkcinėse aplinkose dokumentų failai dažnai yra jautrių verslo, teisinių ar asmeninių duomenų. Jų siuntimas per paprastą HTTP kelia rimtą saugumo riziką. documents4j biblioteka sprendžia tai įdiegta SSL/TLS šifravimo palaikymo tarp konvertavimo kliento ir serverio, konfigūruojama per Java standartinį SSLContext. Atskiras serveris taip pat palaiko HTTP bazinį autentifikavimą, kad užtikrintų, jog tik įgalioti klientai gali pateikti konvertavimo užklausas. Abi saugumo funkcijos gali būti įjungtos su minimalia konfigūracija, todėl documents4j yra tinkamas sprendimas net reguliuojamose pramonės šakose.
Asinchroninis ir prioritetinis apdorojimas
Konvertavimai gali būti resursų intensyvūs. documents4j leidžia suplanuoti konvertavimus vykdyti fone (asinchroniškai) naudojant Future