C#でRazorをヘッドレスで使用してCSHTMLをPDFに変換する方法 | IronPDF

How to Convert Razor Views to PDFs Headlessly in C

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

C# を使用して Razor ビューを PDF に変換するには、Razor.Templating.Core を使用して cshtml ファイルを HTML に変換し、その後 IronPDF の RenderHtmlAsPdf メソッドを使用して、GUI やブラウザウィンドウを必要とせずに PDF ドキュメントを生成します。

ヘッドレス・レンダリングは、グラフィカル・ユーザー・インターフェイスなしでウェブコンテンツを処理します。 IronPdf.Extensions.Razor有用ですが、ヘッドレスレンダリング機能がありません。 このガイドは、そのギャップを解決します。

Razor.Templating.Core を使用して cshtml を HTML に変換し、IronPDF を使用して PDF を生成します。

クイックスタート: Razorビューを数秒で PDF に変換する

IronPDFのヘッドレス変換でRazorビューをPDFに変換します。 RazorビューのHTMLをPDFに変換するには、IronPdf.HtmlToPdf.StaticRender.RenderHtmlAsPdfを使用してください。 このアプローチは、ASP.NET Core環境でもシームレスに機能します。

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

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

    var html = await RazorTemplateEngine.RenderAsync("Views/Template.cshtml", model); 
    new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs("output.pdf");
  3. 実際の環境でテストするためにデプロイする

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

    arrow pointer

ASP.NET Core Web アプリで Razor ビューを HTML に変換するには、Razor.Templating.Core をインストールしてください。

# Install the Razor.Templating.Core package using NuGet Package Manager
Install-Package Razor.Templating.Core
# Install the Razor.Templating.Core package using NuGet Package Manager
Install-Package Razor.Templating.Core
SHELL

PDF変換のためにASP.NET Coreプロジェクトをセットアップするにはどうすればよいですか?

View を PDF に変換するには、ASP.NET Core Web App (Model-View-Controller) プロジェクトが必要です。 セットアップには、Visual Studioでのプロジェクトの作成、NuGetパッケージのインストール、プロジェクト構造の構成が含まれます。 同様のテクニックについては、converting CSHTML to PDF in MVC Coreまたはconverting CSHTML to PDF using Razor Pagesを参照してください。

なぜ IronPdf.Extensions.Razor ではなく Razor.Templating.Core が必要なのでしょうか?

Razor.Templating.Core は、Web コンテキストやブラウザウィンドウを使用せずに Razor ビューを HTML に変換する、真のヘッドレスレンダリングを実現します。 バックグラウンドサービス、コンソールアプリケーション、またはUIレス環境に適しています。 IronPdf.Extensions.Razor は機能するために Web 環境を必要とします。

ヘッドレスPDF生成に最適なプロジェクトタイプは?

ASP.NET Core Web App(Model-View-Controller)プロジェクトは、必要な Razor View インフラストラクチャと柔軟なデプロイオプションを提供します。 このアプローチは、バックグラウンドサービス、Azure Functions、またはコンソールアプリケーションで使用します。 クラウドベースの生成についてはdeploying IronPDF to Azureをご覧ください。

必要な NuGet パッケージはどのようにインストールしますか?

NuGetパッケージマネージャを使用してパッケージをインストールします。 IronPdf および Razor.Templating.Core が必要です:

// Install via Package Manager Console
Install-Package IronPdf
Install-Package Razor.Templating.Core

// Or add to your .csproj file
// <PackageReference Include="IronPdf" Version="2024.x.x" />
// <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
// Install via Package Manager Console
Install-Package IronPdf
Install-Package Razor.Templating.Core

// Or add to your .csproj file
// <PackageReference Include="IronPdf" Version="2024.x.x" />
// <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
' Install via Package Manager Console
' Install-Package IronPdf
' Install-Package Razor.Templating.Core

