IronPDF for Javaを使用してHTMLをPDFに変換する方法

JavaでHTMLからPDFへ

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF for Javaは、モダンなブラウザを駆動するのと同じChromiumレンダリングエンジンを使用して、HTMLコンテンツをPDFドキュメントに変換します。 すべてのCSSプロパティ、フォント、画像、およびJavaScript生成のレイアウトは、ブラウザウィンドウと同じように正確にレンダリングされ、ピクセル精度のPDFとしてページに収まります。

このチュートリアルでは、 3 つのコア変換メソッドを説明します: HTML文字列からPDF、ライブURLからPDF、ローカルHTMLファイルからPDF。 その方法は、インストール、ライセンスの設定、開発者が最も頻繁に使用するレンダリングオプションカバーします。

JavaライブラリはIronPDF for .NETのAPI形状を反映しているため、両方のランタイムで作業しているチームは移行が簡単です。 このチュートリアルのすべての例のソースコードはGitHubで入手可能です。

クイックスタート: JavaでHTMLからPDFに変換

Maven pom.xml に IronPDF を追加し、1 つのメソッドを呼び出すだけで PDF を作成できます:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/quickstart.java
import com.ironsoftware.ironpdf.*;

// Set your license key before any rendering calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Convert an HTML string to a PDF and save it
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF for Java!</h1>");
pdf.saveAs("output.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/quickstart.java
import com.ironsoftware.ironpdf.*;

// Set your license key before any rendering calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Convert an HTML string to a PDF and save it
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF for Java!</h1>");
pdf.saveAs("output.pdf");
JAVA

今日あなたのプロジェクトでIronPDFを無料トライアルで使用開始。

最初のステップ:
green arrow pointer

目次


IronPDF for Javaのインストール

IronPDF for Javaは、Maven Central 及びスタンドアロンの JAR ファイルとして提供されます。 Maven を利用することで、ほとんどのプロジェクトで推奨されます。これは依存関係をまとめて解決し、開発者マシンやCIパイプライン全体でライブラリバージョンを一貫して保つからです。

オプション 1:Maven の依存関係として IronPDF を追加する

プロジェクトの pom.xml ファイルを開き、<dependencies> ブロックに以下のエントリを追加してください:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/maven-dependency.xml
<dependencies>

    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>
</dependencies>
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/maven-dependency.xml
<dependencies>

    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>
</dependencies>
XML

最初のアーティファクトは、最新のIronPDF for Javaリリースを引き込みます。 第二のアーティファクトはSLF4Jロギングを有効にし、IronPDFのレンダリングエンジンが実行中に診断メッセージを書くことができるようにします。 LogbackやLog4Jを好む開発者は、そのプロバイダーを代わりに使用できます。 ロギングの依存関係はオプションのため、ログが必要でなければ省略してください。

ファイルを保存した後、プロジェクトのルートディレクトリから mvn install を実行して、両方のライブラリをダウンロードしてください。 Maven は、IronPDF が必要とするすべてのトランジティブな依存関係を含む依存関係グラフを自動的に解決します。

Gradleプロジェクトの場合、build.gradle における同等の依存関係宣言は次のとおりです:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/gradle-dependency.java
// build.gradle (Groovy DSL)
// dependencies {
//     implementation 'com.ironsoftware:ironpdf:[LATEST_VERSION]'
//     implementation 'org.slf4j:slf4j-simple:[LATEST_VERSION]'
// }
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/gradle-dependency.java
// build.gradle (Groovy DSL)
// dependencies {
//     implementation 'com.ironsoftware:ironpdf:[LATEST_VERSION]'
//     implementation 'org.slf4j:slf4j-simple:[LATEST_VERSION]'
// }
JAVA

[LATEST_VERSION]、IronPDFの変更履歴またはMaven Centralのアーティファクトページに記載されているバージョン番号に置き換えてください。

オプション 2: JAR ファイルを手動で追加する

IronPDF JAR を直接 Maven Central からダウンロードし、プロジェクトのクラスパスに追加します。 このアプローチはビルドツールなしでも機能しますが、手動バージョン管理を必要とするため、MavenやGradleを使用しないレガシープロジェクト、あるいはアウトバウンドネットワークアクセスが制限されている環境に最も適しています。

ダウンロードした後、IDEのプロジェクト設定を通じてJARをプロジェクトのクラスパスに追加します。 IntelliJ IDEAでは、プロジェクトルートを右クリックし、"モジュール設定を開く" を選択し、"依存関係" に移動し、JARファイルを追加します。Eclipseでは、プロジェクトを右クリックし、"プロパティ > Java Build Path > Libraries" に進み、"外部JARの追加" をクリックします。

ご注意IronPDF JAR にはバンドルされた Chromium エンジン バイナリが含まれています。 新しいマシンでの最初のレンダリングコールは、数秒間かかる一時ディレクトリへの抽出を行います。 その後の呼び出しはキャッシュされたバイナリを使用して即座に開始します。 コンテナ化された環境では、抽出パスに永続的なボリュームをマウントして、コンテナの起動ごとに再抽出を避けてください。)}

システム要求

