IRON SUITEの使用

C#でCSHTMLをPDFに変換する方法

2023年5月16日
更新済み 2024年3月10日
共有:

CSHTMLをPDFに変換することは、多くのアプリケーションにおいて一般的な要件です。 このタスクは、C#のIronPDFライブラリを使用して簡単に達成できます。

IronPDFは、開発者がPDFドキュメントをプログラムによって作成、読み取り、編集、および変換することを可能にする人気のある.NETライブラリです。 この記事では、C#でIronPDFを使用してCSHTMLをPDFに変換する手順を例とともにご紹介します。

始める前に、このチュートリアルに必要な重要な概念について説明しましょう。

重要な概念

PDFコンバーター

PDFコンバーターは、印刷可能なドキュメントやウェブページをPDFドキュメントに変換するツールです。 HTML、Word、Excel、その他の印刷可能なドキュメントからPDFファイルを生成するために使用できます。 PDFコンバータには、オンラインツール、デスクトップソフトウェア、ライブラリなどさまざまな形態があります。

Razorビューレンダリング

Razorビューは、HTMLページを動的に生成するためにASP.NET Coreで使用されるビューエンジンです。 それは、HTMLマークアップとC#コードを組み合わせたマークアップ構文です。

C#でCSHTMLをPDFに変換する方法、図1: Razorビュー

Razorビュー

Razorビューは、プレゼンテーションロジックをビジネスロジックから分離することにより、開発者が動的なウェブページを簡単に作成できるようにします。

コントローラークラス

コントローラークラスは、ASP.NET Coreアプリケーションで着信するHTTPリクエストを処理するC#クラスです。 それには特定のHTTP動詞(例:GET、POST、PUT、DELETE)に対応するメソッドが含まれており、HTTPレスポンスを返します。

NuGet パッケージマネージャー

NuGetパッケージマネージャーは、.NETプロジェクトでパッケージを管理するためにVisual Studioで使用されるツールです。 開発者がプロジェクトにパッケージをインストール、更新、アンインストールするのを簡単にします。 NuGetパッケージは再利用可能なコードを含み、NuGetパッケージマネージャーを通じて配布されるライブラリです。

依存性注入

依存性の注入(Dependency Injection)は、開発者が依存関係をクラスに注入することによって、アプリケーションのコンポーネントを分離することを可能にする設計パターンです。 依存関係を減らし、コードをよりモジュール化することで、アプリケーションのテストと保守が容易になります。

重要な概念を説明したので、IronPDFを使用してCSHTMLをPDFに変換するプロセスに入りましょう。

CSHTMLとは何ですか?

CSHTMLはC# Razor文法のHTMLを意味します。 それはHTMLマークアップとC#コードの両方を含むファイルの一種です。 これらのファイルは、webページのユーザーインターフェースを定義するために、ASP.NET Core MVCアプリケーションで使用されます。 RazorビュエンジンはCSHTMLファイルを解釈し、WebブラウザによってレンダリングされるHTML出力を生成するために使用されます。

C#でCSHTMLをPDFに変換する方法, 図2: CSHTML5

CSHTML5

IronPDFとは何ですか?

IronPDFは、開発者がC#でPDFドキュメントを作成、読み取り、編集、および変換することを可能にする強力な.NETライブラリです。 これは、.NETアプリケーションでプログラムによってPDFドキュメントを生成するための人気のあるツールです。 IronPDFは、PDF生成、PDF操作、PDF変換、およびPDFレンダリングを含む幅広い機能をサポートしています。

C#でCSHTMLをPDFに変換する方法, 図3: IronPDF for .NET

IronPDF for .NET