' Or add to your .vbproj file
' <PackageReference Include="IronPdf" Version="2024.x.x" />
' <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
$vbLabelText   $csharpLabel

PDF生成用のRazorビューを作成および設定するには?

  • ホーム"フォルダを右クリックします。 "追加"、"ビューを追加 "の順に選択してください。
  • 空のRazorビューを "Data.cshtml "という名前で作成します。

 related to PDF生成用のRazorビューを作成および設定するには?

どのような HTML コンテンツを Razor ビューに追加すればよいですか?

PDFとしてレンダリングしたいHTMLを追加してください:

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>Software Engineer</td>
        <td>Experienced software engineer specializing in web development.</td>
    </tr>
    <tr>
        <td>Alice Smith</td>
        <td>Project Manager</td>
        <td>Seasoned project manager with expertise in agile methodologies.</td>
    </tr>
    <tr>
        <td>Michael Johnson</td>
        <td>Data Analyst</td>
        <td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
    </tr>
</table>
<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>Software Engineer</td>
        <td>Experienced software engineer specializing in web development.</td>
    </tr>
    <tr>
        <td>Alice Smith</td>
        <td>Project Manager</td>
        <td>Seasoned project manager with expertise in agile methodologies.</td>
    </tr>
    <tr>
        <td>Michael Johnson</td>
        <td>Data Analyst</td>
        <td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
    </tr>
</table>
HTML

複雑なレイアウトの場合は、CSSと印刷スタイルを使用して、完璧なPDFレンダリングを保証してください。 IronPDFは洗練されたドキュメントレイアウトのための最新のCSS3機能をサポートしています。

なぜPDFのデータ表示にテーブルを使うのですか

表は、構造化され、整理された情報を提供し、印刷文書によく翻訳されます。 また、プラットフォーム間で一貫した書式を維持し、PDFフォーマットで読みやすいものでなければなりません。 IronPDFのレンダリングエンジンはテーブルレイアウトをうまく処理し、ボーダー、スペーシング、アライメントを保持します。 高度な書式設定については、カスタムマージンでレイアウトを最適化してください。

PDF出力のための一般的なスタイリングの考慮事項とは

PDF出力には、印刷に特化したCSSメディアクエリ、相対単位の代わりに固定ピクセル値、一貫したレンダリングのための埋め込みフォントを使用してください。 IronPDFはブランドの一貫性を保つためにウェブフォントとアイコンフォントをサポートしています。 複数ページの文書では改ページを考慮し、プロフェッショナルな外観のために適切な余白をとってください。

ヘッドレスPDFレンダリングのためにProgram.csをどのように設定すればよいですか?

Program.cs に、このコードを追加してください。 RenderAsync を使用して Razor.Templating.Core から Razor ビューを HTML に変換し、その後 ChromePdfRenderer をインスタンス化して、その HTML を RenderHtmlAsPdf に渡します。 カスタムテキスト、ヘッダー、フッター、余白、ページ番号には RenderingOptions を使用してください。