IronPDF for Java は JDK 8 以降で動作します。 それは Windows、Linux、macOS の x86-64 および ARM64 アーキテクチャの両方をサポートします。 外部ブラウザのインストールは必要ありません — ChromiumバイナリはJARとバンドルされています。 Linuxでは、Chromiumによって期待される標準的な共有ライブラリが存在することを確認してください。 IronPDF for Java ドキュメント には、一般的なLinuxディストリビューションの最低必要パッケージのリストがあります。


どうすればIronPDFをインポートしてライセンスキーを構成できますか?

すべての IronPDF クラスは com.ironsoftware.ironpdf パッケージ内に存在します。 PDFドキュメントを作成または操作するソースファイルの先頭でそれをインポートします。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/import-and-license.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Apply your license key before any other IronPDF calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Optional: set a custom log file path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/import-and-license.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Apply your license key before any other IronPDF calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Optional: set a custom log file path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
JAVA

ライセンスキーがない場合、IronPDFは試用モードで動作し、タイル状の透かしで各PDFページにスタンプを押します。 キーを設定すると、透かしが削除され、すべての機能がアンロックされます。 無料トライアルを開始して、すぐにキーを取得してください。

レンダリングされたPDFページにIronPDFの試用版ウォーターマークが押印されている

ライセンスキーは、試用版または商用ライセンスがアクティブ化されたときにIron Softwareが発行する文字列です。 環境変数や設定ファイルに保存し、ソースコードにハードコーディングしないようにしてください。 一般的なパターンとして、起動時に環境変数から読み取ります:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/license-from-env.java
import com.ironsoftware.ironpdf.*;

// Read the license key from an environment variable
String licenseKey = System.getenv("IRONPDF_LICENSE_KEY");
if (licenseKey != null && !licenseKey.isEmpty()) {
    License.setLicenseKey(licenseKey);
}
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/license-from-env.java
import com.ironsoftware.ironpdf.*;

// Read the license key from an environment variable
String licenseKey = System.getenv("IRONPDF_LICENSE_KEY");
if (licenseKey != null && !licenseKey.isEmpty()) {
    License.setLicenseKey(licenseKey);
}
JAVA

この方法でキーをバージョン管理から外し、開発、ステージング、プロダクションの各環境で異なるキーを簡単に使用できます。

重要License.setLicenseKey および Settings.setLogPath は、レンダリングや操作を行うメソッドを呼び出す前に、必ず両方とも呼び出す必要があります。 アプリケーションの起動時に配置してください。理想的には、静的初期化ブロックまたは main エントリポイント内が望ましいです。)}]


どうすればHTML文字列をPDFに変換できますか?

PdfDocument.renderHtmlAsPdf は HTML マークアップの文字列を受け取り、ディスクに書き込む前に保存、マージ、または変更が可能な PdfDocument オブジェクトを返します。 これは、プログラムで生成されたHTMLに対する主な方法です — 例えば、データベースの値をJava文字列として定義されたHTMLテンプレートと組み合わせて構築されたレポートなど。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Simple one-liner: convert an HTML string to a PDF
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.saveAs("htmlstring_to_pdf.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Simple one-liner: convert an HTML string to a PDF
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.saveAs("htmlstring_to_pdf.pdf");
JAVA

レンダリングエンジンは、オプションの第2引数 - ベースパスに対して相対資産パス(画像、スタイルシート、スクリプト)を解決します。 ベースパスが提供された場合、エンジンはそれを相対URLを解決するルートとして扱います。 これにより、ローカルCSSおよび画像ファイルを参照するHTMLをソースマークアップでパス操作を行わずに正しくレンダリングできます。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-with-assets.java
import com.ironsoftware.ironpdf.*;

// HTML references assets in a local "assets" subfolder
String html = "<html>" +
    "<head><link rel='stylesheet' href='assets/style.css'></head>" +
    "<body><h1>Invoice</h1><img src='assets/logo.png' /></body>" +
    "</html>";

// Pass the base path so IronPDF resolves relative asset URLs
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html, "C:/my-project/templates");
pdf.saveAs("invoice.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-with-assets.java
import com.ironsoftware.ironpdf.*;

// HTML references assets in a local "assets" subfolder
String html = "<html>" +
    "<head><link rel='stylesheet' href='assets/style.css'></head>" +
    "<body><h1>Invoice</h1><img src='assets/logo.png' /></body>" +
    "</html>";

// Pass the base path so IronPDF resolves relative asset URLs
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html, "C:/my-project/templates");
pdf.saveAs("invoice.pdf");
JAVA

saveAs メソッドは、絶対パスまたは相対パスを受け付けます。 ライブラリはファイルが存在しない場合は作成し、存在する場合は上書きします。 アプリケーションがまだ作成していない可能性のあるディレクトリに書き込む場合は、Files.createDirectories(Paths.get("output"))を使用してそのディレクトリを先に作成してください。

IronPDFは、Chromiumで実装されたフルHTML5およびCSS3フィーチャーセットをサポートします。 CSSの@font-faceを介して読み込まれたカスタムフォントは、フォントファイルがベースパスからアクセス可能な場合に正しく表示されます。 JavaScriptによってレンダリングされたSVG要素や<canvas>要素も、PDF出力に含まれます。