CSHTML HTML文字列をIronPDFでPDFファイルに変換する方法(C#)

IronPDFでCSHTMLをPDFに変換するのは簡単なプロセスです。 ライブラリはHTMLファイルをPDFドキュメントに変換するための便利なAPIを提供します。 以下は、CSHTMLをPDFに変換するためにIronPDFをC#で使用する手順です。

ステップ1 IronPDFをインストール

最初のステップは、C#プロジェクトにIronPDFをNuGetパッケージマネージャーからインストールすることです。 IronPDFをインストールするには、IronPDF.dllファイルをダウンロードし、プロジェクトリファレンスに追加してください。 NuGet パッケージマネージャーを使用して IronPDF をインストールするには、パッケージマネージャーコンソールを開き、次のコマンドを実行します。

Install-Package IronPdf

ステップ2 CSHTMLファイルの作成

次に、PDFに変換したい内容を含むCSHTMLファイルを作成します。 この例では、テキスト「Hello, World!」を表示するシンプルなCSHTMLチュートリアルファイルを作成します。

@{
    Layout = null;
}
    Hello
    Hello, World!
@{
    Layout = null;
}
    Hello
    Hello, World!
@
If True Then
	Layout = Nothing
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	Hello Hello, World!
$vbLabelText   $csharpLabel

このファイルをプロジェクトディレクトリに「Hello.cshtml」として保存してください。

C#でCSHTMLをPDFに変換する方法、図4: C#でのPDFファイル

C#でのPDFファイル

ステップ3: CSHTMLをPDFドキュメントに変換する

CSHTML ファイルを PDF に変換するには、C# で IronPDF ライブラリを使用します。 以下は「Hello.cshtml」をPDFに変換するためのコードです:

using System.IO;
using IronPdf;
using Microsoft.AspNetCore.Mvc;

namespace CSHTMLtoPDF.Controllers
{
    public class HomeController : Controller
    {
        private readonly IRazorViewRenderer _viewRenderService;
        public HomeController(IRazorViewRenderer viewRenderService)
        {
            _viewRenderService = viewRenderService;
        }

        public IActionResult Index()
        {
            var items = new [] { "Item 1", "Item 2", "Item 3" };
            return View(items);
        }

        public IActionResult DownloadPDF()
        {
            var items = new [] { "Item 1", "Item 2", "Item 3" };

            ChromePdfRenderer renderer = new ChromePdfRenderer();
            PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items);

            var contentDisposition = new Syste.NET.Mime.ContentDisposition
            {
                FileName = "Items.pdf",
                Inline = false,
            };
            Response.Headers.Add("Content-Disposition", contentDisposition.ToString());

            return File(pdf.BinaryData, "application/pdf");
        }
    }
}
using System.IO;
using IronPdf;
using Microsoft.AspNetCore.Mvc;

namespace CSHTMLtoPDF.Controllers
{
    public class HomeController : Controller
    {
        private readonly IRazorViewRenderer _viewRenderService;
        public HomeController(IRazorViewRenderer viewRenderService)
        {
            _viewRenderService = viewRenderService;
        }

        public IActionResult Index()
        {
            var items = new [] { "Item 1", "Item 2", "Item 3" };
            return View(items);
        }

        public IActionResult DownloadPDF()
        {
            var items = new [] { "Item 1", "Item 2", "Item 3" };

            ChromePdfRenderer renderer = new ChromePdfRenderer();
            PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items);

            var contentDisposition = new Syste.NET.Mime.ContentDisposition
            {
                FileName = "Items.pdf",
                Inline = false,
            };
            Response.Headers.Add("Content-Disposition", contentDisposition.ToString());

            return File(pdf.BinaryData, "application/pdf");
        }
    }
}
Imports System.IO
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc

Namespace CSHTMLtoPDF.Controllers
	Public Class HomeController
		Inherits Controller

		Private ReadOnly _viewRenderService As IRazorViewRenderer
		Public Sub New(ByVal viewRenderService As IRazorViewRenderer)
			_viewRenderService = viewRenderService
		End Sub

		Public Function Index() As IActionResult
			Dim items = { "Item 1", "Item 2", "Item 3" }
			Return View(items)
		End Function

		Public Function DownloadPDF() As IActionResult
			Dim items = { "Item 1", "Item 2", "Item 3" }

			Dim renderer As New ChromePdfRenderer()
			Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items)

			Dim contentDisposition = New Syste.NET.Mime.ContentDisposition With {
				.FileName = "Items.pdf",
				.Inline = False
			}
			Response.Headers.Add("Content-Disposition", contentDisposition.ToString())

			Return File(pdf.BinaryData, "application/pdf")
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

