.NET CoreでPDFファイルを生成する方法

C# と IronPDFを使用して.NET CoreでHTMLをPDFに変換する

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

HTMLから直接高忠実度のPDFを生成することは、現代 for .NETアプリケーションにおける日常的な要件です。レポート、請求書、チケットなど、ウェブUIに合ったピクセルパーフェクトな出力が必要です。 IronPDFは、HTML、Razorビュー、フルウェブサイトを標準準拠のPDFドキュメントにレンダリングするための単一のC# APIを公開することで、このワークフローを簡素化します。 このガイドの終わりまでに、開発者はASP.NET CoreプロジェクトでURL、生のHTML、またはMVCビューを変換し、同じコードをWindows、Linux、Docker、またはサーバーレス環境にデプロイできるようになります。

ヒントレイアウトの問題に対処するために、IronPDFはCSS、JavaScript、およびメディアクエリの奇妙さをレンダリング前に診断するためのヘッドレスChromeデバッガーを提供します。 洗練されたピクセルパーフェクトHTML-to-PDFガイドをご覧ください。

クイックスタート: .NET Coreで HTML から PDF を作成する

IronPDFライブラリを使用して、.NET CoreでHTMLをPDFに簡単に変換します。 このガイドは、HTMLコンテンツを高品質のPDFに最小限のコードでレンダリングする簡単な例を提供します。 アプリケーションにPDF作成を容易に統合することを求める開発者に最適です。

  1. IronPDF をNuGetパッケージマネージャでインストール

    PM > Install-Package IronPdf
  2. このコード スニペットをコピーして実行します。

    var pdf = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello World</h1>");
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronPDF を使い始めましょう無料トライアル

    arrow pointer

クイックスタートチェックリスト

  1. インストールInstall-Package IronPdf
  2. URLをレンダリングChromePdfRenderer.RenderUrlAsPdf()
  3. 生のHTMLをレンダリングChromePdfRenderer.RenderHtmlAsPdf()
  4. RazorビューをエクスポートChromePdfRenderer.RenderHtmlAsPdfAsync()
  5. 出力を微調整ChromePdfRenderer.RenderingOptionsを活用

このチュートリアルでカバーする内容

  • URL、HTML文字列、およびRazorビューの変換
  • 紙、マージン、およびメディアタイプの構成
  • クロスプラットフォーム展開(Windows、Linux、Docker)
  • 後処理:マージ、透かし、パスワード保護、そしてデジタル署名PDF
  • エンドトゥーエンドのサンプル: チケット予約MVCアプリ

PDFライブラリを.NET Coreにインストールするにはどうすればいいですか?

.NET 8プロジェクトでは、ライブラリをインストールするのは1行だけで、.NET 9 プレビューや今後 for .NET 10リリースとも前方互換性を維持します。 NuGetのパッケージマネージャコンソールを使用し、パッケージマネージャはWindows、Linux、Docker、およびサーバーレスターゲットに自動的にすべての依存関係を解決します。

PM> Install-Package IronPdf             # .NET 8 LTS and higher
PM> Install-Package IronPdf             # .NET 8 LTS and higher
SHELL

ご注意CLIが必要ですか? 同じコマンドがプロジェクトフォルダ内のdotnet add package IronPdfで機能します。

インストールが完了したら、任意の公開URLを変換することで、すべてが正常に接続されていることを確認します。

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-3.cs
public class ClientModel
{
    [Required]
    public string Name { get; set; }
    [Required]
    public string Phone { get; set; }
    [Required]
    public string Email { get; set; }
}
Public Class ClientModel
	<Required>
	Public Property Name() As String
	<Required>
	Public Property Phone() As String
	<Required>
	Public Property Email() As String
End Class
$vbLabelText   $csharpLabel

仕組み

  • ChromePdfRenderer はサンドボックス化されたChromiumインスタンスをバックグラウンドで起動し、別途Chromeのインストールは不要です。
  • RenderUrlAsPdf は完全にレンダリングされたDOMをキャプチャして、JavaScriptで駆動されるコンテンツ、CSSメディアクエリ、およびフォントを含みます。
  • 結果として生成されるPdfDocument は、後ほどこのチュートリアルで紹介する能力で、出力のマージ、パスワード保護、またはデジタル署名が可能です。

デプロイの微妙な問題についての詳細は(Azure App Service、AWS Lambda、オンプレミスLinux)、専用のインストールガイド および 高度なNuGet設定ページ をご覧ください。 DockerおよびK8sクラスター用の内部CI/CDのヒントは、Dockerデプロイのベストプラクティスでカバーされています。


.NET CoreサービスがライブのウェブサイトURLをPDFに変換するにはどうすればいいですか?

RenderUrlAsPdf への単一の呼び出しは十分です:公開URLを渡すだけで、IronPDFが完全にレンダリングされた、標準に準拠したPDFを返します。 以下のコードは.NET 8 LTSにターゲットを絞り、.NET 9 プレビューや2025年のリリース予定 for .NET 10にも変更なくコンパイルされます。