ヒントHTMLテンプレートを専用のディレクトリに保持し、そのディレクトリをベースパスとして渡します。 このパターンにより、デザイナーはJavaコードに触れることなくテンプレートを更新できます。


どうすればJavaでURLをPDFに変換できますか?

PdfDocument.renderUrlAsPdf は、指定された URL のページを取得し、JavaScript の実行と動的コンテンツの読み込みを待機した後、完全にレンダリングされた DOM を PDF/A に変換します。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/url-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a live web page to PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("wikipedia_pdf_article.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/url-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a live web page to PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("wikipedia_pdf_article.pdf");
JAVA

エンジンは認証ヘッダー、クッキー、JavaScriptを多用するシングルページアプリケーションを処理します。 ログインやカスタムリクエストヘッダーが必要なページでは、ChromePdfRenderOptions クラスを使用してリクエストパラメータを設定してから、renderUrlAsPdf を呼び出してください。

この変換方法は、ウェブページのアーカイブ、コンプライアンススナップショットの生成、および内部ダッシュボードからのクライアント向けレポートの生成に役立ちます。 ローカルネットワーク経由でアクセスするサーバー生成ページも完全にサポートされています。パブリックURLと同様に、http://localhost:8080/report/123 を渡してください。 IronPDFは、ページが完全に読み込まれるのを待ってからレンダリングするため、非同期データ取得に依存するダッシュボードが空のグラフではなくデータで埋められた状態でレンダリングされます。

HTTP基本認証が必要なページについては、http://user:password@host/path 形式を使用してURLに認証情報を渡してください。 セッション Cookie で保護されているページについては、ChromePdfRenderOptions オブジェクトを renderUrlAsPdf に渡す前に、その Cookie ジャーを設定してください。 IronPDF for Java documentationで認証済みURLのリクエストヘッダーの設定とクッキー管理の詳細を参照してください。


ローカルHTMLファイルをPDFに変換する方法は?

PdfDocument.renderHtmlFileAsPdf は、ローカルファイルシステムから HTML ファイルを読み込み、PDF としてレンダリングします。 ファイル内の相対パスで参照されるすべてのリンクアセット(CSS、JavaScript、画像)は、HTMLファイル自体のディレクトリに対して解決されます。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a local HTML file — assets resolve relative to its directory
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a local HTML file — assets resolve relative to its directory
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
JAVA

このアプローチは、複雑なHTMLドキュメントを変換するための最も正確な方法です。 レンダリングエンジンがインメモリ文字列ではなくファイルシステムパスで動作するため、複数レベルのアセットディレクトリへの相対参照が追加の設定なしで解決されます。 同じフォルダ内の style.css および script.js に依存するテンプレートは、パスの調整なしに正しくレンダリングされます。

このメソッドは、請求書の生成や契約書の作成、デザイナーがHTMLテンプレートをJavaアプリケーションから独立して維持するワークフローに特に適しています。 開発チームは、このテンプレートをデータファイルとして扱い、アプリケーションと一緒に保存し、そのパスを引数として renderHtmlFileAsPdf を呼び出します。 デザイナーがテンプレートを更新してブランディングやレイアウトを変更すると、Javaコードの変更は不要です。

ご注意IronPDFはChromiumがサポートするすべての最新HTMLおよびCSS機能をサポートします — Flexbox、CSS Grid、CSS変数、ウェブフォント、メディアクエリがすべて出力PDFで正しくレンダリングされます。


PDF生成オプションを設定する方法は?

ChromePdfRenderOptions は、用紙サイズ、余白、Zoomレベル、印刷メディアの種類、JavaScriptのタイムアウトなど、レンダリングの動作を制御します。 インスタンスを作成し、必要なプロパティを設定して、それを任意の render*AsPdf メソッドの 2 番目の引数として渡します。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Render the page using the print media type (uses @media print CSS rules)
options.setCssMediaType(CssMediaType.PRINT);

// Wait up to 5 seconds for JavaScript to finish executing
options.setJavaScriptTimeout(5000);

// Apply a 1.5x zoom level to scale content to fit the page
options.setZoom(150);

// Render at 150 DPI for sharper images in print output
options.setDpi(150);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
    "<h1>Styled Report</h1>",
    options
);
pdf.saveAs("styled_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Render the page using the print media type (uses @media print CSS rules)
options.setCssMediaType(CssMediaType.PRINT);

// Wait up to 5 seconds for JavaScript to finish executing
options.setJavaScriptTimeout(5000);

// Apply a 1.5x zoom level to scale content to fit the page
options.setZoom(150);

// Render at 150 DPI for sharper images in print output
options.setDpi(150);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
    "<h1>Styled Report</h1>",
    options
);
pdf.saveAs("styled_report.pdf");
JAVA

