C#でのPDFレンダリング用プロキシサーバーの設定方法
IronPDFでのプロキシ設定は、IronPDF のプロパティではなく、RenderHtmlAsPdf() のオーバーロードでの メソッドパラメータです。 この区別は重要です。RenderHtmlAsPdf() はプロキシパラメータをまったく持たないため、企業プロキシの背後でライブURLをレンダリングする際には異なる戦略が必要です。 null(デフォルト)を渡すと、IronPDFは直接接続します。
このガイドでは、本番環境で遭遇するすべてのプロキシシナリオをカバーします:直接プロキシ文字列、認証された企業プロキシ、RenderUrlAsPdf の回避策、Dockerコンテナ設定、CI/CDパイプライン統合、SSLインターセプトおよびNTLM認証の一般的なトラブルシューティングパターン。
30日間の無料トライアルを開始して、環境でのプロキシ設定のテストを行ってください。
クイックスタート: プロキシを介してPDFをレンダリングIronPDFのオプションパラメータ proxy は、企業プロキシの背後に配信されたライブウェブページを変換するのに役立ちます。 このコードスニペットを使用して迅速に開始してください。
-
1Install IronPDF with NuGet Package Manager
-
2このコード スニペットをコピーして実行します。
using IronPdf; var renderer = new ChromePdfRenderer(); // Proxy is the third parameter — not a render option PdfDocument pdf = renderer.RenderHtmlAsPdf( "<h1>Hello from behind the proxy</h1>", baseUrlOrPath: null, proxy: "http://proxy.co/rp.local:8080" ); pdf.SaveAs("proxied-output.pdf");Imports IronPdf Dim renderer = New ChromePdfRenderer() ' Proxy is the third parameter — not a render option Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello from behind the proxy</h1>", baseUrlOrPath:=Nothing, proxy:="http://proxy.co/rp.local:8080") pdf.SaveAs("proxied-output.pdf")Imports IronPdf Dim renderer = New ChromePdfRenderer() ' Proxy is the third parameter — not a render option Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello from behind the proxy</h1>", baseUrlOrPath:=Nothing, proxy:="http://proxy.co/rp.local:8080") pdf.SaveAs("proxied-output.pdf") -
3実際の環境でテストするためにデプロイする
今日プロジェクトで IronPDF を使い始めましょう無料トライアル
最小のワークフロー (3つのステップ)
- NuGet経由でIronPDFをインストールします:
Install-Package IronPdf - プロキシ文字列を
RenderHtmlAsPdfの第3パラメータとして渡します - フォーマット:認証プロキシ用の
http(s)://host:portまたはhttp(s)://user:pass@host:port
RenderHtmlAsPdf にプロキシをどのように渡しますか?
Proxy バラメータは4つのメソッドシグネチャのオプションのstringです。
// Instance methods
PdfDocument RenderHtmlAsPdf(string Html, string BaseUrlOrPath, string Proxy = null)
PdfDocument RenderHtmlAsPdf(string Html, Uri BaseUrl = null, string Proxy = null)
// Static methods
PdfDocument StaticRenderHtmlAsPdf(string Html, ChromePdfRenderOptions Options = null, string Proxy = null)
PdfDocument StaticRenderHtmlAsPdf(string Html, string BaseUrlOrPath, ChromePdfRenderOptions Options = null, string Proxy = null)// Instance methods
PdfDocument RenderHtmlAsPdf(string Html, string BaseUrlOrPath, string Proxy = null)
PdfDocument RenderHtmlAsPdf(string Html, Uri BaseUrl = null, string Proxy = null)
// Static methods
PdfDocument StaticRenderHtmlAsPdf(string Html, ChromePdfRenderOptions Options = null, string Proxy = null)
PdfDocument StaticRenderHtmlAsPdf(string Html, string BaseUrlOrPath, ChromePdfRenderOptions Options = null, string Proxy = null)' Instance methods
Function RenderHtmlAsPdf(Html As String, BaseUrlOrPath As String, Optional Proxy As String = Nothing) As PdfDocument
End Function
Function RenderHtmlAsPdf(Html As String, Optional BaseUrl As Uri = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
' Static methods
Shared Function StaticRenderHtmlAsPdf(Html As String, Optional Options As ChromePdfRenderOptions = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
Shared Function StaticRenderHtmlAsPdf(Html As String, BaseUrlOrPath As String, Optional Options As ChromePdfRenderOptions = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function' Instance methods
Function RenderHtmlAsPdf(Html As String, BaseUrlOrPath As String, Optional Proxy As String = Nothing) As PdfDocument
End Function
Function RenderHtmlAsPdf(Html As String, Optional BaseUrl As Uri = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
' Static methods
Shared Function StaticRenderHtmlAsPdf(Html As String, Optional Options As ChromePdfRenderOptions = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
Shared Function StaticRenderHtmlAsPdf(Html As String, BaseUrlOrPath As String, Optional Options As ChromePdfRenderOptions = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Functionこのパラメータがnull(デフォルト)の場合、IronPDFのChromiumエンジンは外部リソースに直接接続します - スタイルシート、画像、フォント、HTML内で参照されるJavaScriptファイル。 プロキシ文字列を提供すると、レンダリングエンジンからのすべてのHTTP/HTTPSリクエストがそのプロキシを経由しています。
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// Direct connection (default — no proxy)
var pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>");
// Through an unauthenticated proxy
var pdfProxied = renderer.RenderHtmlAsPdf(
"<h1>Proxied</h1>",
BaseUrlOrPath: null,
Proxy: "http://squid.internal:3128"
);
// Using the Uri overload
var pdfUri = renderer.RenderHtmlAsPdf(
"<h1>Proxied via Uri overload</h1>",
BaseUrl: new Uri("https://assets.example.com/"),
Proxy: "https://proxy.corp.local:8443"
);using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// Direct connection (default — no proxy)
var pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>");
// Through an unauthenticated proxy
var pdfProxied = renderer.RenderHtmlAsPdf(
"<h1>Proxied</h1>",
BaseUrlOrPath: null,
Proxy: "http://squid.internal:3128"
);
// Using the Uri overload
var pdfUri = renderer.RenderHtmlAsPdf(
"<h1>Proxied via Uri overload</h1>",
BaseUrl: new Uri("https://assets.example.com/"),
Proxy: "https://proxy.corp.local:8443"
);Imports IronPdf
Imports System
Dim renderer = New ChromePdfRenderer()
' Direct connection (default — no proxy)
Dim pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>")
' Through an unauthenticated proxy
Dim pdfProxied = renderer.RenderHtmlAsPdf(
"<h1>Proxied</h1>",
BaseUrlOrPath:=Nothing,
Proxy:="http://squid.internal:3128"
)
' Using the Uri overload
Dim pdfUri = renderer.RenderHtmlAsPdf(
"<h1>Proxied via Uri overload</h1>",
BaseUrl:=New Uri("https://assets.example.com/"),
Proxy:="https://proxy.corp.local:8443"
)Imports IronPdf
Imports System
Dim renderer = New ChromePdfRenderer()
' Direct connection (default — no proxy)
Dim pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>")
' Through an unauthenticated proxy
Dim pdfProxied = renderer.RenderHtmlAsPdf(
"<h1>Proxied</h1>",
BaseUrlOrPath:=Nothing,
Proxy:="http://squid.internal:3128"
)
' Using the Uri overload
Dim pdfUri = renderer.RenderHtmlAsPdf(
"<h1>Proxied via Uri overload</h1>",
BaseUrl:=New Uri("https://assets.example.com/"),
Proxy:="https://proxy.corp.local:8443"
)プロキシ文字列はhttp:// および https:// スキームの両方をサポートします。 プロキシ自体があなたのアプリケーションとプロキシサーバー間の接続のTLS暗号化を必要とする場合は、https:// を使用します。 ここでのスキームは、最終リソースではなくプロキシ接続を指します - http:// プロキシはなおもCONNECTトンネリングを通じてhttps:// リソースを取得できます。
静的メソッドのバリエーションは同じプロキシパラメータを受け入れます。これは、コンソールアプリケーションやユニットテストでの一度限りのレンダリングに便利です。
// Static render with proxy — no renderer instance needed
var pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
"<h1>Static render through proxy</h1>",
options: null,
proxy: "http://proxy.corp.local:8080"
);// Static render with proxy — no renderer instance needed
var pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
"<h1>Static render through proxy</h1>",
options: null,
proxy: "http://proxy.corp.local:8080"
);' Static render with proxy — no renderer instance needed
Dim pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
"<h1>Static render through proxy</h1>",
options:=Nothing,
proxy:="http://proxy.corp.local:8080"
)' Static render with proxy — no renderer instance needed
Dim pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
"<h1>Static render through proxy</h1>",
options:=Nothing,
proxy:="http://proxy.corp.local:8080"
)重要: Proxy のプロパティはありません。 そこに探さないでください。 プロキシはRenderHtmlAsPdf および FromHtml オーバーロードでのメソッドパラメータです。
企業プロキシで認証するには?
ほとんどの企業プロキシは認証情報を必要とします。 プロキシURLにhttp(s)://username:password@host:port フォーマットを使用して直接埋め込みます:
using IronPdf;
var renderer = new ChromePdfRenderer();
string proxyWithAuth = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080";
PdfDocument pdf = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: @"C:\templates\assets\",
proxy: proxyWithAuth
);
pdf.SaveAs("report.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
string proxyWithAuth = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080";
PdfDocument pdf = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: @"C:\templates\assets\",
proxy: proxyWithAuth
);
pdf.SaveAs("report.pdf");Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim proxyWithAuth As String = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: "C:\templates\assets\",
proxy:=proxyWithAuth
)
pdf.SaveAs("report.pdf")Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim proxyWithAuth As String = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: "C:\templates\assets\",
proxy:=proxyWithAuth
)
pdf.SaveAs("report.pdf")パスワード内の特殊文字をURLエンコードします。 あなたのパスワードが/、または他の予約されたURI文字を含んでいる場合、それらはパーセントエンコードされる必要があります。 一般的なエンコード:
| 文字 | エンコード |
|---|---|
@ | %40 |
# | %23 |
: | %3A |
/ | %2F |
! | %21 |
% | %25 |
プログラム的にパスワードをエンコードするにはUri.EscapeDataString() を使用します:
string rawPassword = "P@ssw0rd!";
string encoded = Uri.EscapeDataString(rawPassword); // "P%40ssw0rd%21"
string proxy = $"http://svc-account:{encoded}@proxy.co/rp.local:8080";string rawPassword = "P@ssw0rd!";
string encoded = Uri.EscapeDataString(rawPassword); // "P%40ssw0rd%21"
string proxy = $"http://svc-account:{encoded}@proxy.co/rp.local:8080";Imports System
Dim rawPassword As String = "P@ssw0rd!"
Dim encoded As String = Uri.EscapeDataString(rawPassword) ' "P%40ssw0rd%21"
Dim proxy As String = $"http://svc-account:{encoded}@proxy.co/rp.local:8080"Imports System
Dim rawPassword As String = "P@ssw0rd!"
Dim encoded As String = Uri.EscapeDataString(rawPassword) ' "P%40ssw0rd%21"
Dim proxy As String = $"http://svc-account:{encoded}@proxy.co/rp.local:8080"プロキシ認証とウェブページ認証を混同しないでください。 ChromeHttpLoginCredentials.NetworkUsername および NetworkPassword プロパティはレンダリングされるウェブページ(NTLM/Negotiateを使用したウェブサイト)に対して認証を行いますが、プロキシサーバーに対してではありません。 プロキシ認証の場合、認証情報は上記のようにプロキシURL文字列に入れます。
プロキシの背後にあるURLをレンダリングするには?
RenderUrlToPdf はプロキシパラメータを受け入れません。 これは意図的なAPIデザインの選択であり、NavigateUrl はChromiumをURLにナビゲートし、そのナビゲーションのプロキシ設定はHTMLレンダリング中のリソースローディングとは異なる方法で処理されます。
推奨される回避策:RenderHtmlAsPdfにHTMLストリングを渡します(これにより参照されたアセット - 画像、CSS、フォント - もプロキシ経由でルーティングされます)。
using IronPdf;
using System.Net;
using System.Net.Http;
// Step 1: Configure HttpClient with the corporate proxy
var proxy = new WebProxy("http://proxy.corp.local:8080")
{
Credentials = new NetworkCredential("svc-account", "P@ssw0rd!")
};
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var httpClient = new HttpClient(handler);
// Step 2: Fetch the HTML from the target URL
string targetUrl = "https://dashboard.internal.corp/quarterly-report";
string html = await httpClient.GetStringAsync(targetUrl);
// Step 3: Render the fetched HTML, with the proxy for asset loading
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
html,
BaseUrlOrPath: targetUrl, // Resolves relative asset paths against the original URL
Proxy: "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
);
pdf.SaveAs("quarterly-report.pdf");using IronPdf;
using System.Net;
using System.Net.Http;
// Step 1: Configure HttpClient with the corporate proxy
var proxy = new WebProxy("http://proxy.corp.local:8080")
{
Credentials = new NetworkCredential("svc-account", "P@ssw0rd!")
};
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var httpClient = new HttpClient(handler);
// Step 2: Fetch the HTML from the target URL
string targetUrl = "https://dashboard.internal.corp/quarterly-report";
string html = await httpClient.GetStringAsync(targetUrl);
// Step 3: Render the fetched HTML, with the proxy for asset loading
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
html,
BaseUrlOrPath: targetUrl, // Resolves relative asset paths against the original URL
Proxy: "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
);
pdf.SaveAs("quarterly-report.pdf");Imports IronPdf
Imports System.Net
Imports System.Net.Http
' Step 1: Configure HttpClient with the corporate proxy
Dim proxy = New WebProxy("http://proxy.corp.local:8080") With {
.Credentials = New NetworkCredential("svc-account", "P@ssw0rd!")
}
Dim handler = New HttpClientHandler With {.Proxy = proxy, .UseProxy = True}
Using httpClient As New HttpClient(handler)
' Step 2: Fetch the HTML from the target URL
Dim targetUrl As String = "https://dashboard.internal.corp/quarterly-report"
Dim html As String = Await httpClient.GetStringAsync(targetUrl)
' Step 3: Render the fetched HTML, with the proxy for asset loading
Dim renderer = New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
html,
BaseUrlOrPath:=targetUrl, ' Resolves relative asset paths against the original URL
Proxy:="http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
)
pdf.SaveAs("quarterly-report.pdf")
End UsingImports IronPdf
Imports System.Net
Imports System.Net.Http
' Step 1: Configure HttpClient with the corporate proxy
Dim proxy = New WebProxy("http://proxy.corp.local:8080") With {
.Credentials = New NetworkCredential("svc-account", "P@ssw0rd!")
}
Dim handler = New HttpClientHandler With {.Proxy = proxy, .UseProxy = True}
Using httpClient As New HttpClient(handler)
' Step 2: Fetch the HTML from the target URL
Dim targetUrl As String = "https://dashboard.internal.corp/quarterly-report"
Dim html As String = Await httpClient.GetStringAsync(targetUrl)
' Step 3: Render the fetched HTML, with the proxy for asset loading
Dim renderer = New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
html,
BaseUrlOrPath:=targetUrl, ' Resolves relative asset paths against the original URL
Proxy:="http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
)
pdf.SaveAs("quarterly-report.pdf")
End Using<link href="/css/styles.css">)が正しく解決されるようにします。 このproxyパラメータは、レンダリング中にそれらのアセットリクエストがプロキシを経由してルーティングされることを保証します。
このパターンは認証後のページにも有効です - 適切なクッキーやヘッダーでHttpClientを設定してから、認証されたHTMLをIronPDFに渡します。 HTTPリクエストヘッダー ハウツーは、認証されたリクエストのためのヘッダー構成をカバーしています。
ページがJavaScriptに依存してレンダリングされる場合(SPAs、Reactダッシュボード、Angularアプリ)、取得したHTMLには初期のシェルしか含まれず、HttpClient取得中にクライアント側レンダリングは実行されません。 その場合、システムレベルのRenderHtmlAsPdf()に渡します。
Dockerコンテナでプロキシをどのように設定しますか?
コンテナ化された環境では、メソッドごとのパラメータよりもシステムレベルのプロキシ設定を好むことがあります。 IronPDFのChromiumエンジンは、Linuxコンテナがアウトバウンドトラフィックルーティングに使用する標準のHTTP_PROXY および HTTPS_PROXY 環境変数を尊重します。
これらをDockerfileに設定します:
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# System-level proxy for all outbound HTTP/HTTPS traffic
ENV HTTP_PROXY=http://proxy.co/rp.local:8080
ENV HTTPS_PROXY=http://proxy.co/rp.local:8080
ENV NO_PROXY=localhost,127.0.0.1,.internal.co/rp
# Install IronPDF dependencies (fonts, etc.)
RUN apt-get update && apt-get install -y \
libgdiplus \
libc6-dev \
fonts-liberation \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
これらの環境変数が設定されている場合、プロキシパラメータなしでRenderHtmlAsPdfを呼び出すことができ、Chromiumはシステムレベルの設定を自動的に取得します:
// No proxy parameter needed — Chromium uses HTTP_PROXY env var
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);// No proxy parameter needed — Chromium uses HTTP_PROXY env var
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);' No proxy parameter needed — Chromium uses HTTP_PROXY env var
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)' No proxy parameter needed — Chromium uses HTTP_PROXY env var
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)RenderHtmlAsPdf()は内部リソースにとって重要です。 それがないと、内部サービス(ローカルCSSサーバーやKubernetesクラスター内で実行されている画像CDNなど)へのリクエストが不必要にプロキシを経由します。 プロキシをバイパスすべきホスト名とドメインをカンマで区切ります。
一般トラフィックに対するシステムレベルのプロキシと特定のレンダーに異なるプロキシが必要な場合、メソッドパラメータが環境変数より優先されます。 必要な場合に、レンダーごとの制御を提供します。
CI/CDパイプラインでのプロキシの取り扱い方法は?
企業ネットワーク内のCI/CDランナーはプロキシの後ろに位置することがよくあります。 ビルド変数またはシークレットとしてプロキシURLを渡してください。認証情報をソース管理にハードコードしないでください。
GitHub Actions:
jobs:
generate-pdf:
runs-on: ubuntu-latest
env:
HTTP_PROXY: ${{secrets.CORP_PROXY_URL}}
HTTPS_PROXY: ${{secrets.CORP_PROXY_URL}}
steps:
- uses: actions/checkout@v4
- run: dotnet build
- run: dotnet test
Azure DevOps:
variables:
- group: proxy-settings # Contains PROXY_URL secret
steps:
- script: |
export HTTP_PROXY=$(PROXY_URL)
export HTTPS_PROXY=$(PROXY_URL)
dotnet run --project PdfGenerator
displayName: 'Generate PDFs behind proxy'
Jenkins(宣言型パイプライン):
environment {
HTTP_PROXY = credentials('corp-proxy-url')
HTTPS_PROXY = credentials('corp-proxy-url')
}
いずれのケースでも、Chromiumは環境変数を自動的に読みます。 明示的な制御を希望する場合は、環境からプロキシURLを読み取り、それをメソッドパラメータとして渡します:
string? proxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");
var pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath: null, proxy: proxy);string? proxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");
var pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath: null, proxy: proxy);Option Strict On
Option Infer On
Dim proxy As String = Environment.GetEnvironmentVariable("HTTPS_PROXY")
Dim pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath:=Nothing, proxy:=proxy)Option Strict On
Option Infer On
Dim proxy As String = Environment.GetEnvironmentVariable("HTTPS_PROXY")
Dim pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath:=Nothing, proxy:=proxy)プロキシの問題をどのようにトラブルシューティングしますか?
タイムアウトエラー: 企業のプロキシはレイテンシを追加します。 レンダリングのタイムアウトを60秒のデフォルトから増やします:
renderer.RenderingOptions.Timeout = 120; // secondsrenderer.RenderingOptions.Timeout = 120; // secondsrenderer.RenderingOptions.Timeout = 120 ' secondsrenderer.RenderingOptions.Timeout = 120 ' secondsこれはRenderTimeoutプロパティです - これは、Chromiumがページロードとリソース取得を結合して待機する時間を制御します。 プロキシがリクエストごとに5–10秒のレイテンシを追加し、ページが20以上の外部リソースをロードする場合、60秒では不十分な可能性があります。
SSLインターセプション(MITMプロキシ): 多くの企業プロキシは、企業のルートCA証明書を使用してHTTPSトラフィックを復号化および再暗号化します。 Chromiumはデフォルトで企業CAを信頼しないため、これらの接続を拒否します。 2つの解決策:
- コンテナまたはホストの信頼されたルートストアに企業CA証明書をインストールする。 Linux上で:
update-ca-certificatesを実行します。 - 開発時のみ、証明書の検証を無効にできます - ただし、これを本番環境で行わないでください。 常に適切な証明書をインストールするのが安全なアプローチです。
NTLM認証:インラインのuser:pass@hostフォーマットはベーシックおよびダイジェストプロキシ認証をサポートします。 NTLM(Windows中心の企業で一般的)は、プロキシURL文字列ではサポートされていません。 回避策として、CNTLMのようなローカルでNTLM-to-Basicフォワーディングプロキシをホストまたはサイドカーコンテナとして実行します。 NTLMクレデンシャルでCNTLMを設定し、IronPDFをhttp://localhost:3128(CNTLMのデフォルトポート)に指示します。
空白のPDFまたはアセットが欠けている: PDFはレンダリングされますが、画像やCSSが不足している場合、プロキシがブロックするか、異なるプロキシパスが必要なリソースをHTMLが参照しています。 プロキシを通じてbaseUrlOrPathパラメータが正しく解決することを確認し、プロキシのアクセスログを403または407の応答で確認します。
ローカルアセットのためのプロキシバイパス: HTMLがローカルアセット(バンドルされた画像、インラインCSS)とリモートリソース(CDNフォント、外部スクリプト)を混在している場合、プロキシはリモートリクエストのみを処理する必要があります。 ファイルシステムアセットとしてbaseUrlOrPathをローカルディレクトリに設定し、ネットワークリクエストの処理だけをプロキシに任せます。 これにより、ローカルファイル読み込みが不必要にプロキシを経由することを避けられます。
接続の診断: あなたのプロキシ文字列がIronPDFで使用する前に正しいかを確認するために、まず簡単なHttpClientリクエストでテストしてください:
var proxy = new WebProxy("http://proxy.co/rp.local:8080");
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var client = new HttpClient(handler);
var response = await client.GetAsync("https://httpbin.org/ip");
Console.WriteLine(await response.Content.ReadAsStringAsync());
// Should return the proxy's external IP, not your machine's IPvar proxy = new WebProxy("http://proxy.co/rp.local:8080");
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var client = new HttpClient(handler);
var response = await client.GetAsync("https://httpbin.org/ip");
Console.WriteLine(await response.Content.ReadAsStringAsync());
// Should return the proxy's external IP, not your machine's IPDim proxy = New WebProxy("http://proxy.co/rp.local:8080")
Dim handler = New HttpClientHandler With {.Proxy = proxy, .UseProxy = True}
Using client As New HttpClient(handler)
Dim response = Await client.GetAsync("https://httpbin.org/ip")
Console.WriteLine(Await response.Content.ReadAsStringAsync())
End UsingDim proxy = New WebProxy("http://proxy.co/rp.local:8080")
Dim handler = New HttpClientHandler With {.Proxy = proxy, .UseProxy = True}
Using client As New HttpClient(handler)
Dim response = Await client.GetAsync("https://httpbin.org/ip")
Console.WriteLine(Await response.Content.ReadAsStringAsync())
End Usingこれが成功するがIronPDFが失敗する場合、問題はSSLインターセプションまたはプロキシとChromiumのCONNECTトンネリング間のプロトコルミスマッチの可能性があります。 プロキシがHTTPSリソースのためのHTTP CONNECTをサポートしているか確認してください - トンネリングを許可するために明示的な構成を必要とするプロキシもあります。
次のステップ
IronPDFにおけるプロキシサポートはRenderHtmlAsPdf()のメソッドパラメータです - プロキシ文字列を渡すとChromiumエンジンはすべてのHTTPトラフィックをそれにルーティングします。 HTTPS_PROXY 環境変数がコード変更なしでインフラレベルのコントロールを提供します。
Webページ認証(プロキシ認証とは異なる)のためのログインと認証ハウツー、カスタムヘッダーのためのHTTPリクエストヘッダーガイド、およびタイムアウトやパフォーマンスチューニングのためのレンダリングオプションリファレンスを探索してください。
ライセンスオプションを見る $999から。 ChromePdfRenderer APIリファレンスはすべてのメソッドオーバーロードをドキュメント化し、ChromePdfRenderOptionsリファレンスはすべての設定可能なプロパティをカバーしています。 RenderUrlAsPdf() ProxyAddress ChromePdfRenderOptions RenderHtmlAsPdf StaticRenderHtmlAsPdf RenderUrlAsPdf HttpClient WebProxy RenderHtmlAsPdf() ```yaml
Kubernetesポッド仕様
スペック: コンテナ:
- 名前: pdf-generator
イメージ: myregistry/pdf-service:latest
env:
- 名称: HTTP_PROXY valueFrom configMapKeyRef: name: proxy-config key: http-proxy
- 名称: HTTPS_PROXY valueFrom configMapKeyRef: name: proxy-config https-proxy
- 名称: NO_PROXY
value: "localhost,127.0.0.1,.internal.co/rp"
```
ChromePdfRenderOptions.Timeout
よくある質問
PDFレンダリングのためにC#でプロキシサーバーを設定するにはどうすればよいですか?
C#でPDFレンダリングのプロキシサーバーを設定するためには、IronPDFのRenderHtmlAsPdfメソッドを呼び出す際に、プロキシパラメータを使用します。これにより、Webリソースにアクセスするためのプロキシ設定を指定できます。
IronPDFでプロキシを使用する目的は何ですか?
IronPDFでプロキシを使用することにより、ファイアウォールや企業ネットワークの背後にある、インターネットアクセスが制限された環境でのPDFレンダリング時にネットワークリクエストを管理できます。
IronPDFは認証付きプロキシを扱えますか?
はい、IronPDFは認証付きプロキシを扱うことができます。必要な認証情報をプロキシ設定と共にC#コード内で提供する必要があります。
IronPDFはDockerコンテナ内でプロキシと一緒に使用できますか?
はい、IronPDFはDockerコンテナ内でプロキシと一緒に使用するよう設定できます。Docker環境変数を正確に設定し、プロキシ設定を渡すことを確認してください。
IronPDFのプロキシ問題をどのようにトラブルシューティングしますか?
IronPDFのプロキシ問題をトラブルシューティングするには、プロキシ設定を確認し、認証情報が正しいことを確認し、ネットワークへのアクセス性を検証します。ログにエラーメッセージがあれば、それを確認し問題の特定に役立ててください。
IronPDFはプロキシ設定と共にCI/CDパイプラインで使用できますか?
はい、IronPDFはプロキシ設定と共にCI/CDパイプラインに統合できます。PDFレンダリング処理中に必要なプロキシ設定を渡すようにビルド環境を設定することを確認してください。
企業環境でIronPDFにプロキシを使用する利点は何ですか?
企業環境でIronPDFにプロキシを使用することは、セキュリティを向上させ、インターネットアクセスを制御し、帯域幅の使用を管理するのに役立ち、組織のITポリシーに準拠しやすくします。
What environment variables should be set for system-level proxy configurations?
For system-level proxy configurations, set the HTTP_PROXY and HTTPS_PROXY environment variables for general outbound traffic routing in environments like Docker or CI/CD pipelines.
How do you ensure internal resources bypass the proxy in IronPDF?
You can set the NO_PROXY environment variable to list domains or hostnames that should bypass the proxy, ensuring internal resources like local CSS servers or image CDNs aren't routed through the proxy unnecessarily.
What are the typical issues when rendering PDFs through a proxy in IronPDF, and how can they be resolved?
Typical issues include timeout errors due to latency, SSL interception requiring corporate root CA certificates, and NTLM authentication needing a local forwarding proxy like CNTLM. Solutions vary but generally include adjusting timeouts, installing certificates properly, and ensuring correct proxy credentials formatting.
Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。