ステップバイステップの例

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-4.cs
public class ClientServices
{
    private static ClientModel _clientModel;
    public static void AddClient(ClientModel clientModel)
    {
        _clientModel = clientModel;
    }
    public static ClientModel GetClient()
    {
        return _clientModel;
    }
}
Public Class ClientServices
	Private Shared _clientModel As ClientModel
	Public Shared Sub AddClient(ByVal clientModel As ClientModel)
		_clientModel = clientModel
	End Sub
	Public Shared Function GetClient() As ClientModel
		Return _clientModel
	End Function
End Class
$vbLabelText   $csharpLabel

なぜこれが動作するのか

  • ChromePdfRenderer はサンドボックス化されたChromiumインスタンスを起動し、システムのChrome依存を避けて、Dockerイメージをスリムに保ちます。
  • RenderUrlAsPdf はDOMとJavaScriptが完了するのを待ってからスナップショットを撮るので、シングルページアプリが正しくレンダリングされます。
  • CssMediaTypePrint に設定することで、エンジンに印刷特有のルールを使用して、ブラウザの 印刷 → PDFとして保存 出力を一致させることを指示します。
  • 結果として生成されるPdfDocument は暗号化されたり、デジタル署名が行われたり、マージされたり、ラスタライズできます—これらの能力は後のセクションで説明されています。

ヒントピクセルパーフェクトデバッグ: renderer.LoggingOptions.DebugMode = true を有効にして、レンダリング中にライブのDevToolsを検査するためにヘッドレスChromeデバッグガイドを参照してください。

関連リソース

-APIリファレンス– ChromePdfRenderer.RenderUrlAsPdf -APIリファレンス– PdfDocument.SaveAs


生のHTMLを.NET CoreでPDFに変換するにはどうすればいいですか?

HTML文字列またはRazorビューのレンダリングされたマークアップをChromePdfRenderer.RenderHtmlAsPdf に渡すと、瞬時に標準に準拠したPDFが生成されます。 このメソッドはIronPDFの組込みChromiumエンジンを起動するため、外部ブラウザやWebViewの依存関係は必要ありません。 以下に示す同じコードは、今日 for .NET 8 LTSでコンパイルされ、2025年11月のリリース予定 for .NET 10と前方互換性を保ち続けます。