CssMediaType.PRINT 設定は、エンジンに @media print CSS ルールを適用するよう指示します。多くの HTML テンプレートでは、このルールを使用してナビゲーションバーを非表示にし、PRINT 専用のレイアウトを適用しています。 setJavaScriptTimeout メソッドは、JavaScript チャートライブラリ(D3.js、Chart.js)を使用しているページや、コンテンツを遅延読み込みするページにおいて重要です。タイムアウトが短すぎると、JavaScript によるレンダリングが完了する前に PDF がページをキャプチャしてしまい、チャートが空になったり、一部のセクションが欠落したりする原因となります。 レンダリングされたPDFに期待されるコンテンツが欠けている場合は、タイムアウトを増やしてください。

setDpi メソッドは、出力の画像解像度を制御します。 デフォルト(96 DPI)は画面上のドキュメントに適しています。 印刷されるか高DPIディスプレイに表示されるPDF用には、150または300 DPIを使用します。 より高いDPIの値はファイルサイズを比例的に増加させます。 PDF生成設定のコード例で設定可能なプロパティの完全なリストを参照してください。


ヘッダーとフッターを追加する方法は?

IronPDFは、テキストベースおよびHTMLベースの両方のヘッダーとフッターをサポートしています。 テキストヘッダーには、レンダリング時に自動的に解決されるフォーマットトークン({date})を含む TextHeaderFooter オブジェクトが使用されています。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.headerfooter.*;

// Create a text-based header and footer
TextHeaderFooter header = new TextHeaderFooter();
header.setCenterText("Confidential — {date}");
header.setFontSize(10);

