C#でのPDF生成でベースURLを使用する方法

How to Use Base URLs & Asset Encoding

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

IronPDFは.NETプロジェクトでPDF文書を生成するための便利なツールです。

このライブラリの一般的な使用例として“HTML to PDF”レンダリングがあります。HTMLがPDF文書をレンダリングするためのデザイン言語として使用されます。 論理的な質問: HTML to PDF変換においてCSSスタイルシートや画像ファイルをどのように使用することができるか

クイックスタート: IronPDFでのベースURLの実装

IronPDFを使って、.NET C#でのHTMLからPDFへの変換時にシームレスなアセットローディングを実現するために、ベースURLを簡単に実装して始めましょう。 この例では、BaseUrlOrPathを設定することで、全てのCSS、JavaScript、および画像が正しく参照され、強力なPDF文書の生成プロセスを簡素化する方法を示しています。 開発者が最小限の設定でPDFレンダリングを強化したい場合に最適です。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<img src='icons/logo.png'>", @"C:\site\assets\").SaveAs("with‑assets.pdf");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

最小ワークフロー (5ステップ)

  1. HTMLからCSSまでの画像サポート用にIronPDFをダウンロード
  2. 外部画像をHTMLで使用するためにBaseUrlOrPathパラメータを指定
  3. Webと出力PDFの両方に正しく表示するためにMVCで正しいsrcを構成
  4. カスタムヘッダーとフッターを使用するためにBaseUrlプロパティを指定
  5. 出力PDFを確認


画像とCSSアセットを含むHTML文字列からPDFをレンダリング

HTML文字列からPDFへの変換作業において、CSSやJavaScriptファイル、画像などのアセットのためにBaseUrlOrPathパラメータを設定することが重要です。 BaseUrlOrPathは、全てのアセットが相対的に読み込まれる基準URLを指定します。

これはリモートアセットを読み込むための'http'で始まるウェブURLか、ディスク上のアセットにアクセスするためのローカルファイルパスにすることができます。 BaseUrlOrPathを正しく設定することで、変換プロセス中にアセットが正しく読み込まれるようになります。

:path=/static-assets/pdf/content-code-examples/how-to/base-urls-baseurl.cs
using IronPdf;

// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

string baseUrl = @"C:\site\assets\";
string html = "<img src='icons/iron.png'>";

// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html, baseUrl);

// Export PDF
pdf.SaveAs("html-with-assets.pdf");
Imports IronPdf

' Instantiate ChromePdfRenderer
Private renderer As New ChromePdfRenderer()

Private baseUrl As String = "C:\site\assets\"
Private html As String = "<img src='icons/iron.png'>"

' Render HTML to PDF
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, baseUrl)

' Export PDF
pdf.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

MVCアプリケーション

MVCアプリケーションでは、画像のファイルパスを指定することは課題となる場合があります。 IronPDFによって画像が見つかり、ウェブサイトに正しく表示されるようにするためには、IronPDFのbaseUrlとHTML文字列のsrc=""属性を正しく設定する必要があります。

以下のファイル階層を設定

  • baseUrlOrPathを@"wwwroot/image"
  • src属性を"../image/Sample.jpg"
wwwroot
└── image
    ├── Sample.jpg
    └── Sample.png

例えば:

:path=/static-assets/pdf/content-code-examples/how-to/base-mvc.cs
// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf("html.Result", @"wwwroot/image");
' Instantiate ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()

' Render HTML to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("html.Result", "wwwroot/image")
$vbLabelText   $csharpLabel
<img src="../image/Sample.jpg"/>
<img src="../image/Sample.png"/>
<img src="../image/Sample.jpg"/>
<img src="../image/Sample.png"/>
HTML

警告

機能しないファイルパス形式

以下の形式はChromeブラウザでの閲覧時には問題なく動作しますが、MVCアプリで使用すると間違ったフォルダーにポインティングします。これらの形式はRenderHtmlAsPdfメソッドでbaseUrlOrPathが提供されていればIronPDFでも動作します:

<img src="image/footer.png"/>  
<img src="./image/footer.png"/>  
<img src="image/footer.png"/>  
<img src="./image/footer.png"/>  
HTML

