
Cefsharp.WPF.NET Core (開発者向けの仕組み)
開発者は、Chromium Embedded Frameworkに基づいた独創的な.NETラッパーであるCefSharpを使用して、Chromiumの強力なウェブブラウザーエンジンを.NETデスクトップアプリケーションやWPFアプリケーションに簡単に統合できるようになりました。 CefSharpは.NETアプリ開発者に、Chromiumのウェブ機能と開発ツールを外部依存なしに活用させることにより、カスタマイズされたデスクトップインターフェース内で豊かなウェブ体験を可能にします。 カスタマイズオプションやブラウザーの動作に対する制御など、多くの新機能を備えたこのフレームワークは、HTML5、CSS3、JavaScriptといった現代のウェブ技術を統合することを容易にします。
ユーザーのデスクトップソリューションでのウェブベースのコンテンツとの相互作用が、CefSharpのクロスプラットフォームでの互換性とウェブコンテンツの相互作用機能によって変革され、アプリケーション環境内での動的なウェブサーフ体験を可能にします。 この記事では、CefSharpのオープンソース版についてコードスニペットを用いて解説します。
CefSharpの使い方
- Visual Studioプロジェクトから新しいWindowsフォームを作成します。
- ライブラリCefSharpをインストールします。
- CefSharpのコンパイル準備ができている必要なオブジェクトを宣言します。
- 読み込みたいURLを入力します。
- コードを実行します。
CefSharp.WinForms をインストールします。
- Visual StudioのNuGetパッケージマネージャーを使用する方法が、CefSharpをインストールする最も簡単な方法です。
- Visual Studioでプロジェクトを起動します。
- ソリューションエクスプローラーで、プロジェクトを右クリックします。
- "NuGetパッケージの管理"を選択します。
- "参照"タブに移動し、"CefSharp"を検索します。
- プロジェクトに適したCefSharpパッケージ(CefSharp.Wpf、CefSharp.WinFormsなど)を選択します。
- "インストール"をクリックしてパッケージをプロジェクトに含めます。
CefSharpの重要性
CefSharpは、Chromiumのウェブブラウザーエンジンの威力を.NETアプリケーションに容易に統合することで、開発者がデスクトップアプリや自動化プロジェクトの構築方法を変革するフレームワークです。 CefSharpを使用することで、HTML5サポートを活用した埋め込みUIを含むリモートウェブコンテンツを表示することができます。
CefSharpの紹介で強調すべき重要な点は次のとおりです:
- Chromium Embedded Framework(CEF)はCefSharpの基礎となるフレームワークであり、Chromiumブラウザーの機能を他のプログラムに統合できるようにします。 GoogleのChromiumプロジェクトを使用することで、CefSharpはデスクトッププログラムに高度なウェブ機能をもたらします。
- .NET統合:CefSharpはCefのための強力な.NETラッパーです。 プログラマーがC#や他 for .NET言語を使用して高速ウェブブラウザーをデスクトップ.NETアプリケーションに統合することを容易にします。
- デスクトップアプリにおけるウェブサーフィン:CefSharpを使えば、開発者は簡単にウェブブラウジング機能をデスクトッププログラムに組み込むことができます。 この機能により、開発者はユーザーインターフェースにオンライン資料を組み込んだり、ウェブ対応の独自のデスクトップアプリを作成する可能性が広がります。 JavaScriptイベントが発生するときにコールバックを受け取ることができます。
- 豊富なウェブ技術のサポート:CefSharpを使用することで、開発者はChromiumが提供する全ての機能を活用することができます。HTML5、CSS3、JavaScript、WebGLなど、最新のウェブ標準を含む最新のウェブ技術をサポートしています。 これにより、デスクトッププログラムに先端ウェブ技術を取り入れることが可能になります。
- 柔軟性とカスタマイズ:CefSharpは開発者に多くの柔軟性とカスタマイズの可能性を提供し、イベントを処理し、JavaScriptを実行し、オンラインコンテンツと相互作用し、特定のアプリケーションニーズに応じてブラウザ動作を変更することができます。 CefSharp with WebGLは、ハードウェアアクセラレーションによるレンダリングのためにOpenGL/DirectXを利用し、3Dコンテンツをサポートします。
CefSharpを使用することで、開発者はデスクトップアプリケーションを改善し、ウェブサーフィン体験を促進し、アプリケーション環境内でユーザーに豊かで現代的な情報を提供することができます。
サンプルコード:
using System;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;
namespace CefSharpExample
{
public partial class MainForm : Form
{
private ChromiumWebBrowser chromeBrowser;
public MainForm()
{
InitializeComponent();
// Initialize CefSharp settings
CefSettings settings = new CefSettings();
Cef.Initialize(settings);
// Create the ChromiumWebBrowser instance
chromeBrowser = new ChromiumWebBrowser("https://ironpdf.com/"); // Load a URL
// Add the ChromiumWebBrowser control to the form
this.Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Fill; // Fill the entire form
// Handle when the browser component has finished loading
chromeBrowser.LoadingStateChanged += ChromeBrowser_LoadingStateChanged;
}
private void ChromeBrowser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
{
if (!e.IsLoading)
{
// Page has finished loading
// Perform actions after the page has loaded
Console.WriteLine("Finished loading.");
}
}
// Dispose of Cef resources when the form is closed
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
Cef.Shutdown();
}
}
}Imports System
Imports System.Windows.Forms
Imports CefSharp
Imports CefSharp.WinForms
Namespace CefSharpExample
Partial Public Class MainForm
Inherits Form
Private chromeBrowser As ChromiumWebBrowser
Public Sub New()
InitializeComponent()
' Initialize CefSharp settings
Dim settings As New CefSettings()
Cef.Initialize(settings)
' Create the ChromiumWebBrowser instance
chromeBrowser = New ChromiumWebBrowser("https://ironpdf.com/") ' Load a URL
' Add the ChromiumWebBrowser control to the form
Me.Controls.Add(chromeBrowser)
chromeBrowser.Dock = DockStyle.Fill ' Fill the entire form
' Handle when the browser component has finished loading
AddHandler chromeBrowser.LoadingStateChanged, AddressOf ChromeBrowser_LoadingStateChanged
End Sub
Private Sub ChromeBrowser_LoadingStateChanged(ByVal sender As Object, ByVal e As LoadingStateChangedEventArgs)
If Not e.IsLoading Then
' Page has finished loading
' Perform actions after the page has loaded
Console.WriteLine("Finished loading.")
End If
End Sub
' Dispose of Cef resources when the form is closed
Private Sub MainForm_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
Cef.Shutdown()
End Sub
End Class
End Namespaceこのコードは、Chromiumをベースにした埋め込みウェブブラウザーを持つ基本的なWinFormsアプリケーションを開発するためにCefSharpを使用します。 説明はこちらです:
CefSettingsを使用して、CefSharp 設定を初期化します。- ChromiumWebBrowser:このクラスはCefSharpが提供するウェブブラウザーコントロールを表します。
LoadingStateChangedイベントは、ページの読み込みが完了したときなど、ブラウザの読み込み状態の変化を処理します。MainForm_FormClosingイベントは、フォームの閉鎖時にCefリソースが適切にシャットダウンされることを保証します。
基本的な例については、CefSharpを使用してコンパイル準備が整ったアプリをMinimal Example Project on GitHubで確認できます。 より複雑な例プロジェクトはプロジェクトのソースで利用可能です。
IronPDFとCefSharpの連携
IronPDFのPDF生成機能をCefSharpのChromium Embedded Framework(CEF)ブラウザーと統合するには、.NETアプリケーションでCefSharpとIronPDFを一緒に使用する必要があります。 しかし、2022年1月の最新バージョンでは、CefSharpとIronPDFの間に直接的で即席のインターフェースはありません。
CefSharpの主な目標は、.NETプログラムにChromiumウェブブラウザーエンジンを統合し、アプリケーションのユーザーインターフェースを通じてオンラインコンテンツを表示し、対話させることです。 CefSharpはWPFおよびWindows Formsアプリケーションのためのブラウザーコントロールを提供します。
CefSharpとIronPDFは直接統合されていませんが、開発者は同じアプリケーションコンテキストで両方のライブラリを使用することができます。
IronPDF は HTML から PDF への変換に秀でており、元のレイアウトとスタイルを正確に保存します。 これは、レポート、請求書、ドキュメントなどの Web ベースのコンテンツから PDF を作成するのに最適です。 HTML ファイル、URL、または生の HTML 文字列のサポートにより、IronPDF は高品質な PDF ドキュメントを簡単に生成します。
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End ClassIronPDFをインストールする
IronPDFライブラリを取得するには、今後のステップに従ってください。 パッケージマネージャーに以下のコードを入力してください:

代替として、NuGetパッケージマネージャーを使用して"IronPDF"パッケージを検索することができます。 IronPDFに関連するすべてのNuGetパッケージのリストから、必要なパッケージを選択してダウンロードしてください。

Using IronPDF in CefSharp C#
C#アプリケーションでIronPDFをCefSharpと統合するには、2つのステップを実行する必要があります:CefSharpが提供するChromiumベースのブラウザを使用してHTMLコンテンツをレンダリングし、その後、IronPDFを使用してそのHTML情報をPDFドキュメントに変換します。 次の例は、この統合を達成する方法を示しています:
using CefSharp;
using IronPdf;
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CefSharpIronPdfIntegration
{
public partial class MainForm : Form
{
private ChromiumWebBrowser chromeBrowser;
public MainForm()
{
InitializeComponent();
// Initialize CefSharp
CefSettings settings = new CefSettings();
Cef.Initialize(settings);
// Create the ChromiumWebBrowser instance
chromeBrowser = new ChromiumWebBrowser("https://ironpdf.com/"); // Load a URL
// Add the ChromiumWebBrowser control to the form
this.Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Fill; // Fill the entire form
// Handle when the browser component has finished loading
chromeBrowser.LoadingStateChanged += ChromeBrowser_LoadingStateChanged;
}
private async void ChromeBrowser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
{
if (!e.IsLoading)
{
// Page has finished loading
// Capture HTML content after page load completes
string htmlContent = await chromeBrowser.GetSourceAsync();
// Use IronPDF to generate a PDF from the captured HTML content
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf(htmlContent);
PDF.SaveAs("Output.pdf"); // Save the generated PDF
Console.WriteLine("PDF generated successfully.");
}
}
// Dispose of Cef resources when the form is closed to avoid unnecessary memory usage
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
Cef.Shutdown();
}
}
}Imports CefSharp
Imports IronPdf
Imports System
Imports System.Threading.Tasks
Imports System.Windows.Forms
Namespace CefSharpIronPdfIntegration
Partial Public Class MainForm
Inherits Form
Private chromeBrowser As ChromiumWebBrowser
Public Sub New()
InitializeComponent()
' Initialize CefSharp
Dim settings As New CefSettings()
Cef.Initialize(settings)
' Create the ChromiumWebBrowser instance
chromeBrowser = New ChromiumWebBrowser("https://ironpdf.com/") ' Load a URL
' Add the ChromiumWebBrowser control to the form
Me.Controls.Add(chromeBrowser)
chromeBrowser.Dock = DockStyle.Fill ' Fill the entire form
' Handle when the browser component has finished loading
AddHandler chromeBrowser.LoadingStateChanged, AddressOf ChromeBrowser_LoadingStateChanged
End Sub
Private Async Sub ChromeBrowser_LoadingStateChanged(ByVal sender As Object, ByVal e As LoadingStateChangedEventArgs)
If Not e.IsLoading Then
' Page has finished loading
' Capture HTML content after page load completes
Dim htmlContent As String = Await chromeBrowser.GetSourceAsync()
' Use IronPDF to generate a PDF from the captured HTML content
Dim Renderer = New IronPdf.HtmlToPdf()
Dim PDF = Renderer.RenderHtmlAsPdf(htmlContent)
PDF.SaveAs("Output.pdf") ' Save the generated PDF
Console.WriteLine("PDF generated successfully.")
End If
End Sub
' Dispose of Cef resources when the form is closed to avoid unnecessary memory usage
Private Sub MainForm_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
Cef.Shutdown()
End Sub
End Class
End Namespaceこのコードは、Chromiumブラウザーで読み込むHTMLコンテンツをインターセプトし、IronPDFを使用してそれをPDFドキュメントに変換するという単純な統合を示しています。 説明はこちらです:
- CefSharpを初期化してChromiumブラウザーをWindows Formsアプリケーションに統合します。
ChromiumWebBrowserコントロール: このコントロールは特定の URL(この例では"https://ironpdf.com/")をブラウザに読み込み、そのインスタンスを作成します。LoadingStateChangedイベント: ブラウザの読み込み進行を追跡します。 ページの読み込みが完了したとき(e.IsLoadingが false の場合)、ChromeBrowser はGetSourceAsync()を使用してロードされたページの HTML コンテンツを非同期でキャプチャします。- IronPDF 統合: キャプチャされた HTML コンテンツ (
htmlContent) は、IronPDF の HtmlToPdf 機能を使用して PDF ドキュメントに変換されます。 生成されたPDFは"Output.pdf"として保存されます。 - フォームを閉じる: フォームが閉じられた後、
Cef.Shutdown()を呼び出すことで、Cef リソースが適切にシャットダウンされていることを保証します。