TextHeaderFooter footer = new TextHeaderFooter();
footer.setLeftText("My Company, Inc.");
footer.setRightText("Page {page} of {total-pages}");
footer.setFontSize(9);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Annual Report</h1>");
pdf.addTextHeaders(header);
pdf.addTextFooters(footer);
pdf.saveAs("report_with_headers.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.headerfooter.*;

// Create a text-based header and footer
TextHeaderFooter header = new TextHeaderFooter();
header.setCenterText("Confidential — {date}");
header.setFontSize(10);

TextHeaderFooter footer = new TextHeaderFooter();
footer.setLeftText("My Company, Inc.");
footer.setRightText("Page {page} of {total-pages}");
footer.setFontSize(9);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Annual Report</h1>");
pdf.addTextHeaders(header);
pdf.addTextFooters(footer);
pdf.saveAs("report_with_headers.pdf");
JAVA

{page} および {total-pages} トークンは、フッターに"3/12"のような値を生成し、ページ数が変更されると自動的に更新されるため、レンダリング前に最終的なページ数を把握する必要はありません。 {date} トークンは、システムのロケールに基づいて現在の日付を挿入します。 その他の利用可能なトークンには、{document-title}、および {url} があります。

addTextHeaders および addTextFooters で追加されたヘッダーとフッターは、デフォルトでドキュメント内のすべてのページに適用されます。 オプションのページ範囲パラメータを渡して特定のページに制限します — 例えば、表紙にヘッダーをスキップするために。

ロゴ、ブランドカラー、またはカスタムレイアウトを必要とするスタイル付きヘッダーについては、代わりに HtmlHeaderFooter を使用してください。これは完全な HTML 文字列を受け入れ、ページ本文と同じようにレンダリングします。 カスタムヘッダーとフッターの例で完全なHTMLヘッダーパターンを参照してください。


ページの余白と用紙サイズを設定する方法は?

ChromePdfRenderOptions メソッドを呼び出す前に、余白と用紙サイズの値を設定した ChromePdfRenderOptions インスタンスを渡してください。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/margins-paper-size.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
import com.ironsoftware.ironpdf.page.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Set uniform margins in millimeters
options.setMarginTop(20);
options.setMarginBottom(20);
options.setMarginLeft(15);
options.setMarginRight(15);

// Use A4 paper (default is Letter)
options.setPaperSize(PaperSize.A4);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<p>Page content here.</p>", options);
pdf.saveAs("a4_with_margins.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/margins-paper-size.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
import com.ironsoftware.ironpdf.page.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Set uniform margins in millimeters
options.setMarginTop(20);
options.setMarginBottom(20);
options.setMarginLeft(15);
options.setMarginRight(15);

// Use A4 paper (default is Letter)
options.setPaperSize(PaperSize.A4);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<p>Page content here.</p>", options);
pdf.saveAs("a4_with_margins.pdf");
JAVA

余白値はミリメートル単位です。 PaperSize 列挙型は、標準的な用紙サイズ(A4、レター、リーガル、A3など)を網羅しています。 標準以外のサイズが必要な開発者は、options.setCustomPaperWidth および options.setCustomPaperHeight を使用して、幅と高さをカスタマイズできます。 カスタム用紙サイズ例およびカスタム余白例で完全な構成パターンを確認してください。


PDFに透かしを適用する方法は?

IronPDFの透かしは、設定可能な不透明度で各ページにスタンプされるHTMLです。 このアプローチにより、開発者は透かしの外観を完全に制御できます — どんなHTML要素、画像、またはスタイル付きテキストでもスタンプとして機能します。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/watermark.java
import com.ironsoftware.ironpdf.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Confidential Report</h1><p>Internal use only.</p>");

// Define the watermark using an HTML string
String watermarkHtml = "<h1 style='color:rgba(200,0,0,0.3); transform:rotate(-45deg);'>DRAFT</h1>";

// Stamp the watermark on all pages at 50% opacity
pdf.applyStamp(watermarkHtml);

pdf.saveAs("draft_watermark.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/watermark.java
import com.ironsoftware.ironpdf.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Confidential Report</h1><p>Internal use only.</p>");

// Define the watermark using an HTML string
String watermarkHtml = "<h1 style='color:rgba(200,0,0,0.3); transform:rotate(-45deg);'>DRAFT</h1>";

// Stamp the watermark on all pages at 50% opacity
pdf.applyStamp(watermarkHtml);

pdf.saveAs("draft_watermark.pdf");
JAVA

applyStamp メソッドは、正確な配置(中央、左上、カスタムピクセルオフセット、z-index(前景または背景))を行うための HtmlStampOptions パラメータを受け付けます。 スタンプを背景として設定すると、テキストの後ろに配置され、ドキュメントが読みやすいままになります。 前景として設定すると上に載り、印刷時に隠しにくくなります。

ヒント繰り返しタイルの透かしを生成するには、IronPDF自体がトライアルモードで適用する種類の、HTMLスタンプ文字列に回転したテキスト要素のグリッドをレンダリングし、要素をページ全体にフィットするようにサイズを設定します。

カスタム透かしの方法ガイドで背景透かし、タイルパターン、ライセンスをアップグレードして透かしを削除する方法の例を確認してください。


複数のPDFを1つにマージする方法は?

PdfDocument.merge は、2つ以上の PdfDocument オブジェクトを順番に結合し、1つの新しいドキュメントを返します。 これは、コンポーネントセクションからレポートを組み立てる、表紙を追加する、バッチジョブのユーザーごとのセクションをステッチするための好ましいアプローチです。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/merge-pdfs.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;
import java.util.List;

// Render two separate HTML documents into PDFs
PdfDocument cover    = PdfDocument.renderHtmlAsPdf("<h1>Cover Page</h1>");
PdfDocument body     = PdfDocument.renderHtmlAsPdf("<h1>Report Body</h1><p>Section one...</p>");
PdfDocument appendix = PdfDocument.renderHtmlAsPdf("<h2>Appendix A</h2>");

// Merge all three into a single PDF in the specified order
List<PdfDocument> parts = Arrays.asList(cover, body, appendix);
PdfDocument merged = PdfDocument.merge(parts);
merged.saveAs("full_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/merge-pdfs.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;
import java.util.List;

// Render two separate HTML documents into PDFs
PdfDocument cover    = PdfDocument.renderHtmlAsPdf("<h1>Cover Page</h1>");
PdfDocument body     = PdfDocument.renderHtmlAsPdf("<h1>Report Body</h1><p>Section one...</p>");
PdfDocument appendix = PdfDocument.renderHtmlAsPdf("<h2>Appendix A</h2>");

// Merge all three into a single PDF in the specified order
List<PdfDocument> parts = Arrays.asList(cover, body, appendix);
PdfDocument merged = PdfDocument.merge(parts);
merged.saveAs("full_report.pdf");
JAVA

ソースドキュメントの各ページは、ソースリストが指定する順序でマージされた出力に表示されます。 マージされたドキュメントは、個々のソースからメタデータを継承しません。マージ後に、それらのフィールドが下流の利用者にとって重要である場合は、PdfDocument.getPdfMetaData()を使用して更新してください。

merge メソッドには、PdfDocument インスタンスを正確に 2 つ受け取る 2 引数のオーバーロードもあります。 多くのドキュメントの一括マージには、リストのオーバーロードを使用します — これは、複数の二つの引数の呼び出しをチェーン化するよりも効率的で、すべてのソースを一度に処理するためです。

ご注意マージリスト内の各ソース PdfDocument は、呼び出し後も有効かつ変更されないまま残ります。 merged インスタンスは、新しい独立したドキュメントです。 (不要になったソースドキュメントは、関連するネイティブリソースを解放するために、close() メソッドを使用して解放してください。)}]


PDFからページを追加または削除する方法は?

個々のページは、PdfDocument.copyPages、および PdfDocument.removePages メソッドを使用して、あるドキュメントから別のドキュメントへコピーしたり、完全に削除したりすることができます。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/page-operations.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;

// Generate a multi-page document using CSS page breaks
PdfDocument report = PdfDocument.renderHtmlAsPdf(
    "<p>Page 1 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 2 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 3 content</p>"
);

// Remove page 2 (zero-indexed — page index 1)
report.removePages(Arrays.asList(1));

// Save the two-page result
report.saveAs("two_page_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/page-operations.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;

// Generate a multi-page document using CSS page breaks
PdfDocument report = PdfDocument.renderHtmlAsPdf(
    "<p>Page 1 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 2 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 3 content</p>"
);

// Remove page 2 (zero-indexed — page index 1)
report.removePages(Arrays.asList(1));

// Save the two-page result
report.saveAs("two_page_report.pdf");
JAVA

IronPDF内のページインデックスはゼロベースです。 複数のページを削除する際は、ループ内で何度も呼び出すのではなく、すべてのインデックスを単一の removePages 呼び出しで渡してください。これは、削除を行うたびに後続のページインデックスがずれてしまうためです。 すべてのリストを一度に渡すことでインデックスのずれを防ぎます。 例えば、5ページのドキュメントから2ページ目と4ページ目を削除するには、Arrays.asList(1, 3) を渡してください。2つの別々の呼び出しを行わないでください。

外部PDFのページを挿入する場合(例えば、静的テンプレートから法的開示事項を追加する場合など)、PdfDocument.insertPdf を使用して、特定の位置に外部ドキュメントを挿入してください。 受信ドキュメントのページ数は挿入直後に更新されます。

css page-break-after:always CSSプロパティは、PDFとしてレンダリングされるHTML内で改ページを強制するための標準的な方法です。 IronPDFは、新しいbreak-after: page CSSプロパティもサポートしています。 どちらの方法も、特別なJavaコードを必要とせずに予測可能なページ区切りを生成します。


JavaでPDFにパスワードをかける方法は?

IronPDFはPDFに2つの異なるパスワードをサポートしています:編集、印刷、およびコピーの権限を制御するオーナーパスワード、およびドキュメントの開封を制御するユーザーパスワード。 どちらも SecurityOptions クラスを通じて設定されます。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/password-protect.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.security.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Secure Document</h1>");

SecurityOptions security = new SecurityOptions();

// Require a password to open the document
security.setUserPassword("user123");

// Require a separate password to edit, print, or copy content
security.setOwnerPassword("owner456");

// Restrict printing to prevent unauthorized reproduction
security.setAllowUserPrinting(PrintOptions.FullPrintQuality);

PdfSecurityManager securityManager = new PdfSecurityManager(pdf);
securityManager.setSecurityOptions(security);

pdf.saveAs("secure_document.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/password-protect.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.security.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Secure Document</h1>");

SecurityOptions security = new SecurityOptions();

// Require a password to open the document
security.setUserPassword("user123");

// Require a separate password to edit, print, or copy content
security.setOwnerPassword("owner456");

// Restrict printing to prevent unauthorized reproduction
security.setAllowUserPrinting(PrintOptions.FullPrintQuality);

PdfSecurityManager securityManager = new PdfSecurityManager(pdf);
securityManager.setSecurityOptions(security);

pdf.saveAs("secure_document.pdf");
JAVA

AllowUserPrinting 設定は、PrintOptions 列挙型(LowQualityPrint、または NoPrint)を受け付けます。 オーナーパスワードが設定されているがユーザーパスワードが空のままである場合、ドキュメントはパスワードなしで開きますが、編集その他の操作にはPDFエディタでオーナーパスワードが必要です。

警告PDFパスワード保護はファイルを暗号化しますが、正規のアクセス制御システムの代替にはなりません。 特殊なツールを持つ決意のあるユーザーは、弱いパスワードに対してブルートフォースアタックを試みることができます。 本当にセキュリティが必要なドキュメントには強力でランダムに生成したパスワードを使用してください。)]}