例 — HTMLフラグメントからPDFを生成する

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-5.cs
@model IronPdfMVCHelloWorld.Models.ClientModel
@{
  ViewBag.Title = "Book Ticket";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
  <div class="form-horizontal">
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
      @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      @Html.LabelFor(model => model.Phone, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.EditorFor(model => model.Phone, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Phone, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      <div class="col-md-10 pull-right">
        <button type="submit" value="Save" class="btn btn-sm">
          <i class="fa fa-plus"></i>
          <span>
            Save
          </span>
        </button>
      </div>
    </div>
  </div>
}
model ReadOnly Property () As IronPdfMVCHelloWorld.Models.ClientModel
  ViewBag.Title = "Book Ticket"
End Property
'INSTANT VB TODO TASK: The following line could not be converted:
(Of h2) Index</h2> [using](Html.BeginForm())
If True Then
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'  <div class="form-horizontal"> @Html.ValidationSummary(True, "", New { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Name, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Name, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Name, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Phone, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Phone, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Phone, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Email, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Email, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Email, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> <div class="col-md-10 pull-right"> <button type="submit" value="Save" class="btn btn-sm"> <i class="fa fa-plus"></i> <span> Save </span> </button> </div> </div> </div> }
$vbLabelText   $csharpLabel

コードが示すこと

  • 埋め込みChromium — IronPDFはChromiumエンジンをバンドルしており、モダンなブラウザとHTML5、CSS3、JavaScriptの互換性を保証します。
  • シングル依存関係軽量NuGetインストールは、Windows、Linux、Docker、Azure / AWSをカバーし、追加のシステムライブラリが不要です。
  • レンダリングオプションPaperSize, CssMediaType, RenderDelay はブラウザの印刷設定を反映しているので、PDFが画面レイアウトと一致します。
  • 将来に対応 — APIの対象は.NET 8、.NET 9 STS、および今後登場する.NET 10で同様であるため、長期的なメンテナンスは最小限です
  • ポストプロセッシングフックPdfDocument がマージ、パスワード保護、電子署名のヘルパーを公開します—それぞれ後のガイドで説明します。

さらに読む: ステップバイステップのHTML文字列からPDFへのチュートリアルと完全なChromePdfRenderer APIドキュメントを参照してください。


ASP .NET Core MVC ビューを PDF にエクスポートするにはどうすればいいですか?

IronPDFは、.cshtml と同様に完全に処理されたRazorビューをブラウザが行うのと同じ方法でレンダリングし、PdfDocument として結果をストリームします。 以下のワークフローはコントローラーのロジックをクリーンに保ち、ブラウザプラグインを必要とせず、.NET 8 LTS、.NET 9 プレビュー、2025 年 11 月の予定された .NET 10 リリースで機能します。

エンドツーエンド コントローラーの例

// TicketsController.cs — .NET 8 LTS / MVC
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using YourApp.Models;           // TicketViewModel

public class TicketsController : Controller
{
    private readonly ChromePdfRenderer _renderer;

    public TicketsController()
    {
        _renderer = new ChromePdfRenderer
        {
            RenderingOptions =
            {
                PaperSize        = PdfPaperSize.A5,            // Compact ticket size
                PaperOrientation = PdfPdfOrientation.Portrait,
                FitToPaperWidth  = true,
                CssMediaType     = PdfCssMediaType.Print,
                Margins = new PdfMargins(5, 10, 5, 10)         // mm
            }
        };
    }

    // GET /Tickets/Print/42
    public async Task<IActionResult> Print(int id)
    {
        TicketViewModel vm = await _service.GetTicketAsync(id);

        // 1. Render the Razor view to an HTML string
        string html  = await RazorTemplateEngine.RenderViewAsync(
                           HttpContext, "~/Views/Tickets/Print.cshtml", vm);

        // 2. Convert HTML → PDF
        using PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);

        // 3. Stream back as a file
        return File(pdf.BinaryData, "application/pdf",
                    $"ticket-{id}.pdf");
    }
}
// TicketsController.cs — .NET 8 LTS / MVC
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using YourApp.Models;           // TicketViewModel

public class TicketsController : Controller
{
    private readonly ChromePdfRenderer _renderer;

    public TicketsController()
    {
        _renderer = new ChromePdfRenderer
        {
            RenderingOptions =
            {
                PaperSize        = PdfPaperSize.A5,            // Compact ticket size
                PaperOrientation = PdfPdfOrientation.Portrait,
                FitToPaperWidth  = true,
                CssMediaType     = PdfCssMediaType.Print,
                Margins = new PdfMargins(5, 10, 5, 10)         // mm
            }
        };
    }

    // GET /Tickets/Print/42
    public async Task<IActionResult> Print(int id)
    {
        TicketViewModel vm = await _service.GetTicketAsync(id);

        // 1. Render the Razor view to an HTML string
        string html  = await RazorTemplateEngine.RenderViewAsync(
                           HttpContext, "~/Views/Tickets/Print.cshtml", vm);

        // 2. Convert HTML → PDF
        using PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);

        // 3. Stream back as a file
        return File(pdf.BinaryData, "application/pdf",
                    $"ticket-{id}.pdf");
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports YourApp.Models ' TicketViewModel

Public Class TicketsController
    Inherits Controller

    Private ReadOnly _renderer As ChromePdfRenderer

    Public Sub New()
        _renderer = New ChromePdfRenderer With {
            .RenderingOptions = New PdfRenderingOptions With {
                .PaperSize = PdfPaperSize.A5, ' Compact ticket size
                .PaperOrientation = PdfPdfOrientation.Portrait,
                .FitToPaperWidth = True,
                .CssMediaType = PdfCssMediaType.Print,
                .Margins = New PdfMargins(5, 10, 5, 10) ' mm
            }
        }
    End Sub

    ' GET /Tickets/Print/42
    Public Async Function Print(id As Integer) As Task(Of IActionResult)
        Dim vm As TicketViewModel = Await _service.GetTicketAsync(id)

        ' 1. Render the Razor view to an HTML string
        Dim html As String = Await RazorTemplateEngine.RenderViewAsync(
            HttpContext, "~/Views/Tickets/Print.cshtml", vm)

        ' 2. Convert HTML → PDF
        Using pdf As PdfDocument = _renderer.RenderHtmlAsPdf(html)
            ' 3. Stream back as a file
            Return File(pdf.BinaryData, "application/pdf", $"ticket-{id}.pdf")
        End Using
    End Function
End Class
$vbLabelText   $csharpLabel

このコードが示すこと

  • 一時ファイルを使用しない — Razorビューはメモリ内でレンダリングされ、その後直接RenderHtmlAsPdfに渡され、ディスクI/Oやtempフォルダのレース条件を回避します。
  • チケットサイズの出力PaperSize = A5 と狭いマージンは自宅での印刷用チケットをコンパクトに保ちます。
  • 一貫した印刷スタイルCssMediaType = Print はブラウザが使用する@media print CSSルールを適用します。
  • バイナリストリーミングpdf.BinaryData はファイルシステムに触れずにドキュメントをストリームします; - 再利用可能なレンダラー -- ChromePdfRendererはコントローラごとに一度インスタンス化され、再利用され、プロセス生成オーバーヘッドを最小限に抑えます。
  • 再利用可能なレンダラーChromePdfRenderer はコントローラーごとに一度だけインスタンス化され、その後再利用され、プロセスの発生オーバーヘッドを最小限に抑えます。

PaperSize, PaperOrientation, FitToPaperWidth です。

マージンヘッダーフッターウォーターマーク

Icon Quote related to このコードが示すこと

私のお気に入りのこの種のライブラリはIronPDFです。PDFファイルの迅速で効率的な操作が可能です。また、PDF/A形式へのエクスポートやPDF文書へのデジタル署名といった多くの貴重な機能も備えています。

Milan Jovanovic related to このコードが示すこと

Milan Jovanovic

Microsoft MVP

ケーススタディを見る
Icon Quote related to このコードが示すこと

IronOCRのおかげで私たちは年間$40,000を手作業の処理から節約し、生産性を向上させ、高影響のタスクにリソースを充てることができます。非常にお勧めします。

Brent Matzelle related to このコードが示すこと

Brent Matzelle

最高技術責任者, OPYN

ケーススタディを見る
Icon Quote related to このコードが示すこと

IronSuiteは私たちの業務において重要な役割を果たしています。これらは、フロアプランの作成や在庫管理の改善を含め、ビジネス全体の効率を向上させるツールです。

David Jones related to このコードが示すこと

David Jones

リードソフトウェアエンジニア、Agorus Build

ケーススタディを見る

レンダリング前に用紙サイズ、余白、ヘッダー、透かし、セキュリティを微調整するにはどうすればいいですか?


IronPDFは、用紙寸法、方向、ヘッダー&フッター、JavaScriptタイミング、透かしのすべての側面を制御する1つのChromePdfRenderOptionsオブジェクトを公開しています。暗号化、デジタル署名—すべて追加のブラウザプラグインなしで。

IronPDFは、すべての出力側面を制御する単一のChromePdfRenderOptionsオブジェクトを提供し、用紙のサイズ、向き、ヘッダー&フッター、JavaScriptのタイミング、ウォーターマーク、暗号化、電子署名を追加のブラウザプラグインなしで管理できます。

コードサンプル - 一度に複数のオプションを適用

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-7.cs
[HttpPost]
public ActionResult Index(ClientModel model)
{
    if (ModelState.IsValid)
    {
        ClientServices.AddClient(model);
        return RedirectToAction("TicketView");
    }
  return View(model);
}
<HttpPost>
Public Function Index(ByVal model As ClientModel) As ActionResult
	If ModelState.IsValid Then
		ClientServices.AddClient(model)
		Return RedirectToAction("TicketView")
	End If
  Return View(model)
End Function
$vbLabelText   $csharpLabel

これらのオプションが重要な理由

  • CssMediaType はブラウザの印刷ダイアログを反映し、画面レイアウトとPDFがWindows、Linux、Dockerで一貫しています。
  • HTMLヘッダーおよびフッターは、Razorトークン、CSS、JavaScriptに対応しており、動的なページ番号やブランディングに便利です。
  • HtmlStampは、完全なHTML + CSS制御でブランド化されたウォーターマークの作成を単一行で可能にします。
  • デジタル署名 — コード内で暗号学的シールを直接追加し、法的真正性と改ざんされた証拠を維持します。
  • デジタル署名 はコード内に暗号的シールを直接追加し、法的な真正性と改ざんの証拠を維持します。
  • ExtractAllTextExtractAllImages のような抽出ヘルパーは、分析が必要な場合にプロセスを逆に実行します。

クイックリファレンス - 人気の設定

PaperSizePaperOrientationMarginsCssMediaTypeRenderDelay

HtmlHeaderHtmlFooter、動的Razorプレースホルダ、ページ番号トークン

ウォーターマーク, Htmlスタンプ, 不透明度, 位置合わせ

SecurityOptionsSignAndStamp、所有者/ユーザーパスワード、証明書の封印

次のタスク: 複数のPDFをマージし、テキストと画像を抽出し、Dockerまたはサーバーレスにデプロイします。 ## PDF生成コードをLinuxおよびWindowsのDockerにどのようにデプロイできますか?


IronPDFは単一の自己完結型NuGetパッケージとして出荷され、ASP.NET Core(またはコンソール)アプリをWindowsとLinuxの両方でコンテナ化するのは簡単です。

IronPdf は単一の自己完結型NuGetパッケージとして出荷されているので、ASP.NET Core(またはコンソール)アプリをコンテナ化するのがWindowsとLinuxの両方で簡単です。 鍵のポイントは、公開されたバイナリをスリムなランタイムイメージにコピーし、Linux上でIronPDFが必要とする2つのネイティブライブラリ(libatk1.0-0)を追加することです。

ご注意なぜマルチステージ? SDKイメージ(ステージ1)はプロジェクトをコンパイルします;

ご注意なぜマルチステージなのか? SDKイメージ(ステージ1)がプロジェクトをコンパイルします。

####### ---------- stage 1 ----------
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MyPdfApp.csproj", "."]
RUN dotnet restore

COPY . .
RUN dotnet publish -c Release -o /app/publish

####### ---------- stage 2 ----------
FROM mcr.microsoft.com/dotnet/aspnet:8.0-jammy
######## Install two native libs required by Chromium
RUN apt-get update && \
    apt-get install -y --no-install-recommends libnss3 libatk1.0-0 && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyPdfApp.dll"]

ご注意Windowsコンテナ? 第二段階をmcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022に置き換えます—Chromium DLLがバンドルされているので追加のパッケージは不要です。

  • APIアクションは内部でChromePdfRenderer.RenderUrlAsPdfを呼び出し、ちょうどSection2のようにします。
docker build -t pdf-demo .
docker run --rm -p 8080:80 pdf-demo
######### ↳ Navigate to http://localhost:8080/api/pdf?url=https://example.com
docker build -t pdf-demo .
docker run --rm -p 8080:80 pdf-demo
######### ↳ Navigate to http://localhost:8080/api/pdf?url=https://example.com
SHELL
  • APIアクションは内部的にセクション2で行われたのと同じようにChromePdfRenderer.RenderUrlAsPdfを呼び出します。
  • IronPDF はコンテナ内でサンドボックス化された Chromium プロセスを起動します - ヘッドレスでレンダリングするため、X サーバーは不要です。
  • 大きなレンダリングでもメモリフットプリントは 200 MB 以下に保たれます。

ヒントトラブルシューティングのヒント: コンテナログに"libnss3.so not found"エラーが表示されたら、libatk1.0-0の両方が存在することを確認してください。 ### 内部リソース


.NET Core で既存の PDF を開いたり、マージしたり、透かしを入れたり、コンテンツを抽出するにはどうすればよいですか?

IronPDFは、IronPDF、Adobe® Acrobat、または他社製品ツールで生成されたかどうかにかかわらず、すべてのPDFを第一級PdfDocumentオブジェクトとして扱い、これを開いて編集し、セキュリティを設定し、品質を損なわずに再度保存できます。 同じAPIサーフェスは、現在.NET 8 LTSで動作し、.NET 9プレビューと近日リリース予定 for .NET 10で変更なくコンパイルできます。

統一サンプル — 開く → マージ → 透かし → 抽出

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-10.cs
[HttpPost]
public ActionResult TicketView(TicketModel model)
{
    IronPdf.Installation.TempFolderPath = $@"{Directory.GetParent}/irontemp/";
    IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
    var html = this.RenderViewAsync("_TicketPdf", model);
    var renderer = new IronPdf.ChromePdfRenderer();
    using var pdf = renderer.RenderHtmlAsPdf(html.Result, @"wwwroot/css");
    return File(pdf.Stream.ToArray(), "application/pdf");
}
<HttpPost>
Public Function TicketView(ByVal model As TicketModel) As ActionResult
	IronPdf.Installation.TempFolderPath = $"{AddressOf Directory.GetParent}/irontemp/"
	IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
	Dim html = Me.RenderViewAsync("_TicketPdf", model)
	Dim renderer = New IronPdf.ChromePdfRenderer()
	Dim pdf = renderer.RenderHtmlAsPdf(html.Result, "wwwroot/css")
	Return File(pdf.Stream.ToArray(), "application/pdf")
End Function
$vbLabelText   $csharpLabel

これが重要な理由

  • 開く&マージPdfDocument.FromFile は暗号化ファイルを含む標準準拠のPDFを読み込み、PdfDocument.Merge は単一の呼び出しで任意の数のドキュメントを連結します。
  • ウォーターマークHtmlStamp) は完全にスタイル付けされたHTML/CSSオーバーレイを埋め込み—ロゴ、QRコード、または斜めテキスト—選択されたページにラスタライズなしで配置します。
  • コンテンツ抽出ExtractAllTextExtractAllImages が生のUTF-8テキストまたはバイナリイメージストリームを引き出し、下流のアーカイブまたはAIパイプライン用に使用します。
  • 電子署名対応 – 同じSignAndStampで封印され、RFC 3161準拠のハッシュを生成しISO 32000-2 デジタル署名要件に一致します。
  • オープンスタンダード準拠 – IronPDFは元のPDF構造(フォント、レイヤー、XMPメタデータ)を保持するため、出力はAdobe® Readerやその他のISO 32000-1ビューワーと互換性があります。
  • 将来に備える – このAPIは相互運用性アセンブリやWin32 GDI呼び出しを避けるため、コードはWindows、Linux、Docker、および今後 for .NET 10サーバーレスSKUでも変更なしで実行されます。

ページを分割、回転、または削除する必要がありますか? 詳細な操作については、ページレベルの編集チュートリアルをご覧ください。


.NET CoreでPDFを暗号化およびデジタル署名するにはどうすればよいですか?

IronPDFはドキュメントを2ステップで保護します: AESベースの暗号化(ユーザー/所有者パスワード + グラニュラー権限)および X.509デジタル署名 を使用して、ファイルを暗号ハッシュで封印します。 両方のAPIは同じPdfDocumentオブジェクトに住んでおり、ワークフローは今日 for .NET 8 LTSと将来 for .NET 9プレビューおよび.NET 10リリースでも変わらずコンパイルされます。

例 — 256ビットAESを適用し、印刷権をロックし、目に見える署名を追加する

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-11.cs
using System.IO;
using System.Threading.Tasks;

public static class ControllerExtensions
{
    public static async Task<string> RenderViewAsync<TModel>(this Controller controller, string viewName, TModel model, bool partial = false)
    {
        if (string.IsNullOrEmpty(viewName))
        {
            viewName = controller.ControllerContext.ActionDescriptor.ActionName;
        }
        controller.ViewData.Model = model;
        using (var writer = new StringWriter())
        {
            IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
            ViewEngineResult viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial);
            if (viewResult.Success == false)
            {
                return $"A view with the name {viewName} could not be found";
            }
            ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, new HtmlHelperOptions());
            await viewResult.View.RenderAsync(viewContext);
            return writer.GetStringBuilder().ToString();
        }
    }
}
Imports System.IO
Imports System.Threading.Tasks