app.MapGet("/PrintPdf", async () =>
{
    // Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    // Render the Razor view to an HTML string
    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    // Create a new instance of ChromePdfRenderer 
    ChromePdfRenderer renderer = new ChromePdfRenderer();

    // Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4;
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    // Render the HTML string as a PDF document
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    // Return the PDF file as a response
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
app.MapGet("/PrintPdf", async () =>
{
    // Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    // Render the Razor view to an HTML string
    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    // Create a new instance of ChromePdfRenderer 
    ChromePdfRenderer renderer = new ChromePdfRenderer();

    // Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4;
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    // Render the HTML string as a PDF document
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    // Return the PDF file as a response
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
Imports IronPdf
Imports Microsoft.AspNetCore.Builder

app.MapGet("/PrintPdf", Async Function()
    ' Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"

    ' Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All

    ' Render the Razor view to an HTML string
    Dim html As String = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")

    ' Create a new instance of ChromePdfRenderer 
    Dim renderer As New ChromePdfRenderer()

    ' Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4
    renderer.RenderingOptions.MarginTop = 25
    renderer.RenderingOptions.MarginBottom = 25
    renderer.RenderingOptions.MarginLeft = 20
    renderer.RenderingOptions.MarginRight = 20

    ' Render the HTML string as a PDF document
    Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, "./wwwroot")

    ' Return the PDF file as a response
    Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
End Function)
$vbLabelText   $csharpLabel

どのようなレンダリング オプションを PDF に適用できますか?

IronPDFは幅広いレンダリングオプションを提供します。 ヘッダーとフッターを追加し、カスタム用紙サイズを設定し、ページの向きを制御し、透かしを追加します。 ChromePdfRenderer は、PDF 生成をカスタマイズするための 50 以上のプロパティを提供しています。

PDF生成中のエラーはどのように処理しますか?

堅牢なPDF生成のためのエラー処理を実装する:

try
{
    var html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
}
catch (Exception ex)
{
    // Log the error details
    IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}");
    return Results.Problem("Failed to generate PDF", statusCode: 500);
}
try
{
    var html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
}
catch (Exception ex)
{
    // Log the error details
    IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}");
    return Results.Problem("Failed to generate PDF", statusCode: 500);
}
Imports IronPdf
Imports System.Threading.Tasks

Public Class PdfGenerator
    Public Shared Async Function GeneratePdfAsync() As Task(Of IResult)
        Try
            Dim html = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")
            Dim renderer = New ChromePdfRenderer()
            Dim pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot")
            Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
        Catch ex As Exception
            ' Log the error details
            IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}")
            Return Results.Problem("Failed to generate PDF", statusCode:=500)
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

詳細ログはいつ有効にすべきですか?

開発中やトラブルシューティング中に詳細なロギングができるようにします。 IronPDFのロギングはレンダリングに関する洞察を提供し、HTMLの解析、アセットの読み込み、設定の問題を特定するのに役立ちます。 本番環境では、カスタムロギングを使用して、アプリケーションのロギングインフラストラクチャと統合してください。

なぜアセット リンク パスを修正する必要があるのですか?

[Views] > [Shared] > [_Layout.cshtml] に移動してください。 リンクタグ内では、"~/""./" に変更してください。"~/" は IronPDF との相性が良くないためです。

その他に注意すべきパス関連の問題はありますか?

チルダ(~)パスの問題を超えて、画像ソースが絶対パスまたは適切な相対参照を使用していることを確認してください。 外部リソースについては、アセットが正しく読み込まれるように、ベースURLを使用してください。 Azure Blob Storageの画像については、Azure Blob Storageからの画像の埋め込みを参照してください。

静的アセットはPDF生成にどのように影響しますか?

静的アセット(CSS、JavaScript、画像)は、PDF生成のパフォーマンスと品質に影響を与えます。 レンダリング中にアセットにアクセスできるようにし、最適化された画像を使用し、レンダリングを高速化するために重要なCSSをインラインで埋め込むことを検討してください。 JavaScript を多用するコンテンツの rendering delay and timeouts について学んでください。

ヘッドレスPDFの生成をテストするにはどうすればよいですか?

プロジェクトを実行してPDFドキュメントを生成します。

Visual Studio showing running ASP.NET Core MVC app with Program.cs open and successful debug output

出力PDF

最終的なPDFはどのようになりますか?

PDFは、テーブル構造、フォント、色、レイアウトなど、すべてのRazor Viewフォーマットを維持する必要があります。 適切なサイズで、きれいな余白があり、プロフェッショナルな外観であること。 出力品質を確認するために、IronPDFのラスタライズ機能を使ってページを画像としてプレビューしてください。

一般的な PDF レンダリングの問題をトラブルシューティングするにはどうすればよいですか?