動的データを含むHTMLテンプレートを変換する方法は?

データ駆動型のHTMLテンプレートからPDFを生成することは、IronPDFの最も一般的な生成使用ケースの1つです。 標準的なアプローチは、Javaでテンプレートライブラリや文字列操作を使用してHTML文字列を構築し、完成した文字列をrenderHtmlAsPdfに渡すことです。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/dynamic-template.java
import com.ironsoftware.ironpdf.*;

// Simulate data from a database or service layer
String customerName  = "Acme Corp";
String invoiceNumber = "INV-20240501";
String totalAmount   = "$1,250.00";
String dueDate       = "2024-06-01";

// Build the HTML template with real data injected
String html = "<!DOCTYPE html><html><head>" +
    "<style>body{font-family:Arial,sans-serif;margin:40px;}" +
    "table{width:100%;border-collapse:collapse;}" +
    "th,td{border:1px solid #ccc;padding:8px;text-align:left;}" +
    "th{background:#f4f4f4;}</style></head><body>" +
    "<h1>Invoice</h1>" +
    "<p><strong>Customer:</strong> " + customerName + "</p>" +
    "<p><strong>Invoice #:</strong> " + invoiceNumber + "</p>" +
    "<table><tr><th>Description</th><th>Amount</th></tr>" +
    "<tr><td>Professional Services</td><td>" + totalAmount + "</td></tr>" +
    "</table>" +
    "<p><strong>Due Date:</strong> " + dueDate + "</p>" +
    "</body></html>";

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
pdf.saveAs(invoiceNumber + ".pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/dynamic-template.java
import com.ironsoftware.ironpdf.*;

// Simulate data from a database or service layer
String customerName  = "Acme Corp";
String invoiceNumber = "INV-20240501";
String totalAmount   = "$1,250.00";
String dueDate       = "2024-06-01";

// Build the HTML template with real data injected
String html = "<!DOCTYPE html><html><head>" +
    "<style>body{font-family:Arial,sans-serif;margin:40px;}" +
    "table{width:100%;border-collapse:collapse;}" +
    "th,td{border:1px solid #ccc;padding:8px;text-align:left;}" +
    "th{background:#f4f4f4;}</style></head><body>" +
    "<h1>Invoice</h1>" +
    "<p><strong>Customer:</strong> " + customerName + "</p>" +
    "<p><strong>Invoice #:</strong> " + invoiceNumber + "</p>" +
    "<table><tr><th>Description</th><th>Amount</th></tr>" +
    "<tr><td>Professional Services</td><td>" + totalAmount + "</td></tr>" +
    "</table>" +
    "<p><strong>Due Date:</strong> " + dueDate + "</p>" +
    "</body></html>";

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
pdf.saveAs(invoiceNumber + ".pdf");
JAVA

より大きなプロジェクトの場合、HTMLテンプレートを分離ファイルとして管理し、コンテキストオブジェクトを介してデータを挿入し、文字列結合よりもテンプレート構文をきれいに保つためにThymeleafまたはFreemarkerのようなJavaテンプレートライブラリを検討してください。 どちらのライブラリも、renderHtmlAsPdfに直接渡されるプレーンなHTML文字列を生成します。

ヒントバッチジョブでPDFを生成する場合(例:顧客ごとに1枚の請求書など)、ループの前に一度 ChromePdfRenderOptions をインスタンス化し、すべてのレンダリング呼び出しで同じインスタンスを再利用してください。 呼び出しごとに新しいオプションオブジェクトを作成すると、不要なオブジェクト割り当てのオーバーヘッドが加わります。)]}