このコードをステップバイステップで見ていきましょう:

  • 必要な名前空間を最初にインポートします。HTMLをPDFに変換する機能を含むIronPDF名前空間も含まれています。
  • 次に、Indexメソッドを定義し、Razorビューにアイテムのリストを単純に返します。
  • 私たちは、PDFドキュメントを生成する責任があるDownloadPDFメソッドを定義します。
  • 私たちは、レンダラを作成することから始めますChromePdfRenderer
  • 次に、RenderRazorViewToPdf拡張メソッドを使用して、データを含むRazorビューをPDFファイルに変換します。
  • 次に、Content-Dispositionヘッダーを設定して、PDFがブラウザで表示されるのではなく、ダウンロードされるように強制します。
  • 最後に、Fileメソッドを使用してPDFドキュメントをファイルとして返します。

    これは、C#でIronPDFを使用してCSHTMLをPDFに変換するための基本的なコードです。 しかし、PDF出力をカスタマイズするための多くのオプションや設定があります。 いくつかのこれらのオプションを見てみましょう。

PDF出力リターンファイルのカスタマイズ

IronPDFは、PDFファイルの出力をカスタマイズするための多くのオプションを提供します。 ページサイズ、余白、向き、ヘッダーとフッターなどのオプションを設定できます。 PDF出力をカスタマイズする方法の例は次のとおりです:

