C#を使用してログインと認証を管理する方法

C#でログイン認証の背後にあるHTMLをPDFに変換する

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

可能であればログインを避け、ファイルまたは文字列からHTMLを直接レンダリングするのが最善の方法です。

クイックスタート: IronPDFを使ってログインの背後でHTMLをPDFに変換

IronPDFのシンプルで効果的なAPIを使用して、ログインフォームの背後にある場合でもHTMLページを簡単にPDFに変換できます。 このクイックスタートガイドでは、ChromeHttpLoginCredentialsメソッドを使用して認証及び保護されたコンテンツを取得し、シームレスな変換プロセスを保証する方法を示します。 ネットワーク認証やHTMLフォームログインに対処しているかどうかにかかわらず、IronPDFはプロセスを簡素化し、時間と労力を節約します。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronPDF をインストールします

    PM > Install-Package IronPdf

  2. このコード スニペットをコピーして実行します。

    new ChromePdfRenderer { LoginCredentials = new ChromeHttpLoginCredentials("username","password") }
        .RenderUrlAsPdf("https://example.com/protected")
        .SaveAs("secure.pdf");
  3. 実際の環境でテストするためにデプロイする

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


ベストプラクティス

IronPDFはTLSネットワーク認証(ユーザー名とパスワード)をサポートし、.NETウェブアプリがそれを簡単にサポートすることができます: ChromeHttpLoginCredentials API

ベストプラクティスは、HTMLとすべてのアセットをダウンロードするためにSystem.Net.WebClientまたはHttpClientを使用することです。 これはヘッダー、ログイン、および必要なすべてを完全にサポートします。メモリまたはディスクにダウンロードされたら、IronPDFはHTMLをPDFに変換できます。 スタイルシートや画像などのアセットはHtmlAgilityPackを使用して発見され、その後System.Net.WebClientを使用してダウンロードすることができます。

// Download HTML content from a URL
string html;
using (WebClient client = new WebClient()) 
{
    html = client.DownloadString("http://www.google.com");
}

// Load the HTML into an HtmlDocument
HtmlDocument doc = new HtmlDocument();        
doc.LoadHtml(html);

// Iterate through all image nodes and print their src attributes
foreach(HtmlNode img in doc.DocumentNode.SelectNodes("//img")) 
{
    Console.WriteLine(img.GetAttributeValue("src", null));
}
// Download HTML content from a URL
string html;
using (WebClient client = new WebClient()) 
{
    html = client.DownloadString("http://www.google.com");
}

// Load the HTML into an HtmlDocument
HtmlDocument doc = new HtmlDocument();        
doc.LoadHtml(html);

// Iterate through all image nodes and print their src attributes
foreach(HtmlNode img in doc.DocumentNode.SelectNodes("//img")) 
{
    Console.WriteLine(img.GetAttributeValue("src", null));
}
' Download HTML content from a URL
Dim html As String
Using client As New WebClient()
	html = client.DownloadString("http://www.google.com")
End Using

' Load the HTML into an HtmlDocument
Dim doc As New HtmlDocument()
doc.LoadHtml(html)

' Iterate through all image nodes and print their src attributes
For Each img As HtmlNode In doc.DocumentNode.SelectNodes("//img")
	Console.WriteLine(img.GetAttributeValue("src", Nothing))
Next img
$vbLabelText   $csharpLabel

System.Uriクラスのオーバーロードされたコンストラクタを使用して、相対Urlを絶対Urlにリベースすることができます。 HTMLドキュメント全体の相対パスを基づき直すには、<base>タグをHtmlAgilityPackを使用してヘッダーに追加します。 .@--BRACKET-CLOSE--@@。

ネットワーク認証を使用してログイン

ほとんどのASP.NETアプリケーションはネットワーク認証をサポートしており、HTMLフォームの投稿よりも信頼性があります。

