.NET ヘルプ

Cefsharp.WPF.NET Core(開発者向けの動作方法)

公開済み 2024年1月27日
共有:

イントロダクション

開発者は、現在、Chromiumの強力なウェブブラウザーエンジンを、.NETデスクトップアプリおよびWPFアプリにCefSharpを使用して簡単に統合できます。CefSharpは、Chromium Embedded Frameworkを取り囲む革新的な.NETラッパーです。 .NETアプリ開発者がカスタマイズされたデスクトップインターフェース内でリッチなウェブ体験を提供することを可能にするのが、CefSharpです。これにより、外部依存関係なしにChromiumのウェブ機能や開発者ツールを活用することができます。 カスタマイズオプションやブラウザの動作制御など、幅広い新機能を備えたこのフレームワークは、HTML5、CSS3、JavaScriptといった最新のウェブ技術を統合することを容易にします。

CefSharpのクロスプラットフォームの相互運用性およびウェブコンテンツの相互作用機能によって、ユーザーのデスクトップソリューションにおけるウェブベースのコンテンツとのやり取りと体験が変革され、デスクトッププログラムが向上し、アプリケーション環境内でダイナミックなウェブサーフィン体験が可能になります。 この記事では、コードスニペットを使用してCefSharpのオープンソース版について詳しく見ていきます。

CefSharpの使い方

  1. Visual Studioプロジェクトから新しいWindowsフォームを作成します。

  2. ライブラリ CefSharp をインストールします。

  3. CefSharpの最小限でコンパイルが可能な必須オブジェクトを宣言します。

  4. 読み込む必要があるURLを入力してください。

  5. コードを実行してください。

    CefSharp.WinForms をインストール:

    • Visual Studio の NuGet パッケージ マネージャーを使用するのが、CefSharp をインストールする最も簡単な方法です。
    • Visual Studioでプロジェクトを起動します。
    • ソリューション エクスプローラーで、プロジェクトを右クリックします。
    • 「NuGet パッケージの管理」を選択してください。
    • 「ブラウズ」タブに移動して、「CefSharp」を検索してください。
    • CefSharp パッケージを選択(CefSharp.WpfCefSharp.WinFormsなど)プロジェクトに適したもの。
    • パッケージをプロジェクトに含めるには、「Install」をクリックしてください。

      CefSharpの重要性

CefSharp(Chromium Embedded Framework for .NET)は、IronPDFでPDF機能を強化するために重要な役割を果たします。それは、Webベースのコンテンツを表示および操作するための強力なツールを提供し、開発者がWebページをPDFファイルに変換する際の精度と柔軟性を高めます。CefSharpを使用することで、最新のWeb標準に準拠した高品質なPDF生成が可能となり、ユーザーに優れたエクスペリエンスを提供できます。また、IronPDFの機能をフルに活用するためには、CefSharpの理解と適切な実装が不可欠です。

CefSharpは、開発者がデスクトップアプリと自動化プロジェクトを構築する際に、統合されたウェブサーフィン機能のあるChromiumのウェブブラウザーエンジンの力を.NETアプリケーションに簡単に統合することで、その方法を大きく変えるフレームワークです。 CefSharpの助けを借りて、HTML5サポートを備えた埋め込みUIを含むリモートウェブコンテンツを表示することができます。

CefSharpの紹介で強調すべき重要な点は以下の通りです:

  • クロミウム埋め込みフレームワーク(CEF)Chromiumブラウザーの機能を他のプログラムに統合するためのCefSharpのフレームワークとして機能します。 Google の Chromium プロジェクトを使用することにより、CefSharp はデスクトッププログラムに高度なウェブ機能を強化します。
  • .NET統合: CefSharpはCefの強力な.NETラッパーです。 プログラマーがC#やその他の.NET言語を使用して、デスクトップ.NETアプリケーションに高速なウェブブラウザーを統合するのを容易にします。
  • デスクトップアプリでのウェブサーフィン:CefSharpを使用すると、開発者は簡単にウェブブラウジング機能をデスクトッププログラムに組み込むことができます。 この機能は、開発者に多くの可能性を提供し、オンライン素材をユーザーインターフェースに組み込んだり、ウェブ対応のユニークなデスクトップアプリを作成したりすることを可能にします。 JavaScriptイベントが発生したときにコールバックを受け取ることができます。
  • リッチウェブテクノロジーのサポート: CefSharpを使用することで、開発者はChromiumが提供するすべての機能を利用できます。これには、HTML5、CSS3、JavaScript、WebGL、およびその他の最新のウェブ標準のサポートが含まれます。 これにより、デスクトッププログラムに最先端のウェブ技術を含めることが可能になります。
  • 柔軟性とカスタマイズ: CefSharpは開発者に多くの柔軟性とカスタマイズの可能性を提供し、イベントの処理、JavaScriptの実行、オンラインコンテンツとの対話、および特定のアプリケーションニーズに合ったブラウザの動作を変更できるようにします。 WebGLを使用したCefSharpは、ハードウェアアクセラレーションのために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();
        }
    }
}
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
VB   C#