このコードは、Chromiumブラウザーで読み込むHTMLコンテンツをインターセプトし、その後IronPDFを使用してそれをPDFドキュメントに変換するという単純な統合を示しています。 URL、エラー処理、および他の側面をアプリケーションの特定のニーズに合わせてカスタマイズしてください。 IronPDFドキュメンテーションの詳細については、IronPDF NuGet Packageをご参照ください。
結論
C#アプリケーションでのCefSharpとIronPDFの統合により、ドキュメント管理およびオンライン情報の管理に新たな可能性が開けます。 IronPDFのPDF生成機能とCefSharpが提供するChromiumベースのブラウザーを組み合わせることで、開発者は動的なウェブコンテンツを組み込んだ高品質なPDFドキュメントを生成することができる柔軟なアプリケーションを作成できます。
IronPDF の Lite パッケージは $999 用に利用可能で、一年間のソフトウェアメンテナンス契約、アップグレードオプション、永久ライセンス、30 日間の返金保証が含まれています。 30日間の試用期間中、ユーザーは試用版の透かし入りバージョンで実際のシナリオで製品を評価できます。 IronPDFのコスト、ライセンス、および無料版について詳しくは、IronPDFライセンス情報をご覧ください。 Iron Softwareの詳細については、Iron Softwareホームページをご覧ください。

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