:path=/static-assets/pdf/content-code-examples/how-to/logins-username-password.cs
using IronPdf;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer
{
    // setting login credentials to bypass basic authentication
    LoginCredentials = new ChromeHttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};

var uri = new Uri("http://localhost:51169/Invoice");

// Render web URL to PDF
PdfDocument pdf = renderer.RenderUrlAsPdf(uri);

// Export PDF
pdf.SaveAs("UrlToPdfExample.Pdf");
Imports IronPdf
Imports System

Private renderer As New ChromePdfRenderer With {
	.LoginCredentials = New ChromeHttpLoginCredentials() With {
		.NetworkUsername = "testUser",
		.NetworkPassword = "testPassword"
	}
}

Private uri = New Uri("http://localhost:51169/Invoice")

' Render web URL to PDF
Private pdf As PdfDocument = renderer.RenderUrlAsPdf(uri)

' Export PDF
pdf.SaveAs("UrlToPdfExample.Pdf")
$vbLabelText   $csharpLabel

HTMLフォームを使用してログイン

HTMLフォームにデータを送信してログインすることは、前述の例のようにChromeHttpLoginCredentialsクラスを使用しても達成できます。 IronPDFのChromeHttpLoginCredentials APIを参照。

考慮してください:

  • ログインデータはHTMLフォームのACTION属性で指定されたURLに投稿される必要があります。 これはHttpLoginCredentialsのLoginFormUrl属性として設定する必要があります。 これは実際にPDFとしてレンダリングしたいURLとは異なる場合があります。
  • 送信されるデータはHTMLフォーム内のすべての入力とテキストエリアを表す必要があります。 name属性は各変数の名前を定義します(一般に誤解されているようにidではありません)。
  • 一部のウェブサイトはこの種の機械ログインを積極的に保護する場合があります。

MVC

次の回避策により、.NET MVCビューをプログラム的に文字列にレンダリングすることが可能になり、MVCログインを回避しつつもビューを忠実にレンダリングするのに非常に役立ちます。

// Converts an MVC partial view to a string
public static string RenderPartialViewToString(this Controller controller, string viewPath, object model = null)
{
    try
    {
        // Set the model
        var context = controller.ControllerContext;
        controller.ViewData.Model = model;

        using (var sw = new StringWriter())
        {
            // Find the partial view
            var viewResult = ViewEngines.Engines.FindPartialView(context, viewPath);

            if (viewResult.View == null)
            {
                throw new Exception($"Partial view {viewPath} could not be found.");
            }

            // Create a view context
            var viewContext = new ViewContext(context, viewResult.View, context.Controller.ViewData, context.Controller.TempData, sw);

            // Render the view
            viewResult.View.Render(viewContext, sw);
            viewResult.ViewEngine.ReleaseView(context, viewResult.View);

            return sw.GetStringBuilder().ToString();
        }
    }
    catch (Exception ex)
    {
        // Return error message if there is an exception
        return ex.Message;
    }
}
// Converts an MVC partial view to a string
public static string RenderPartialViewToString(this Controller controller, string viewPath, object model = null)
{
    try
    {
        // Set the model
        var context = controller.ControllerContext;
        controller.ViewData.Model = model;

        using (var sw = new StringWriter())
        {
            // Find the partial view
            var viewResult = ViewEngines.Engines.FindPartialView(context, viewPath);

            if (viewResult.View == null)
            {
                throw new Exception($"Partial view {viewPath} could not be found.");
            }

            // Create a view context
            var viewContext = new ViewContext(context, viewResult.View, context.Controller.ViewData, context.Controller.TempData, sw);

            // Render the view
            viewResult.View.Render(viewContext, sw);
            viewResult.ViewEngine.ReleaseView(context, viewResult.View);

            return sw.GetStringBuilder().ToString();
        }
    }
    catch (Exception ex)
    {
        // Return error message if there is an exception
        return ex.Message;
    }
}
' Converts an MVC partial view to a string
<System.Runtime.CompilerServices.Extension> _
Public Function RenderPartialViewToString(ByVal controller As Controller, ByVal viewPath As String, Optional ByVal model As Object = Nothing) As String
	Try
		' Set the model
		Dim context = controller.ControllerContext
		controller.ViewData.Model = model

		Using sw = New StringWriter()
			' Find the partial view
			Dim viewResult = ViewEngines.Engines.FindPartialView(context, viewPath)

			If viewResult.View Is Nothing Then
				Throw New Exception($"Partial view {viewPath} could not be found.")
			End If

			' Create a view context
			Dim viewContext As New ViewContext(context, viewResult.View, context.Controller.ViewData, context.Controller.TempData, sw)

			' Render the view
			viewResult.View.Render(viewContext, sw)
			viewResult.ViewEngine.ReleaseView(context, viewResult.View)

			Return sw.GetStringBuilder().ToString()
		End Using
	Catch ex As Exception
		' Return error message if there is an exception
		Return ex.Message
	End Try
