Gratis Java‑API for å konvertere høy kvalitet Word-dokument til PDF
Et ledende åpen kildekode-bibliotek gjør det mulig for Java-utviklere å konvertere MS Office DOCX-, XLSX- og PDF-filer med høy nøyaktighet ved bruk av native applikasjoner.
Hva er Documents4j ?
documents4j er et kraftig åpen kildekode Java-bibliotek designet for å konvertere dokumenter mellom ulike formater, som DOCX til PDF eller XLSX til PDF. I motsetning til mange tradisjonelle biblioteker delegere documents4j konverteringsprosessen til native applikasjoner som Microsoft Word og Excel, og sikrer høy kvalitet på resultatet med minimale formateringsproblemer. Biblioteket har en annen tilnærming. I stedet for å gjenimplementere konverteringslogikken fungerer det som en bro, og overlater det tunge arbeidet til native applikasjoner (som Microsoft Word eller Excel) som allerede forstår disse formatene perfekt. Dette sikrer at utskriftsdokumentet—som en PDF generert fra en Word-fil—ser nøyaktig ut som om du hadde klikket \"Lagre som\" manuelt i MS Office.
Den primære verdien av documents4j ligger i dens nøyaktighet. For bedrifter som krever dokumentasjon i profesjonell kvalitet hvor hver margin og skrifttype må forbli intakt, kan det være risikabelt å stole på åpen kildekode‑parsers. documents4j er spesielt nyttig for å generere fakturaer eller rapporter fra maler, automatisere dokumentarbeidsflyter i et Windows‑basert miljø og frakoble konverteringslogikken fra hovedapplikasjonen via en fjernserver. Ved å utnytte native applikasjoner sikrer den enestående nøyaktighet sammenlignet med tradisjonelle biblioteker. Støtten for lokal og fjernbehandling, parallell utførelse og lastbalansering gjør den svært egnet for systemer i bedriftsklassen.
Kom i gang med documents4j
Den anbefalte måten å installere documents4j på er via Maven-depotet. Du kan enkelt legge til documents4j-biblioteket direkte i Maven-prosjektene dine med enkle konfigurasjoner.
Maven-depot for 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>
Installer documents4j fra GitHub
git clone https://github.com/documents4j/documents4j.git
cd documents4j
cd documents4j-local-demo
mvn jetty:run
Konvertere Word til PDF via Java-bibliotek
I hjertet av documents4j er et elegant designet fluent API som gjør dokumentkonvertering naturlig og lesbar. IConverter‑grensesnittet gir en builder‑stil kjede som lar deg spesifisere kildefilen eller -strømmen, erklære input‑ og output‑dokumenttyper, sette en konverteringsprioritet, og velge mellom synkron eller asynkron utførelse — alt i ett rent uttrykk. API‑et skjuler alle implementasjonsdetaljer, slik at forretningslogikken din aldri trenger å vite om en lokal eller fjernkonverterer kjører under huden. Her er et enkelt eksempel som viser hvordan du oppnår konverteringsprosessen.
Hvordan konvertere Word til PDF via 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();
}
}
Fjernkonverterer med REST API-server
Ikke alle Java‑applikasjonsservere har MS Office installert — og de burde ikke. documents4j løser dette med en innebygd fjernkonverterer‑arkitektur. En frittstående konverteringsserver (som internt bruker en LocalConverter) kjører på en separat Windows‑maskin med MS Office installert og eksponerer et REST‑API. Java‑applikasjonen din bruker en RemoteConverter som sender dokumenter over HTTP og mottar det konverterte filen tilbake. Hele håndtrykket er usynlig for applikasjonskoden; samme IConverter‑grensesnitt brukes på begge sider.
Hvordan utføre fjernkonvertering av Word-dokumenter i Java‑applikasjoner?
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-kryptering og grunnleggende autentisering
I produksjonsmiljøer inneholder dokumentfiler ofte sensitiv forretnings-, juridisk eller personlig informasjon. Å overføre dem over vanlig HTTP er en alvorlig sikkerhetsrisiko. documents4j-biblioteket håndterer dette med innebygd støtte for SSL/TLS‑kryptering mellom konverteringsklienten og -serveren, konfigurerbar via Java sin standard SSLContext. Den frittstående serveren støtter også HTTP Basic Authentication for å sikre at kun autoriserte klienter kan sende inn konverteringsforespørsler. Begge sikkerhetsfunksjonene kan aktiveres med minimal konfigurasjon, noe som gjør documents4j til en levedyktig løsning også i regulerte bransjer.
Asynkron og prioritert behandling
Konverteringer kan være ressurskrevende. documents4j lar deg planlegge konverteringer som skal kjøres i bakgrunnen (asynkront) ved hjelp av en Future