このコードは、CefSharpを使用してChromiumに基づく埋め込みWebブラウザーを備えた基本的なWinFormsアプリケーションを開発します。 以下は説明です。

  • CefSettingsを使用してCefSharp設定を初期化します。
  • ChromiumWebBrowser(クロミウムウェブブラウザ):このクラスは、CefSharp によって提供されるウェブブラウザコントロールを表します。
  • ロードステート変更イベントは、ページの読み込みが完了したときなど、ブラウザのロード状態の変化を処理します。
  • MainForm_FormClosing イベントは、フォームを閉じる際にCefリソースが適切にシャットダウンされることを保証します。

    基本的な例として、コンパイルの準備ができたCefSharpを使用して構築されたアプリについては、 를 참조してくださいGitHub上の最小限のサンプルプロジェクト. このプロジェクトのソースには、より複雑なサンプルプロジェクトが含まれています。

CefSharpとIronPDF

統合するIronPDFCefSharpのChromium Embedded Frameworkを使用したPDF生成機能(CEF)ブラウザでは、.NET アプリケーションで CefSharp と IronPDF を一緒に使用する必要があります。 しかし、2022年1月の最新バージョンでは、CefSharpとIronPDFの間に直接的な即時使用可能なインターフェースはありません。

CefSharpの主な目標は、Chromiumウェブブラウザーエンジンを.NETプログラムに統合し、アプリケーションのユーザーインターフェイスを通じてオンラインコンテンツを表示および操作できるようにすることです。 CefSharpは、WPFおよびWindows Formsアプリケーション向けにブラウザコントロールを提供します。

CefSharpとIronPDFは直接統合されていませんが、開発者は依然として同じアプリケーションコンテキスト内で両方のライブラリを使用することができます。

IronPDF をインストール

IronPDFライブラリを取得するには、次の手順に従う必要があります。 パッケージマネージャーに次のコードを入力してください:

Install-Package IronPdf 
dotnet add package IronPdf

CefSharp.Wpf.NetCore(開発者向けの動作説明):図1 - IronPDFのインストール

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

CefSharp.Wpf.NetCore(開発者向けの動作方法): 図 2 - IronPDF

CefSharp C#でIronPDFを使う

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();
        }
    }
}
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
VB   C#

このコードは、Chromium ブラウザにロードされた HTML コンテンツをインターセプトし、IronPDF を使用して PDF ドキュメントに変換するシンプルな統合を示しています。 以下は説明です:

  • CefSharpを初期化して、Windows FormsアプリケーションにChromiumブラウザを統合します。
  • ChromiumWebBrowser コントロール:このコントロールは特定のURLを読み込みます(この例では、「https://ironpdf.com/」)ブラウザに読み込み、そのインスタンスを作成します
  • LoadingStateChanged イベント:ブラウザの読み込み進行状況を追跡します。 ページの読み込みが完了したら(e.IsLoading は false です)ChromeBrowserは、ロードされたページのHTMLコンテンツを非同期にキャプチャするためにGetSourceAsyncを使用します()`.
  • IronPDFインテグレーション: キャプチャされたHTMLコンテンツ(htmlContent)は、IronPDFのHtmlToPdf機能を使用してPDFドキュメントに変換されます。 生成されたPDFは「Output.pdf」として保存されます。
  • フォームの閉じる: Cef.Shutdownを呼び出してCefリソースを適切にシャットダウンすることを確認してください。()フォームが閉じられた後。

    CefSharp.Wpf.NetCore(開発者向けの動作方法):図3 - 出力

    このコードは、Chromiumブラウザーで読み込まれたHTMLコンテンツをインターセプトし、IronPDFを使用してPDFドキュメントに変換するシンプルな統合を示しています。 アプリケーションの特定のニーズに応じて、URL、エラーハンドリング、および他の側面をカスタマイズします。 IronPDFドキュメントの詳細についてはIronPDF NuGetパッケージ.

結論

C#アプリケーションにおけるIronPDFとCefSharpの統合により、ドキュメントやオンライン情報の管理に新たな可能性が広がります。 IronPDFに搭載されたPDF生成機能をCefSharpのChromiumベースのブラウザと組み合わせることで、開発者は動的なWebコンテンツを取り入れながら高品質なPDFドキュメントを生成できる柔軟なアプリケーションを作成することができます。

IronPDFのLiteパッケージは、$liteLicenseで利用可能であり、1年間のソフトウェアメンテナンス契約、アップグレードオプション、永久ライセンス、および30日間の返金保証が含まれます。 30日間の試用期間中、ユーザーはウォーターマーク付き試用版を使用して、現実のシナリオで製品を評価できます。 以下のURLにアクセスして、IronPDF のコスト、ライセンス、無料バージョンについて詳しく学んでください: IronPDFライセンス情報. Iron Softwareについての詳細は、以下のサイトをご覧ください。Iron Software ウェブサイト.

< 以前
Npgsql C# .NET(開発者向けの仕組み)
次へ >
Microsoft Logging C#(開発者向けの仕組み)