高品質 Word ドキュメントを PDF に変換する無料 Java API
業界トップクラスのオープンソースライブラリが、Java 開発者に対し、ネイティブアプリケーションを使用して MS Office DOCX、XLSX、PDF ファイルを高精度で変換できるようにします。
Documents4j とは?
documents4j は、DOCX から PDF や XLSX から PDF への変換など、さまざまなフォーマット間でドキュメントを変換するために設計された、強力なオープンソース Java ライブラリです。多くの従来型ライブラリと異なり、documents4j は変換プロセスを Microsoft Word や Excel などのネイティブアプリケーションに委譲し、最小限のフォーマット問題で高品質な出力を保証します。ライブラリは別のアプローチを取ります。変換ロジックを再実装する代わりに、ブリッジとして機能し、既にこれらのフォーマットを完璧に理解しているネイティブアプリケーション(Microsoft Word や Excel など)に重い作業を委譲します。これにより、出力ドキュメント(たとえば Word ファイルから生成された PDF)が、MS Office で手動で「名前を付けて保存」をクリックしたときと全く同じ見た目になることが保証されます。
documents4j の最大の価値はその精度にあります。すべての余白やフォントが保たれることが求められるプロフェッショナルレベルの文書化を必要とする企業にとって、オープンソースパーサに依存することはリスクがあります。documents4j はテンプレートから請求書やレポートを生成したり、Windows ベースの環境で文書ワークフローを自動化したり、リモートサーバー設定によって主要アプリケーションから変換ロジックを切り離すのに特に有用です。ネイティブアプリケーションを活用することで、従来のライブラリと比べて比類なき精度を実現します。ローカルおよびリモート処理、同時実行、ロードバランシングのサポートにより、エンタープライズ向けシステムに最適です。
Documents4j の使い方
まず最初に、システムに Java Development Kit (JDK) がインストールされている必要があります。Maven ベースの Java プロジェクトで documents4j を参照するのはさらに簡単です。pom.xml に以下の依存関係を追加し、IDE に documents4j の Jar ファイルを取得・参照させるだけです。
documents4j の Maven リポジトリ
// 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>
GitHub から documents4j をインストール
git clone https://github.com/documents4j/documents4j.git
cd documents4j
cd documents4j-local-demo
mvn jetty:run
Java ライブラリで Word を PDF に変換
オープンソースの documents4j は、Java アプリケーション内で複数のドキュメントタイプを PDF に変換できるようにします。ライブラリは Micro Word (DOC、DOCX)、Excel (XLS、XLSX)、PowerPoint (PPT、PPTX)、RTF、OpenDocument フォーマットなどをサポートしています。この広範なフォーマット互換性により、さまざまなユースケースでシームレスなドキュメント変換が保証されます。以下は、Java コマンドを使用して Word ドキュメント (.docx) を PDF に変換できるシンプルな例です。
Java ライブラリで Word を PDF に変換する方法は?
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();
}
}
REST API サーバーを備えたリモートコンバータ
オープンソースの documents4j ライブラリは、ドキュメントを PDF に変換する際に PDF 出力をカスタマイズできます。たとえば、開発者はページサイズ (A4、Letter など)、余白、方向 (縦または横)、ヘッダー/フッターを制御できます。また、HTML コンテンツに CSS スタイルを適用して視覚的な制御を正確に行い、フォントファミリー、色、サイズなども制御できます。以下のコードスニペットは、ライブラリが生成した PDF にさまざまな設定を適用する方法を示しています。
Java アプリ内でリモート Word ドキュメント変換を実行する方法は?
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 暗号化とベーシック認証
documents4j ライブラリは、Java 開発者が簡単に動的で高度な PDF ドキュメントを作成できるようにします。入力ファイルのフォーマットを自動的に検出し、適切に処理します。Word、Excel、PowerPoint、RTF のいずれのファイルでも、追加設定なしでシームレスに PDF に変換されます。以下は、Java アプリケーション内で Markdown ファイルを PDF に変換できる例です。
非同期・優先度付き処理
Conversions can be resource-intensive. documents4j allows you to schedule conversions to run in the background (asynchronously) using a Future