どうすればJavaでPDFからテキストを抽出できますか?

PdfDocument.extractAllText は、PDF内のすべてのページからテキストコンテンツを読み取り、単一の文字列として返します。 これは、検索インデックス化、データ抽出、およびレンダリング後のコンテンツ検証に役立ちます。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/extract-text.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Open an existing PDF (or use the result of a render call)
PdfDocument pdf = PdfDocument.fromFile(Paths.get("output.pdf"));

// Extract all text content as a plain string
String text = pdf.extractAllText();
System.out.println(text);
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/extract-text.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Open an existing PDF (or use the result of a render call)
PdfDocument pdf = PdfDocument.fromFile(Paths.get("output.pdf"));

// Extract all text content as a plain string
String text = pdf.extractAllText();
System.out.println(text);
JAVA

返された文字列は各ページ上のテキストの読み順を保持しますが、フォーマットは含まれません。 カラムやテーブルセルの間の空白はスペースとして表されます。 複数の論理セクションを含むPDFの場合、extractTextFromPage(int pageIndex)は1ページ分のテキストを分離します。これは、大規模なドキュメントを1ページずつ処理する際に効率的です。

テキストの抽出は、テキストがPDF構造内で実際のテキストオブジェクトとして保存されているPDFでのみ機能します。renderHtmlAsPdfによって生成されたPDFは、常にこの条件を満たします。 スキャンされたドキュメントではページが画像であるため、テキスト抽出が可能になる前にOCRが必要です。 IronOCRは、Javaおよび.NETアプリケーションにOCR機能を追加する補完的なIron Softwareライブラリです。

画像の抽出には、pdf.extractAllImages() を使用してください。これにより、ドキュメント内で検出された画像ごとに 1 つずつ、BufferedImage オブジェクトのリストが返されます。 PDFからテキスト抽出の例PDFから画像抽出の例で完全なコードパターンを参照してください。


どうすればPDFファイルを圧縮できますか?

PdfDocument.compressImages は、埋め込まれた画像を低画質で再エンコードすることでファイルサイズを縮小します。 これは、大きな写真やバナー画像を含むウェブページから生成されたPDFに特に効果的です。

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/compress-pdf.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

PdfDocument pdf = PdfDocument.fromFile(Paths.get("large_report.pdf"));

// Compress embedded images to 60% quality (0–100 scale)
pdf.compressImages(60);