Public Module ControllerExtensions
	<System.Runtime.CompilerServices.Extension> _
	Public Async Function RenderViewAsync(Of TModel)(ByVal controller As Controller, ByVal viewName As String, ByVal model As TModel, Optional ByVal As Boolean = False) As Task(Of String)
		If String.IsNullOrEmpty(viewName) Then
			viewName = controller.ControllerContext.ActionDescriptor.ActionName
		End If
		controller.ViewData.Model = model
		Using writer = New StringWriter()
			Dim viewEngine As IViewEngine = TryCast(controller.HttpContext.RequestServices.GetService(GetType(ICompositeViewEngine)), ICompositeViewEngine)
			Dim viewResult As ViewEngineResult = viewEngine.FindView(controller.ControllerContext, viewName, Not partial)
			If viewResult.Success = False Then
				Return $"A view with the name {viewName} could not be found"
			End If
			Dim viewContext As New ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, New HtmlHelperOptions())
			Await viewResult.View.RenderAsync(viewContext)
			Return writer.GetStringBuilder().ToString()
		End Using
	End Function
End Module
$vbLabelText   $csharpLabel

舞台裏

  • AES-256暗号化 — IronPDFは、権限のない開封、印刷、コピー&ペーストを防ぐNIST承認のAESキーでペイロードをラップします。
  • 権限の細分化AllowUserFormDataのようなプロパティはアクションごとの権利を切り替えます; 制限を有効にするには、所有者パスワードが必要です。
  • 電子署名SignAndStamp はRFC 3161タイムスタンプと証明書チェーンを埋め込み、Adobe® Acrobatやその他のISO 32000-2ビューアによって認識される改ざん防止ハッシュを生成します。
  • ワンストップAPI — 暗号化と署名の両方が同じPdfDocumentインスタンスを変更し、複数のファイルにわたる処理を回避し、内部フォント、レイヤー、およびメタデータを保持します。

