Gratis Java‑API til at konvertere Word-dokument af høj kvalitet til PDF
Et førende open source-bibliotek gør det muligt for Java-udviklere at konvertere MS Office DOCX-, XLSX- og PDF-filer med høj nøjagtighed ved brug af native applikationer.
Hvad er Documents4j ?
documents4j er et kraftfuldt open‑source Java‑bibliotek designet til at konvertere dokumenter mellem forskellige formater, såsom DOCX til PDF eller XLSX til PDF. I modsætning til mange traditionelle biblioteker delegere documents4j konverteringsprocessen til native applikationer som Microsoft Word og Excel, hvilket sikrer output af høj kvalitet med minimale formateringsproblemer. Biblioteket har en anden tilgang. I stedet for at genimplementere konverteringslogikken fungerer det som en bro, der overlader det tunge løft til native applikationer (som Microsoft Word eller Excel), som allerede forstår disse formater perfekt. Dette sikrer, at uddata‑dokumentet—f.eks. en PDF genereret fra en Word‑fil—ser præcis ud, som det ville, hvis du manuelt havde klikket på "Save As" i MS Office.
Den primære værdi af documents4j ligger i dets nøjagtighed. For virksomheder, der kræver dokumentation i professionel kvalitet, hvor hver margin og skrifttype skal forblive intakt, kan det være risikabelt at stole på open‑source‑parsere. documents4j er særligt nyttigt til at generere fakturaer eller rapporter fra skabeloner, automatisere dokumentarbejdsgange i et Windows‑baseret miljø og adskille konverteringslogikken fra din hovedapplikation via en fjernserver. Ved at udnytte native applikationer sikrer det uovertruffen nøjagtighed sammenlignet med traditionelle biblioteker. Dens understøttelse af lokal og fjernbehandling, samtidig udførelse og load balancing gør den yderst egnet til enterprise‑systemer.
Kom i gang med documents4j
Den anbefalede måde at installere documents4j på er via Maven-repositorium. Du kan nemt tilføje documents4j-biblioteket direkte i dine Maven-projekter med simple konfigurationer.
Maven-repositorium 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
Konvertering af Word til PDF via Java-bibliotek
I hjertet af documents4j ligger et elegant designet fluens API, der får dokumentkonvertering til at føles naturlig og læsbar. IConverter‑interfacet giver en builder‑stil kæde, som lader dig angive kildefilen eller -strømmen, deklarere input‑ og output‑dokumenttyper, sætte en konverteringsprioritet og vælge mellem synkron eller asynkron udførelse — alt i én ren udtryk. API‑et skjuler alle implementeringsdetaljer, så din forretningslogik aldrig behøver at vide, om en lokal eller fjernkonverter kører i baggrunden. Her er et enkelt eksempel, der viser, hvordan man opnår konverteringsprocessen.
Hvordan konverterer man Word til PDF via Java-biblioteket?
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();
}
}
Fjernkonverter med REST API-server
Ikke alle Java‑applikationsservere har MS Office installeret — og det bør de heller ikke. documents4j løser dette med en indbygget fjernkonverter‑arkitektur. En selvstændig konverteringsserver (som internt bruger en LocalConverter) kører på en separat Windows‑maskine med MS Office installeret og eksponerer et REST‑API. Din Java‑applikation bruger en RemoteConverter, der sender dokumenter over HTTP og modtager den konverterede fil tilbage. Hele håndtrykket er usynligt for applikationskoden; det samme IConverter‑interface anvendes på begge sider.
Hvordan udfører man fjernkonvertering af Word-dokumenter i Java‑apps?
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 grundlæggende godkendelse
I produktionsmiljøer indeholder dokumentfiler ofte følsomme forretnings‑, juridiske eller personlige data. Overførsel over almindelig HTTP er en alvorlig sikkerhedsrisiko. documents4j‑biblioteket håndterer dette med indbygget understøttelse af SSL/TLS‑kryptering mellem konverteringsklienten og -serveren, konfigurerbar via Javas standard‑SSLContext. Den selvstændige server understøtter også HTTP Basic Authentication for at sikre, at kun autoriserede klienter kan indsende konverteringsanmodninger. Begge sikkerhedsfunktioner kan aktiveres med minimal konfiguration, hvilket gør documents4j til en levedygtig løsning selv i regulerede industrier.
Asynkron og prioriteret behandling
Konverteringer kan være ressourcekrævende. documents4j giver dig mulighed for at planlægge konverteringer til at køre i baggrunden (asynkront) ved brug af en Future