よくある問題としては、スタイルの欠落、レイアウトの崩れ、コンテンツの不完全さなどがあります。 詳細なロギングを有効にし、アセットパスを検証し、HTMLが適切に検証されるようにします。 複雑なレイアウトの場合、Chromeデバッグツールを使用して、変換前にHTMLをプレビューしてください。 特定のレンダリングの問題については、WaitFor delays を使用して、レンダリング前にコンテンツが読み込まれるようにしてください。

完全な実例はどこでダウンロードできますか?

圧縮されたVisual Studio ASP.NET Core Web App(Model-View-Controller)プロジェクトとして完全なコードをダウンロードしてください。

プロジェクトをダウンロードするにはここをクリック。

サンプルプロジェクトを実行するための前提条件は何ですか?

Visual Studio 2019以降と.NET 6.0 SDK以降が必要です。 プロジェクトにはNuGetパッケージの復元のためにインターネット接続が必要です。 実行する前に、Program.cs で IronPDF のライセンスキーを更新してください。 導入については、Windowsインストールガイドを参照してください。

自分のユースケースに合わせてサンプルをカスタマイズするにはどうすればよいですか?

サンプルは、特定のニーズに対応するための基礎となります。 動的なデータモデルを追加したり、頻繁に生成されるPDFのキャッシュを実装したり、既存の認証と統合したりします。 高度なシナリオについては、async PDF 生成でパフォーマンスを向上させたり、PDF 圧縮を実装してファイル サイズを削減したりすることを検討してください。 文書の信頼性のためにデジタル署名を追加したり、機密文書のためにパスワード保護を追加します。

よくある質問

C# で Razor Views を GUI なしで PDF に変換する方法を教えてください。

Razor.Templating.Coreを使ってcshtmlファイルをHTMLに変換し、IronPDFのRenderHtmlAsPdfメソッドを使ってPDFをヘッドレスで生成します。この2段階のプロセスにより、グラフィカルユーザーインターフェイスやブラウザウィンドウを必要とせずにRazorビューをPDFドキュメントに変換することができます。

RazorのビューをヘッドレスでPDFにレンダリングする最も速い方法は何ですか?

まずRazorTemplateEngine.RenderAsyncでRazorビューをHTMLに変換し、IronPDFのChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs()メソッドでPDFファイルを作成し保存します。

なぜIronPdf.Extensions.Razorの代わりにRazor.Templating.Coreを使う必要があるのですか?

Razor.Templating.Coreは真のヘッドレスレンダリング機能を提供し、ウェブコンテキストやブラウザウィンドウなしでRazorビューをHTMLに変換することができます。Razor.Templating.Coreはバックグラウンドサービスやコンソールアプリケーションに向いています。

ヘッドレスPDF生成にはどのようなASP.NET Coreプロジェクトが必要ですか?

ASP.NET Core Web App (Model-View-Controller) プロジェクトを使用し、必要な Razor View インフラストラクチャと柔軟なデプロイメントオプションを提供します。このセットアップは、バックグラウンドサービス、Azure Functions、またはコンソールアプリケーション用のIronPDFとうまく機能します。

Razor から PDF への変換に必要なパッケージのインストール方法を教えてください。

Razor.Templating.CoreをNuGetパッケージマネージャを使って'Install-Package Razor.Templating.Core'コマンドでインストールします。HTMLからPDFへの変換ステップを処理するために、プロジェクトにIronPDFをインストールする必要があります。

このヘッドレスPDF生成アプローチをクラウド環境で使用できますか?

IronPDFのヘッドレスRazorからPDFへの変換は、Azure Functions、AWS Lambda、コンテナ化されたアプリケーションを含むクラウド環境で優れた機能を発揮し、スケーラブルなドキュメント生成サービスに最適です。

カーティス・チャウ
テクニカルライター

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

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

準備はできましたか?
Nuget ダウンロード 19,014,616 | バージョン: 2026.5 just released
Still Scrolling Icon

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

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