ヒントトラブルシューティングのヒント: Adobe Readerが"無効な署名"を報告する場合、PFXに信頼できるルート証明書が含まれ、location文字列がASCIIクリーンであることを確認してください。

コアセキュリティ設定

PdfSecuritySettingsOwnerPassword, UserPassword, EncryptionAlgorithm, AllowUserPrinting.

PdfDocument.SignAndStamp - PFX パス、権限、場所、理由、タイムスタンプ

深堀りのための内部リソース


HTMLからPDFへのパフォーマンスを最適化し、スケールさせるにはどうすればよいですか?

IronPDFのChromiumエンジンは、すでに1秒未満の通常のハードウェア上のほとんどのページをレンダリングしますが、バッチレンダリングを有効にし、マルチスレッドを有効にし、ヘッドレスChromeオーバーヘッドを削減することでスループットを倍増させることができます。 - ChromePdfRendererスレッドセーフです。単一のインスタンスがデッドロックせずに数十の同時タスクをサービスできます。

  • Parallel.ForEachはすべてのCPUコアを最大限に活用します。典型的なサーバーでは単一スレッドループと比較して4~6倍のスループットが得られます。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-12.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Set rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;

renderer.RenderHtmlFileAsPdf(@"testFile.html").SaveAs("GeneratedFile.pdf");
Imports IronPdf