pdf.saveAs("compressed_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/compress-pdf.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

PdfDocument pdf = PdfDocument.fromFile(Paths.get("large_report.pdf"));

// Compress embedded images to 60% quality (0–100 scale)
pdf.compressImages(60);

pdf.saveAs("compressed_report.pdf");
JAVA

50から75の品質値は通常、スクリーンリーディングに許容される視覚的忠実度で40〜70%のファイルサイズ削減を達成します。 40を下回る値は、写真に目に見えるアーティファクトを導入する可能性がありますが、大部分が単色のダイアグラムやスクリーンショットにとっては許容される可能性があります。

オーバーロードされた compressImages(int quality, boolean scaleExistingImages) メソッドは、PDF での表示サイズよりも大きい画像を縮小するかどうかを指定するブール値も受け付けます。 これを true に設定することで、高解像度の画像が埋め込まれているにもかかわらず、ページ上でははるかに小さいサイズで表示される際に生じる余分な解像度を排除し、ファイルサイズをさらに削減できます。 これは、ウェブからPDFへの変換で、2倍の解像度で画像がレティナディスプレイに提供される際に一般的です。

PDF圧縮の例は、複数ページのドキュメントにわたるバッチ圧縮を示し、圧縮後のサイズ削減を確認する方法を説明しています。


次のステップ

このチュートリアルでは、3つのHTMLからPDFへの変換方法、インストール、ライセンス設定、レンダリングオプション、ヘッダーとフッター、ページレイアウト設定、テキスト抽出、ファイル圧縮をカバーしました。

IronPDF for Java documentationで次のリソースを探索してさらに進みましょう:

  1. PDF生成設定 — 精密なレンダリング制御のためにDPI、ズーム、タイムアウト、CSSメディアタイプを設定します。
  2. ヘッダーとフッター — ブランドロゴやカスタムレイアウト付きでHTMLヘッダーとフッターを追加します。
  3. ページレイアウト — 印刷用の出力のためにカスタム余白および用紙寸法を設定します。
  4. 透かし — ドキュメントのセキュリティのために背景および前景透かしを適用します。
  5. コンテンツ抽出PDFからテキストを抽出し、画像を抽出して、下流の処理に対応します。
  6. ファイル圧縮 — 保管およびメール配信のためにPDFファイルサイズを削減します。
  7. APIリファレンス — すべてのクラスとメソッドのためのフルIronPDF Java APIリファレンスを閲覧します。

無料トライアルを開始して、今日からJavaアプリケーションでHTMLをPDFに変換を始めましょう。 デプロイの準備ができたら、ライセンスオプションを閲覧して、プロジェクトに適したプランを見つけてください。

よくある質問

JavaでHTML文字列をPDFに変換するにはどうすればよいですか?

HTML文字列でPdfDocument.renderHtmlAsPdfを呼び出します。相対CSS、画像、スクリプトの参照が正しく解決するように、オプションの基本パスを第2引数として渡します。返されたPdfDocumentsaveAsを呼び出してファイルを書き込みます。

JavaでURLをPDFに変換するにはどうすればよいですか?

完全なURLでPdfDocument.renderUrlAsPdfを呼び出します。IronPDFはJavaScriptの実行を待ち、完全に読み込まれたDOMをPDFにレンダリングします。

JavaでローカルHTMLファイルをPDFに変換するにはどうすればよいですか?

絶対ファイルパスでPdfDocument.renderHtmlFileAsPdfを呼び出します。HTMLファイル内のすべての相対アセット参照は、そのファイルのディレクトリに対して自動的に解決されます。

Mavenを使用してJavaプロジェクトにIronPDFをインストールするにはどうすればよいですか?

IronPDF依存関係をpom.xmlに追加し、groupId com.ironsoftwareおよびartifactId ironpdfとし、プロジェクトルートからmvn installを実行します。

IronPDFで生成されたPDFから透かしを削除するにはどうすればよいですか?

有効なライセンスキーでLicense.setLicenseKeyをレンダリングの呼び出し前に呼び出します。ライセンスキーがない場合、IronPDFはすべてのページにタイル状の透かしを刻印します。

JavaでPDFにヘッダーとフッターを追加するにはどうすればよいですか?

TextHeaderFooterインスタンスを作成し、{page}{total-pages}のようなフォーマットトークンを使用してそのテキストプロパティを設定し、pdf.addTextHeaderspdf.addTextFootersを呼び出します。ロゴ付きのスタイルヘッダーにはHtmlHeaderFooterを使用します。

JavaでPDFのページマージンと紙のサイズを設定するにはどうすればよいですか?

ChromePdfRenderOptionsインスタンスを作成し、setMarginTopsetMarginBottomsetMarginLeftsetMarginRight(ミリ単位)、およびsetPaperSizePaperSize列挙値を呼び出します。オプションを任意のレンダーメソッドに渡します。

Javaで複数のPDFを1つにマージするにはどうすればよいですか?

希望の順序でドキュメントを含むListを作成し、PdfDocument.mergeに渡します。このメソッドはすべてのページをすべてのソースから含む新しいPdfDocumentを返します。

JavaでPDFをパスワード保護するにはどうすればよいですか?

SecurityOptionsインスタンスを作成し、setUserPasswordsetOwnerPasswordを呼び出し、ドキュメントを保存する前にPdfSecurityManagerを介して適用します。

JavaでPDFからテキストを抽出するにはどうすればいいですか?

pdf.extractAllText()を呼び出して、すべてのテキストコンテンツを単一の文字列として取得します。extractTextFromPage(int pageIndex)を使用して特定のページからテキストを抽出します。

Darrius Serrant
フルスタックソフトウェアエンジニア(WebOps)

Darrius Serrantは、マイアミ大学でコンピュータサイエンスの学士号を取得し、Iron SoftwareでフルスタックWebOpsマーケティングエンジニアとして働いています。若い頃からコーディングに惹かれ、コンピューティングを神秘的かつアクセス可能なものとし、創造性と問題解決のための完璧な媒体と考えていました。

Iron Softwareでは、新しいものを創造することと、複雑なコンセプトをより理解しやすくすることを楽しんでいます。Resident Developerの一人として、次世代に専門知識を共有するために、学生を教えることにも志願しました。

Darriusにとって、その仕事は価値があり、実際の影響があるため、満足感があります。

準備はできましたか?
バージョン: 2026.5 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか?
サンプルを実行するHTML が PDF に変換されるのを確認します。