End Function
$vbLabelText   $csharpLabel

次に何ができるのかを見てみましょうか? 私たちのチュートリアルページをご覧ください: PDFの変換

よくある質問

ログイン認証なしでHTMLをPDFに変換するにはどうすればよいですか?

ログイン認証なしでHTMLをPDFに変換するには、IronPDFを使用してファイルや文字列からHTMLを直接レンダリングします。この方法は認証の必要性を完全に回避します。

C#でHTMLをPDFに変換するための初期のステップは何ですか?

NuGetからC# IronPDFライブラリをダウンロードすることから始めます。インストールが完了したら、そのメソッドを使用して、ログイン認証のシナリオを処理しながら、HTMLドキュメントを直接PDFにレンダリングできます。

PDF変換用のHTMLコンテンツを安全にダウンロードするために推奨されるツールは何ですか?

System.Net.WebClientまたはHttpClientを使用して、スタイルシートや画像のようなHTMLコンテンツをダウンロードします。これらのツールはヘッダーとログインをサポートします。HtmlAgilityPackを使用して、アセットの検出を管理し、すべての必要なリソースがダウンロードされることを保証できます。

IronPDFはHTMLをPDFに変換するためのネットワーク認証をどのように処理しますか?

IronPDFは、LoginCredentialsプロパティを使用してTLSネットワーク認証をサポートし、ASP.NETアプリケーションでの認証処理に安全な方法を提供します。

IronPDFを使用してHTMLフォーム認証を行うことは可能ですか?

はい、IronPDFのChromeHttpLoginCredentialsクラスを使用してHTMLフォーム認証を処理できます。フォームのACTION属性で指定された正しいURLにログインデータが送信されるようにしてください。

ビューをPDFに変換する際にMVCのログイン認証を回避するにはどうすればよいですか?

文字列としてMVCビューをプログラムでレンダリングすることで、MVCログインを回避しながらビューの正確なレンダリングを確保できます。

PDF変換のためにHTMLフォーム認証を使用する際にどのような注意を払うべきですか?

すべてのフォーム入力とテキストエリアが、その名前属性を使用して投稿データに正しく表現されていることを確認してください。一部のウェブサイトでは機械ログインを防ぐためにプロテクションを持っている可能性があることを承知してください。

ログイン資格情報を使用して保護された URL を PDF に変換する場合、IronPDF は .NET 10 と完全に互換性がありますか?

はい — IronPDF は、保護された URL を PDF にレンダリングするときに、ネットワークおよびフォームベースの認証にChromeHttpLoginCredentialsを使用するなど、.NET 10 との完全な互換性をサポートしています。([ironpdf.com](https://ironpdf.com/blog/net-help/net-10-features/?utm_source=openai))

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

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

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

準備はできましたか?
Nuget ダウンロード 16,493,056 | Version: 2025.11 リリース