License.LicenseKey = "YourLicenseKey"
Dim renderer As New ChromePdfRenderer()

' Set rendering options
renderer.RenderingOptions.PaperSize = Rendering.PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = Rendering.PdfPaperOrientation.Portrait

renderer.RenderHtmlFileAsPdf("testFile.html").SaveAs("GeneratedFile.pdf")
$vbLabelText   $csharpLabel
  • ChromePdfRendererスレッドセーフです; 単一のインスタンスは、デッドロックなしで数十の同時タスクに対応できます。
  • Parallel.ForEachがすべてのCPUコアを飽和させます; 通常のサーバーでは、シングルスレッドループと比較して4~6倍のスループット向上が見られます。 いずれかのライブラリが不足していると、Dockerログに"libnss3.so not found"エラーとして現れます。

2. ヘッドレスChromeの起動コストを削減する

IronPDF は独自の Chromium ビルドを出荷しますが、レンダリングごとに小さな起動税が発生します。 プーリングが役立ち、 Linux コンテナーには 2 つのネイティブ ライブラリが含まれている必要があります。

RUN apt-get update && \
    apt-get install -y --no-install-recommends libnss3 libatk1.0-0

いずれかのライブラリが欠けていると、Dockerログにlibnss3.so not foundエラーが表示されます。