using IronPdf;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string [] args)
        {
            var renderer = new ChromePdfRenderer();
            renderer.RenderingOptions.MarginTop = 10;
            renderer.RenderingOptions.MarginBottom = 10;
            renderer.RenderingOptions.MarginLeft = 20;
            renderer.RenderingOptions.MarginRight = 20;
            renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
            {
                MaxHeight = 20, //millimeters
                HtmlFragment = "<img src='logo.png'>",
                BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
            };
            renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
            {
                MaxHeight = 15, //millimeters
                HtmlFragment = "<center><i>{page} of {total-pages}<i></center>",
                DrawDividerLine = true
            };
            var pdf = renderer.RenderHtmlAsPdf("\r\n\r\n\r\n    \r\n    Hello\r\n\r\n\r\n    Hello, World!\r\n\r\n");
            pdf.SaveAs("Hello.PDF");
        }
    }
}
using IronPdf;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string [] args)
        {
            var renderer = new ChromePdfRenderer();
            renderer.RenderingOptions.MarginTop = 10;
            renderer.RenderingOptions.MarginBottom = 10;
            renderer.RenderingOptions.MarginLeft = 20;
            renderer.RenderingOptions.MarginRight = 20;
            renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
            {
                MaxHeight = 20, //millimeters
                HtmlFragment = "<img src='logo.png'>",
                BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
            };
            renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
            {
                MaxHeight = 15, //millimeters
                HtmlFragment = "<center><i>{page} of {total-pages}<i></center>",
                DrawDividerLine = true
            };
            var pdf = renderer.RenderHtmlAsPdf("\r\n\r\n\r\n    \r\n    Hello\r\n\r\n\r\n    Hello, World!\r\n\r\n");
            pdf.SaveAs("Hello.PDF");
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronPdf

Namespace ConsoleApp
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim renderer = New ChromePdfRenderer()
			renderer.RenderingOptions.MarginTop = 10
			renderer.RenderingOptions.MarginBottom = 10
			renderer.RenderingOptions.MarginLeft = 20
			renderer.RenderingOptions.MarginRight = 20
			renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
				.MaxHeight = 20,
				.HtmlFragment = "<img src='logo.png'>",
				.BaseUrl = (New Uri("C:\assets\images\")).AbsoluteUri
			}
			renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
				.MaxHeight = 15,
				.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>",
				.DrawDividerLine = True
			}
			Dim pdf = renderer.RenderHtmlAsPdf(vbCrLf & vbCrLf & vbCrLf & "    " & vbCrLf & "    Hello" & vbCrLf & vbCrLf & vbCrLf & "    Hello, World!" & vbCrLf & vbCrLf)
			pdf.SaveAs("Hello.PDF")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

この例では、最初にChromePdfRendererクラスのインスタンスを作成します。 次に、ChromePdfRendererクラスのRenderingOptionsプロパティを使用してさまざまなオプションを設定します。 以下は、設定したいくつかのオプションです:

  • PaperSize: PDFドキュメントの用紙サイズをA4に設定します。
  • MarginTop, MarginBottom, MarginLeft, MarginRight: PDFドキュメントのマージンを上下10mm、左右20mmに設定します。
  • HtmlHeader: PDFドキュメントのヘッダーを設定して、ドキュメントのタイトルと区切り線を表示します。
  • HtmlFooter: PDFドキュメントのフッターを設定して、ページ番号、総ページ数、および現在の日付を表示します。

    オプションを設定した後、以前と同じHTMLコンテンツを使用してRenderHtmlAsPdfメソッドを呼び出します。 最後に、PDFドキュメントを「Hello.PDF」という名前のファイルに保存します。

アプリケーションをテストする

すべての必要なコードが揃ったので、アプリケーションをテストすることができます。 以下の手順に従ってください:

  • Visual StudioでF5キーを押すか、緑色の「再生」ボタンをクリックしてアプリケーションを実行します。
  • ウェブブラウザで、Visual Studio によって割り当てられたポート番号がある http://localhost:/Home/Index に移動します。
  • アイテム一覧が正しく表示されていることを確認してください。
  • 「PDFをダウンロード」リンクをクリックして、PDFドキュメントを生成およびダウンロードしてください。

    すべてが正しく機能している場合、先に定義した項目のリストが含まれるPDFドキュメントが表示されるはずです。

IronPDFを使用してPDFをCSHTMLファイルに変換

C#でCSHTMLをPDFに変換する方法、図7: PDFからCSHTMLへ

PDFからCSHTMLへ

PDFをCSHTMLファイルに変換する方法を示すために、新しいコンソールアプリケーションをVisual Studioで作成し、IronPDFを使用してサンプルのPDFドキュメントをCSHTMLファイルに変換します。以下の手順に従ってください:

ステップ 1 新しいコンソール アプリケーションを作成する

Visual Studioを開き、メニューから「ファイル > 新規作成 > プロジェクト」を選択し、プロジェクトテンプレートのリストから「コンソールアプリケーション (.NET Framework)」または「コンソールアプリケーション (.NET Core)」を選択して新しいコンソールアプリケーションを作成します。

ステップ2 IronPDF NuGetパッケージをインストール

次に、コンソールアプリケーションにIronPDF NuGet パッケージをインストールする必要があります。 これを行うには、ソリューションエクスプローラーでプロジェクトを右クリックし、コンテキストメニューから「NuGet パッケージの管理」を選択します。

NuGet パッケージ マネージャーで「IronPDF」を検索し、検索結果から「IronPDF」パッケージを選択してください。 「インストール」ボタンをクリックして、パッケージとその依存関係をインストールしてください。

ステップ3 PDFファイルとCSHTMLファイルをプロジェクトに追加

この例では、変換したいサンプルPDFファイルを使用してCSHTMLファイルに変換します。この手順では、お好きなPDFファイルを使用できます。

プロジェクトにPDFファイルを追加するには、ソリューションエクスプローラーでプロジェクトを右クリックし、コンテキストメニューから「追加 > 既存の項目」を選択します。

変換されたHTML文字列を保存するために、空のCSHTMLファイルも作成する必要があります。 これを行うには、Solution Explorerでプロジェクトを右クリックし、コンテキストメニューから「追加 > 新しい項目」を選択します。 テンプレートの一覧から「HTML Page」を選択し、ファイルに名前を付けます(例:「converted.cshtml」)。次に、「追加」をクリックします。

ステップ 4: PDFをCSHTMLファイルに変換する

必要なファイルが揃ったら、IronPDFを使用してPDFをCSHTMLファイルに変換するコードを書き始めることができます。 以下のコードをコンソールアプリケーションのMainメソッドに追加してください:

using IronPdf;

namespace PdfToHtml
{
    class Program
    {
        static void Main(string [] args)
        {
            // Load the PDF file
            PdfDocument pdf = PdfDocument.FromFile("sample.PDF");

            // Convert the PDF to an HTML string
            string html = pdf.ToHtml();

            // Save the HTML string to the CSHTML file
        }
    }
}
using IronPdf;

namespace PdfToHtml
{
    class Program
    {
        static void Main(string [] args)
        {
            // Load the PDF file
            PdfDocument pdf = PdfDocument.FromFile("sample.PDF");

            // Convert the PDF to an HTML string
            string html = pdf.ToHtml();

            // Save the HTML string to the CSHTML file
        }
    }
}
Imports IronPdf

Namespace PdfToHtml
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Load the PDF file
			Dim pdf As PdfDocument = PdfDocument.FromFile("sample.PDF")

			' Convert the PDF to an HTML string
			Dim html As String = pdf.ToHtml()

			' Save the HTML string to the CSHTML file
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

IronPDFを使用する理由

IronPDFが.NET開発者の間で人気の理由はいくつかあります。

強力な PDF 生成能力: IronPDFは、PDFドキュメントをプログラムで作成および操作するための幅広い機能とオプションを提供しています。これには、PDFページにテキスト、画像、およびその他のコンテンツを追加する機能、既存のPDFドキュメントのマージおよび分割する機能が含まれます。

多用途の PDF 変換機能:IronPDF は開発者が PDF ドキュメントを生成することを可能にするだけでなく、PDF を HTML 文字列や CSHTML ファイルに変換する機能も提供します。 これは、WebアプリケーションでPDFコンテンツを表示したり、PDFドキュメントからデータを抽出してウェブベースのワークフローで使用したりする必要がある場合に役立ちます。

使いやすい API: IronPDFのAPIは、直感的で使いやすいように設計されており、開発者がプログラムでPDFドキュメントを生成および操作しやすくするための多くのヘルパーメソッドやプロパティを備えています。

強力な コミュニティ サポート:IronPDFは、多くの.NET開発者からなる活発なコミュニティを持っており、ライブラリの開発に貢献し、他の開発者へのサポートを提供しています。

優れたドキュメンテーション: IronPDFのドキュメンテーションは広範かつ整然としており、詳細なAPIリファレンスドキュメント、チュートリアル、例が用意されていて、開発者がライブラリを使い始めるのを容易にし、使い方を学ぶのに便利です。

IronPDFの強力なPDF生成および変換機能、使いやすいAPI、強力なコミュニティサポート、優れたドキュメントが組み合わさることにより、PDFドキュメントをアプリケーション内で使用する必要がある.NET開発者の間で人気の選択肢となっています。

結論

CSHTMLをPDFに変換することは、多くのアプリケーションにおいて一般的な要件です。 IronPDFを使用すると、このタスクはC#で簡単に達成できます。 この記事では、IronPDFを使用してCSHTMLをPDFに変換する手順を、例と共に説明しました。

また、用紙サイズ、余白、ヘッダーとフッターなどの設定によりPDF出力をカスタマイズする方法も紹介しました。 IronPDFを使用すると、CSHTMLファイルから高品質のPDFドキュメントを迅速かつ簡単に作成できます。

PDFドキュメントをゼロから作成する必要がある場合、PDFをHTML文字列またはCSHTMLファイルに変換する場合、またはPDFドキュメントからデータを抽出する場合、IronPDFは柔軟で直感的なAPIを提供しており、作業を簡単に行うことができます。

強力なコミュニティサポートと豊富なドキュメンテーションを持つIronPDFは、アプリケーションでPDFを扱う必要がある.NET開発者の間で人気の選択肢です。 また、Iron Softwareパッケージを購入することで、開発者は、一般的なファイル形式で作業するための.NETライブラリの包括的なセットを割引価格で利用できるため、あらゆる.NET開発チームにとって非常にお得です。

.NET アプリケーションでPDF文書を操作する必要がある場合、IronPDFは検討する価値があります。 強力な機能、使いやすさ、そしてさまざまなライセンスオプションを備えており、迅速かつ効率的に作業を完了するための多用途で信頼性の高いツールです。

< 以前
C# における .NET 開発者向けの HTML から PDF への変換 (究極のガイド)
次へ >
HTMLファイルからC#でPDFを作成