一方、これらの形式はMVCアプリで問題なく動作しますが、ファイルパスとなるとIronPDFではうまく動作しません:

<img src="/image/footer.png"/>  
<img src="~/image/footer.png"/>
<img src="/image/footer.png"/>  
<img src="~/image/footer.png"/>
HTML

画像やアセットを含むHTMLヘッダーとフッター

新規または既存のPDFにHTMLヘッダーとフッターをレンダリングすると、これらは独立したHTML文書として扱われ、PDF自体からBaseURLを継承しません。

アセットを読み込むことができるベースURLを設定する必要があります:

:path=/static-assets/pdf/content-code-examples/how-to/base-header-footer.cs
using IronPdf;
using System;

// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Add header
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    MaxHeight = 20,
    HtmlFragment = "<img src='logo.png'>",
    BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
Imports IronPdf
Imports System

' Instantiate ChromePdfRenderer
Private renderer As New ChromePdfRenderer()

' Add header
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
	.MaxHeight = 20,
	.HtmlFragment = "<img src='logo.png'>",
	.BaseUrl = (New Uri("C:\assets\images\")).AbsoluteUri
}
$vbLabelText   $csharpLabel

CSS、JS、画像アセットを含むHTMLファイルをPDFに変換

HTMLファイルをPDFにレンダリングする際には、全てのアセットがそのファイルにローカルであると想定されます。

:path=/static-assets/pdf/content-code-examples/how-to/base-html-file.cs
using IronPdf;

// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render HTML file to PDF
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("C:\\Assets\\TestInvoice1.html");

// Export PDF
pdf.SaveAs("Invoice.pdf");
Imports IronPdf

' Instantiate ChromePdfRenderer
Private renderer As New ChromePdfRenderer()

' Render HTML file to PDF
Private pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("C:\Assets\TestInvoice1.html")

' Export PDF
pdf.SaveAs("Invoice.pdf")
$vbLabelText   $csharpLabel

上記の例では、全てのJS、CSS、画像ファイルはディスク上のC:\Assetsフォルダから読み込まれます。HTMLファイルが配置されているのと同じディレクトリです。

便利のために、ChromePdfRenderOptionsのCustomCssUrlで追加のスタイルシートを.NET PDFレンダリングに使用するスタイルシートとして指定することができます。例えば:

:path=/static-assets/pdf/content-code-examples/how-to/base-html-file-baseurl.cs
using IronPdf;

// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Set additional CSS url
renderer.RenderingOptions.CustomCssUrl = "./style.css";

// Render HTML file to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Export PDF
pdf.SaveAs("tryCss.pdf");
Imports IronPdf

' Instantiate ChromePdfRenderer
Private renderer As New ChromePdfRenderer()

' Set additional CSS url
renderer.RenderingOptions.CustomCssUrl = "./style.css"

' Render HTML file to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")

' Export PDF
pdf.SaveAs("tryCss.pdf")
$vbLabelText   $csharpLabel

ご注意現在、 ChromePdfRenderOptions.CustomCssUrlプロパティは、HTML文字列からPDF文書にレンダリングする際に限りRenderHtmlAsPdfメソッドで機能します。

画像アセットのエンコーディング

画像アセットはHTMLファイルまたは文字列に直接エンコードすることができ、これにより画像が見つからないというフラストレーションを避けるのに役立ちます。 これを行うには、base64の使用を利用することができます:

  1. まず、画像ファイルを読み込むかネットワーク要求を通じて画像のバイナリデータを取得します。
  2. Microsoft .NETの Convert.ToBase64Stringメソッドを使用してバイナリデータをbase64に変換します。
  3. base64データの前に "data:image/svg+xml;base64," を使用し、HTML内で画像タグを構築します。 base64データの前に画像タイプが指定されていることに気付いたかもしれません。 MDN Web Docsの画像タイプとフォーマットを訪れて、画像フォーマットタイプについての詳細を得ることができます。
:path=/static-assets/pdf/content-code-examples/how-to/add-images-to-pdfs-base64-image.cs
using IronPdf;
using System;
using System.IO;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Import image file binary data
byte[] binaryData = File.ReadAllBytes("ironpdf-logo-text-dotnet.svg");

// Convert the binary data to base 64
string imgDataUri = Convert.ToBase64String(binaryData);

// Embed in HTML
string html = $"<img src='data:image/svg+xml;base64,{imgDataUri}'>";

// Convert HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);

// Export the PDF
pdf.SaveAs("embedImageBase64.pdf");
Imports IronPdf
Imports System
Imports System.IO

Private renderer As New ChromePdfRenderer()

' Import image file binary data
Private binaryData() As Byte = File.ReadAllBytes("ironpdf-logo-text-dotnet.svg")

' Convert the binary data to base 64
Private imgDataUri As String = Convert.ToBase64String(binaryData)

' Embed in HTML
Private html As String = $"<img src='data:image/svg+xml;base64,{imgDataUri}'>"

' Convert HTML to PDF
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

' Export the PDF
pdf.SaveAs("embedImageBase64.pdf")
$vbLabelText   $csharpLabel

よくある質問

HTMLからPDFへの変換において基本URLを使用することの重要性は?

基本URLは、CSSスタイルシート、JavaScriptファイル、画像などのすべての関連アセットが正しくロードされることを保証するため、HTMLからPDFへの変換において重要です。IronPDFでは、BaseUrlOrPathパラメータをウェブURLまたはローカルファイルパスに設定することで、このプロセスを容易にします。

PDF生成のためにMVCアプリケーションでアセットのロードをどのように処理しますか?

IronPDFを使用するMVCアプリケーションでは、BaseUrlOrPathパラメータをアセットを含むディレクトリに設定することでアセットロードを処理できます。これにより、HTMLはこの基本パスに対するCSSおよび画像パスを正しく参照します。

アセットエンコーディングとは何ですか、そしてそれがPDF生成でなぜ使用されるのですか?

アセットエンコーディングには、画像データをbase64文字列に変換してHTML内に埋め込むことが含まれます。この技術はIronPDFで使用され、特にアセットがURLまたはファイルパスから直接アクセスできない場合に、PDFレンダリングプロセス中に画像が欠落しないことを保証します。

.NETでのPDFレンダリング中に追加のスタイルシートをどのように含められますか?

IronPDFのChromePdfRenderOptionsを使用して、.NETでのPDFレンダリング中に追加のスタイルシートを含めることができます。CustomCssUrlプロパティを設定することにより、レンダリングプロセスで使用される外部スタイルシートを指定できます。

PDFで画像が表示されない場合の一般的なトラブルシューティングの手順は何ですか?

PDFで画像が表示されない場合の一般的なトラブルシューティングの手順には、HTML内のBaseUrlOrPathとsrc属性の正確性を確認することが含まれます。IronPDFを使用する際にこれらのパスが正確であることを確認すると、画像不足のほとんどの問題を解決します。

HTMLヘッダーとフッターをどのようにPDFに画像と一緒にレンダリングしますか?

HTMLヘッダーとフッターは、それぞれ別のBaseURLを設定することでPDFに画像と一緒にレンダリングできます。IronPDFを使用する場合、ヘッダーとフッターは独立したHTMLドキュメントとして扱われるため、アセットのロードのためにその基本パスが正しく設定されていることが重要です。

アセットを持つローカルのHTMLファイルをPDFに変換できますか?

はい、IronPDFを使用してアセットを持つローカルのHTMLファイルをPDFに変換できます。BaseUrlOrPathがHTMLファイルのディレクトリに設定されていることを確認することで、IronPDFはCSSや画像などのすべての関連アセットを正しくロードします。

アセットの読み込みにベース URL を使用する場合、IronPDF は .NET 10 と完全に互換性がありますか?

はい。IronPDFは.NET 10と完全に互換性を持つように設計されています。HTMLからPDFへの変換時にアセットを読み込む際に、BaseUrlOrPath(ローカルファイルパスまたはWeb URL)を使用できます。追加のカスタムワークアラウンドは必要ありません。以前のバージョンと同様に、IronPDFでは.NET 10プロジェクトでベースURLを安心して使用できます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はいいですか?
Nuget ダウンロード 16,154,058 | バージョン: 2025.11 ただ今リリースされました