推奨Chromeフラグ(IronPDFによって自動的に適用)には、コンテナ内のメモリおよびルートユーザー問題を軽減するために--no-sandboxが含まれます。

3. RenderDelay またはWaitForで遅延JavaScriptを待つ

DOMContentLoadedの後にカウンターをアニメートしたりデータを取得するページには短い遅延が必要な場合があります:

renderer.RenderingOptions.RenderDelay = 200;        // ms
// OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
renderer.RenderingOptions.RenderDelay = 200;        // ms
// OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
renderer.RenderingOptions.RenderDelay = 200 ' ms
' OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
$vbLabelText   $csharpLabel

カスタムプロミスやDOMポーリングのための専用のWaitForチュートリアルを参照してください。

4. 1つのリクエストのためのデバッグログを有効にする

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-15.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("1.pdf");
PdfDocument pdf2 = PdfDocument.FromFile("2.pdf");
pdf.AppendPdf(pdf2);
pdf.SaveAs("appendedFile.pdf");
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim pdf As PdfDocument = PdfDocument.FromFile("1.pdf")
Dim pdf2 As PdfDocument = PdfDocument.FromFile("2.pdf")
pdf.AppendPdf(pdf2)
pdf.SaveAs("appendedFile.pdf")
$vbLabelText   $csharpLabel

ライブDevToolsトレースは、欠けているフォント、404画像、およびコードの再コンパイルを必要としないタイミングイベントを明らかにします。

5. 再レンダリングの代わりにテンプレートPDFを再利用する

請求書の実行については、プレースホルダーとして[[name]]を使用するテンプレートPDF作成し、複雑なHTMLを再構築する代わりにテキストの置換を行います。 それは10倍速く、メモリ的にも軽いです。

クイックチューニングチェックリスト

Parallel.ForEachasync/await、単一のChromePdfRendererを再利用します。

aspnet:8.0-jammy; install libnss3 + libatk1.0-0; flags --no-sandbox, --disable-gpu を使用してください。

RenderDelayWaitFor()、DevTools のタイムラインを記録し、SPA のハイドレーションを遅くします。

さらなる読み物


無料トライアルをダウンロードし、ライセンスを選び、専門のサポートを受けられる場所はどこですか?

30日間のトライアルキーは、Start Free Trialフォームから即座に発行され、透かしなしでHTML-to-PDF、デジタル署名、暗号化を含むすべての機能を解除します。

ライブラリを評価した後、永久的なデベロッパーデプロイ、またはエンタープライズライセンスを選択してください; 各プランは無料の小規模アップデートと開発/ステージング/本番使用権利、および30日間の返金保証を含みます。 鍵を適用するのはコードの一行で(IronPdf.License.LicenseKey = "YOUR-KEY";)、CI/CDパイプラインでの自動化が可能です。

包括的なドキュメント—クイックスタートガイドAPIリファレンス、およびチュートリアルビデオ—はドキュメントポータルにあり、すべて for .NETリリースに合わせて更新されます。

エンジニアリングの質問はシカゴに拠点を置くサポートチームから、ライブチャットメール、または電話で1営業日以内に応答されます。

パフォーマンスチューニングと配置に関するFAQは、パフォーマンスアシスタンスセンターに集約されています。

クイックリンク

リソース URL その重要性
30日間のトライアルキーを取得する https://ironpdf.com/demos/ 透かしなしですべての機能を解除
ライセンスと価格 https://ironpdf.com/licensing/ 永久またはサブスクリプションプラン; Iron Suite は 10 のライブラリをまとめています
APIリファレンス https://ironpdf.com/object-reference/api/ 完全なクラスドキュメント、例:ChromePdfRenderer
ドキュメントポータル https://ironpdf.com/docs/ ガイド、チュートリアル、サンプルプロジェクト
パフォーマンスアシスタンス https://ironpdf.com/troubleshooting/ironpdf-performance-assistance/ 最適化とスケーリングのヒント
サポートに連絡する https://ironsoftware.com/contact-us/ ライブチャット、電子メール、電話サポート

次のステップ

  1. サンプルリポジトリをクローンし、MVCビューのレンダリングからAES-256暗号化までのすべての主要機能をデモンストレーションします。
  2. トライアルキーをプラグインし、既存のソリューションでユニットテストを実行してクロスプラットフォーム互換性を検証します。
  3. ライブデモを予約するし、エンジニアリングチームとプロジェクト固有の推奨事項を相談します。

これらのリソースを手にして、あらゆる.NETチームが、オンプレミス、Docker、およびサーバーレスのいずれであっても、単一のスプリントでピクセルパーフェクトなPDFを本番環境に出荷できます。

よくある質問

.NET CoreでHTMLをPDFに変換するにはどうすればよいですか?

IronPDFライブラリを使用して.NET CoreでHTMLをPDFに変換できます。まず、IronPDF NuGetパッケージをインストールし、ChromePdfRendererインスタンスを作成します。RenderHtmlAsPdfメソッドを使用してHTML文字列をPDFに変換します。

ウェブサイトのURLをPDF文書に変換するにはどうすればよいですか?

ウェブサイトのURLをPDF文書に変換するには、IronPDF NuGetパッケージをインストールし、ChromePdfRendererインスタンスを作成し、RenderUrlAsPdfメソッドを使ってURLをPDFにレンダリングします。結果はSaveAsメソッドを使用して保存できます。

RazorビューをPDFに変換する最良の方法は何ですか?

RazorビューをPDFに変換する最良の方法はIronPDFを使用することです。まず、RazorビューをHTML文字列にレンダリングし、この文字列をRenderHtmlAsPdfメソッドに渡してPDF文書を作成します。

PDF文書のセキュリティをどのように強化できますか?

IronPDFを使用してPDFのセキュリティを強化できます。AES-256暗号化、パスワード設定、ユーザー権限の制御を適用します。SecuritySettingsプロパティを介してこれらの設定を構成し、印刷や編集といった操作を制限します。

PDFレンダリングのカスタマイズに対してどのようなオプションがありますか?

IronPDFはChromePdfRenderOptionsクラスを通じてさまざまなレンダリングオプションを提供し、用紙サイズ、方向、マージン、CSSメディアタイプを設定できます。また、ヘッダー、フッター、透かしを追加してカスタマイズされたドキュメント出力も可能です。

DockerコンテナにPDF生成アプリケーションをどのようにデプロイしますか?

DockerコンテナにPDF生成アプリケーションをデプロイするには、DockerfileでLinuxの依存関係を構成し、ユーザー権限を設定します。IronPdf.Installation.LinuxAndDockerDependenciesAutoConfigを利用して依存関係を自動管理します。

C#を使用してPDFに透かしを追加するにはどうすればよいですか?

IronPDFを利用してHtmlStampオブジェクトでWatermarkプロパティを使用することでPDFに透かしを追加できます。高度なオプションには、HtmlStamperクラスを使用してカスタムポジショニングや透過効果を設定できます。

PDF文書にデジタル署名を追加できますか?

はい、IronPDFのPdfSignatureクラスを使用してPDFにデジタル署名を追加できます。PdfDocumentSignメソッドを利用し、証明書ファイルを提供して文書の完全性と信憑性を確保します。

.NET CoreでPDF生成のパフォーマンスをどのように最適化できますか?

スレッドセーフなChromePdfRendererインスタンスを再利用し、マルチスレッディングを有効にし、不要なヘッドレス- ChromeのスタートアップフラグをトリミングすることでPDF生成のパフォーマンスを最適化します。これらの実践によりアプリケーションの効率を向上させます。

このチュートリアル for .NET Core HTMLからPDFへの例は.NET 10でも動作しますか?

はい。IronPDFは.NET 10と完全に互換性があるため、このチュートリアルのChromePdfRenderer HTMLからPDFへの例を.NET 10プロジェクトでコアコードを変更せずに使用できます。主な違いはプロジェクトを作成するときに.NET 10をターゲットにし、その後NuGetから最新のIronPDFパッケージをインストールして、HTML、Razorビュー、またはURLからピクセルパーフェクトなPDFを生成することです。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

彼の主要なIronPDFとIron Suite .NETライブラリは、世界中で3000万以上のNuGetインストールを達成し、彼の基礎となるコードは世界中で使用されている開発者ツールに力を与え続けています。25年の商業経験と41年のコーディングの専門知識を持つJacobは、次世代の技術リーダーを指導しながら、エンタープライズグレードのC#、Java、Python PDFテクノロジーにおけるイノベーションの推進に注力しています。

レビュー済み
Jeff Fritz
Jeffrey T. Fritz
プリンシパルプログラムマネージャー - .NETコミュニティチーム
Jeffはまた、.NETとVisual Studioチームのプリンシパルプログラムマネージャーです。彼は.NET Conf仮想会議シリーズのエグゼクティブプロデューサーであり、週に二回放送される開発者向けライブストリーム『Fritz and Friends』のホストを務め、テクノロジーについて話すことや視聴者と一緒にコードを書くことをしています。Jeffはワークショップ、プレゼンテーション、およびMicrosoft Build、Microsoft Ignite、.NET Conf、Microsoft MVPサミットを含む最大のMicrosoft開発者イベントのコンテンツを企画しています。
準備はできましたか?
Nuget ダウンロード 20,296,129 | バージョン: 2026.7 リリースされたばかり
Still Scrolling Icon

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

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