Haukcode.DinkToPdf vs IronPDF:技術比較ガイド
Haukcode.DinkToPdf vs IronPDF:セキュリティ、アーキテクチャ、最新の.NET PDF生成
.NET開発者がPDF生成ソリューションを評価するとき、Haukcode.DinkToPdfは放棄されたDinkToPdfプロジェクトのフォークとして登場し、wkhtmltopdfバイナリをラップします。 Haukcode.DinkToPdfは、基本的なHTMLからPDFへの機能を提供しますが、wkhtmltopdfから重大なセキュリティ脆弱性を継承しています。 IronPDFは異なるアプローチを提供します:定期的なセキュリティアップデートと最新のChromiumエンジンを使用したアクティブにメンテナンスされたライブラリです。
この比較では、プロの開発者やアーキテクトが.NET PDFの要件について十分な情報を得た上で決定できるように、技術的に関連する次元で両ライブラリを検証します。
Haukcode.DinkToPdfの理解
Haukcode.DinkToPdfは、以前人気があったDinkToPdfライブラリのフォークであり、現在は廃止されているwkhtmltopdfバイナリに基づいて構築されています。 このライブラリは、.NET Coreとの互換性を維持しながら、HTMLからPDFへの変換機能を提供することを目指しています。 放棄されたプロジェクトのフォークであるため、Haukcode.DinkToPdfには大きな制限があります。
Haukcode.DinkToPdfは、SynchronizedConverterとPdfToolsを主な変換メカニズムとして使用しています。 設定は、ページレベルのオプション(ColorMode、Orientation、PaperSize、Margins)用のGlobalSettingsとコンテンツ(HTML文字列用のHtmlContent、URL用のPage)用のObjectSettingsを含むHtmlToPdfDocumentオブジェクトを通して処理されます。converter.Convert(doc).メソッドは生の byte[] データを返します。
ライブラリには、プラットフォーム固有のネイティブバイナリが必要です:libwkhtmltox.dll (Windows), libwkhtmltox.so (Linux), libwkhtmltox.dylib (macOS). スレッドの安全性を確保するには、基礎となるwkhtmltopdfの制限のため、SynchronizedConverterをシングルトン パターンで使用する必要があります。
IronPDFの理解
IronPdfは独自に開発された.NETライブラリで、最新のChromiumレンダリングエンジンを使用しています。このライブラリは定期的なアップデート、Professionalなサポート、継続的なセキュリティパッチで積極的にメンテナンスされています。
IronPDFはChromePdfRendererを主要なレンダリングクラスとして使用し、RenderingOptionsプロパティを通して設定を行います。 RenderHtmlAsPdf()やRenderUrlAsPdf()のようなメソッドは、SaveAs()で保存したり、BinaryDataとしてアクセスできるPdfDocumentオブジェクトを返します。 ライブラリは、外部のネイティブバイナリを必要とせず、自己完結型であり、シングルトンパターンを必要としない設計によりスレッドセーフです。
重要なセキュリティの考慮事項
これらのライブラリの最も大きな違いは、セキュリティです。 Haukcode.DinkToPdfは、CVSSスコア9.8の重大なServer-Side Request Forgery (SSRF)の脆弱性であるCVE-2022-35583を継承しています。
CVE-2022-35583攻撃ベクトル:
- 悪意のあるHTMLコンテンツは、サーバーに内部リソースをフェッチさせる可能性があります。
- AWSメタデータ攻撃は
http://169.254.169.254にアクセスして認証情報を盗むことができる - 社内ネットワークのスキャンと社内サービスへのアクセス
file://プロトコルによるローカルファイルのインクルード- 完全なインフラストラクチャー買収の可能性
この脆弱性に対する修正はありませんなぜならwkhtmltopdfは放棄されているからです(2023年1月からアーカイブされており、最後のリリースは2020年の0.12.6です)。
| セキュリティ面 | Haukcode.DinkToPdf | IronPDF |
|---|---|---|
| クリティカルなCVE | CVE-2022-35583 (CVSS 9.8、未修正) | 積極的にパッチを適用 |
| 基盤エンジン | wkhtmltopdf(Qt WebKit ~2015) | Chromium (定期的に更新) |
| プロジェクトステータス | 放棄されたプロジェクトのフォーク | 積極的に開発 |
| セキュリティ・アップデート | 特になし | 定期リリース |
| サポート | コミュニティ限定 | プロフェッショナルサポート |
アーキテクチャとエンジンの比較
基本的なアーキテクチャの違いは、レンダリングの品質、最新のWeb標準のサポート、デプロイの複雑さに影響します。
| アスペクト | Haukcode.DinkToPdf | IronPDF |
|---|---|---|
| レンダリングエンジン | Qt WebKit(~2015年) | クロミウム(現在) |
| HTML5/CSS3。 | 制限的 | フルサポート |
| JavaScript(ジャバスクリプト | 限定的で安全ではない | フルV8エンジン |
| ネイティブバイナリ | 必須(プラットフォーム固有) | 自己完結型 |
| スレッドセーフティ | シングルトンパターンが必要 | スレッドセーフ設計 |
| 更新情報 | 特になし | 定期リリース |
Haukcode.DinkToPdfは、時代遅れのQt WebKitエンジンに依存しているため、長年にわたるセキュリティパッチが適用されておらず、最新のWeb標準のサポートも限られています。 IronPDFのChromiumエンジンは定期的なアップデートで最新のウェブ標準をサポートします。
コードの比較:一般的なPDF操作
HTMLからPDFへの変換
最も基本的な操作は、API設計の違いを示しています。
Haukcode.DinkToPdf:
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
}
}// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comHaukcode.DinkToPdfは、PdfToolsでSynchronizedConverterを作成し、入れ子になったGlobalSettingsとObjectSettingsオブジェクトでHtmlToPdfDocumentを構築し、Convert()を呼び出して生のバイトを取得し、File.WriteAllBytes()で手動でディスクに書き込む必要があります。WriteAllBytes()で手動でディスクに書き込む。
IronPDFはChromePdfRendererを作成し、RenderHtmlAsPdf()をHTML文字列で直接呼び出し、SaveAs()で保存します。 最新のAPI設計により、操作は大幅に簡潔になります。
高度なHTMLレンダリングオプションについては、HTMLからPDFへの変換ガイドをご覧ください。
URLからPDFへの変換
ウェブページの変換では、外部コンテンツを処理するためのさまざまなアプローチを示します。
Haukcode.DinkToPdf:
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
Page = "https://www.example.com",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("webpage.pdf", pdf);
}
}// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
Page = "https://www.example.com",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("webpage.pdf", pdf);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comHaukcode.DinkToPdfは、URL指定のためにObjectSettings.Pageプロパティを持つ同じHtmlToPdfDocument構造を使用しています。 IronPDFはURLを直接受け取る専用のRenderUrlAsPdf()メソッドを提供します。
Haukcode.DinkToPdfによるURLレンダリングは、悪意のあるURLやリダイレクトがサーバーを悪用する可能性があるため、CVE-2022-35583 SSRF脆弱性のリスクがあることに注意してください。
カスタムページ設定
ページ構成は、さまざまな構成モデルを示しています。
Haukcode.DinkToPdf:
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Landscape,
PaperSize = PaperKind.Letter,
Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
},
Objects = {
new ObjectSettings() {
HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("landscape.pdf", pdf);
}
}// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Landscape,
PaperSize = PaperKind.Letter,
Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
},
Objects = {
new ObjectSettings() {
HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("landscape.pdf", pdf);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");
pdf.SaveAs("landscape.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");
pdf.SaveAs("landscape.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comHaukcode.DinkToPdfは、ネストされたMarginSettingsオブジェクトを持つGlobalSettingsを通してページ設定を構成します。 プロパティは、Orientation.LandscapeやPaperKind.Letterのような列挙型を使用します。
IronPDFはRenderingOptionsプロパティをレンダラー上で直接使用します。 プロパティは、型付き列挙型(PdfPaperSize.Letter、PaperOrientation、MarginTopなど)で個別に設定されます(PdfPaperSize.Letter、PdfPaperOrientation.Landscape)。 どちらもマージンの単位にミリメートルを使用しています。
レンダリングの設定については、IronPDFチュートリアルをご覧ください。
APIマッピングリファレンス
Haukcode.DinkToPdfの移行を評価したり、機能を比較したりする開発者のために、このマッピングは同等の操作を示しています:
コンバーター・クラスのマッピング
| Haukcode.DinkToPdf | IronPDF | ノート |
|---|---|---|
SynchronizedConverter(シンクロナイズド・コンバーター | <コード>ChromePdfRenderer</コード | スレッドセーフ、シングルトン不要 |
| <コード>BasicConverter</コード | <コード>ChromePdfRenderer</コード | 同じクラスで両方を処理 |
| <コード>PdfTools</コード | 該当なし | 不要 |
| <コード>IConverter</コード | 該当なし | レンダラーを直接使用する |
ドキュメント構成マッピング
| Haukcode.DinkToPdf | IronPDF | ノート |
|---|---|---|
| <コード>HtmlToPdfDocument</コード | メソッドコール | RenderHtmlAsPdf()を直接使用してください。 |
| <コード>グローバル設定</コード | <コード>レンダリングオプション</コード | レンダリング前の設定 |
| <コード>オブジェクト設定</コード | <コード>レンダリングオプション</コード | 1つにまとめる |
converter.Convert(doc). | renderer.RenderHtmlAsPdf(html). | PdfDocument<//code> を返します。 |
GlobalSettingsプロパティのマッピング
| GlobalSettings プロパティ | IronPDF プロパティ | ノート |
|---|---|---|
カラーモード | RenderingOptions.GrayScale(レンダリングオプション.グレイスケール | ブール値、グレースケールにはtrueを設定します。 |
| <コード>オリエンテーション</コード | <コード>RenderingOptions.PaperOrientation</コード | ポートレートまたは風景 |
| <コード>用紙サイズ</コード | <コード>RenderingOptions.PaperSize</コード | PdfPaperSize列挙型を使用してください。 |
| <コード>マージン.トップ</コード | RenderingOptions.MarginTop。 | 単位:ミリメートル |
| <コード>マージン.ボトム</コード | RenderingOptions.MarginBottom。 | 単位:ミリメートル |
| <コード>マージン.左</コード | RenderingOptions.MarginLeft(レンダリングオプション.マージンレフト)。 | 単位:ミリメートル |
| <コード>マージン.Right</コード | <コード>RenderingOptions.MarginRight</コード | 単位:ミリメートル |
オブジェクト設定プロパティのマッピング
| オブジェクト設定プロパティ | IronPDF 同等物 | ノート |
|---|---|---|
| <コード>HtmlContent</コード | RenderHtmlAsPdf()の最初のパラメータ | 直接パラメータ |
| <コード>ページ</コード> (URL) | renderer.RenderUrlAsPdf(url)のようにします。 | 別メソッド |
HeaderSettings.Right = "[ページ]"。 | TextHeader.RightText = "{page}". | さまざまなプレースホルダ構文 |
プレースホルダーの構文の違い
ヘッダー/フッターのプレースホルダーは、ライブラリ間で異なる構文を使用します:
| Haukcode.DinkToPdf | IronPDF |
|---|---|
| <コード>[ページ]</コード | <コード>{ページ}</コード |
| <コード>[toPage]</コード | <コード>{総ページ数}</コード |
| <コード>[日付]</コード | {date}<//code> |
スレッドセーフティと依存性注入
Haukcode.DinkToPdfは、wkhtmltopdf.Haukcode.DinkToPdfから継承されたスレッドセーフの制限のため、慎重な取り扱いが必要です。
Haukcode.DinkToPdf(シングルトンが必要です):。
// Startup.cs - MUST be singleton due to thread safety issues
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
}// Startup.cs - MUST be singleton due to thread safety issues
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF(フレキシブル):
// Startup.cs - Can be singleton or transient (both work)
public void ConfigureServices(IServiceCollection services)
{
IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"];
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
}// Startup.cs - Can be singleton or transient (both work)
public void ConfigureServices(IServiceCollection services)
{
IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"];
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFは設計上スレッドセーフであり、シングルトン要件なしで柔軟な依存性注入パターンを可能にします。
機能比較の概要
| フィーチャー | Haukcode.DinkToPdf | IronPDF |
|---|---|---|
| ソースオリジン | 放棄されたプロジェクトのフォーク | 独自開発 |
| セキュリティ。 | アップストリームから継承されたCVE(修正不可) | 積極的なパッチ適用と安全性 |
| コミュニティ&サポート | 小規模かつ散発的 | 大規模で、活発で、熱心な |
| 機能と更新情報 | 限定的かつ散発的 | 開発が活発なレギュラー |
| マルチスレッドサポート。 | シングルトンパターンが必要 | 完全サポートと最適化 |
| ネイティブバイナリ | 必須(プラットフォーム固有) | 自己完結型 |
| HTML5/CSS3。 | 制限的 | フルサポート |
| JavaScript(ジャバスクリプト | 制限的 | フルV8エンジン |
| ライセンス | MIT (無料) | 無料トライアル付き商用 |
チームがHaukcode.DinkToPdfからIronPdfへの移行を検討するとき
開発チームはいくつかの理由からHaukcode.DinkToPdfからIronPdfへの移行を評価しています:
重大なセキュリティ脆弱性:CVE-2022-35583 (SSRF) は CVSS 9.8 の致命的な脆弱性で、パッチが適用されることはありません。 ユーザが提供した HTML を処理したり、外部 URL をレンダリングするアプリケーションに対して、この脆弱性は、AWS クレデンシャルの窃取、内部ネットワークへのアクセス、ローカルファイルのインクルード攻撃を可能にします。
放棄された基盤技術:wkhtmltopdfは放棄されました(アーカイブ2023年1月、最終リリース2020年)。 フォークとしてのHaukcode.DinkToPdfは、基礎となる技術の根本的な問題に対処することはできません。 時代遅れの Qt WebKit エンジン(~2015 年)は、長年のセキュリティパッチが適用されていません。
ネイティブのバイナリ管理:Haukcode.DinkToPdfは、プラットフォーム固有のバイナリ(libwkhtmltox.dll、libwkhtmltox.so、libwkhtmltox.dylib)を配布する必要があります。 これは、デプロイメント、CI/CDパイプライン、コンテナ化を複雑にします。 IronPdfは外部バイナリを含まない自己完結型です。
スレッド安全性の制限: 必須のSynchronizedConverterシングルトンパターンは、アーキテクチャの柔軟性を制限し、負荷時にボトルネックを引き起こす可能性があります。 IronPdfは設計上スレッドセーフであり、リクエストごとのインスタンスが可能です。
最新のウェブ標準:限られたHTML5/CSS3のサポートと安全でないJavaScriptの実行は、最新のウェブコンテンツのレンダリング機能を制限します。 IronPDFのChromiumエンジンは最新のウェブ標準をサポートします。
長期的な実行可能性:放棄されたテクノロジーへの依存は、時間とともに増大する技術的負債を生み出します。プロジェクトが 2026 年まで .NET 10 と C# 14 に向かって拡大するにつれて、メンテナンスされていないwkhtmltopdf ラッパーへの依存を維持することがますます問題になってきます。
長所と考慮点
Haukcode.DinkToPdfの強み
- フリーでオープンソースです:ライセンス費用なしのMITライセンス
- 基本機能: 基本的なHTMLからPDFへの変換をサポートします。
- 既存のコードベース:すでにDinkToPdfを使用しているチームに精通していること。
Haukcode.DinkToPdfについての考察
- 重大なセキュリティ脆弱性:CVE-2022-35583 は修正不可能です。
- 見捨てられた技術:廃止されたwkhtmltopdfで構築された
- ネイティブ・バイナリ依存:プラットフォーム固有のDLLが必要
- スレッド安全性の問題: シングルトンパターンが必要です。
- 限られたウェブ標準:時代遅れの Qt WebKit エンジン
- プロフェッショナルサポートはありません:コミュニティのみの支援
- 技術的負債:放棄されたプロジェクトへの依存がリスクを増大させる
IronPDFの強み
IronPDFについての考察
- 商用ライセンス:本番使用時に必要です。
結論
Haukcode.DinkToPdfとIronPDFは、.NETアプリケーションにおけるPDF生成への根本的に異なるアプローチを表しています。 Haukcode.DinkToPdfは、廃止されたwkhtmltopdfバイナリをラッピングするDinkToPdfプロジェクトのフォークであるため、重大なセキュリティ脆弱性(CVE-2022-35583)があり、パッチが適用されることはありません。 このライブラリは、ネイティブのバイナリ配布、スレッドセーフのためのシングルトンパターンを必要とし、限定的な最新のWeb標準のサポートを提供します。
IronPdfは最新のChromiumエンジン、定期的なセキュリティアップデート、スレッドセーフアーキテクチャにより、積極的にメンテナンスされた代替ツールを提供します。 この自己完結型ライブラリは、HTML5/CSS3/JavaScriptを完全にサポートしながら、ネイティブのバイナリ管理を排除します。
組織が.NET 10、C# 14、および2026年までのアプリケーション開発を計画する中で、重大な修正不可能な脆弱性を抱えたまま放棄された技術に依存し続けるか、最新の機能を備えた積極的に保守されるソリューションを採用するかの選択は、セキュリティ態勢と開発速度の両方に大きく影響します。 セキュアなPDF生成、モダンなレンダリング、簡素化されたデプロイメントを必要とするチームはIronPDFがこれらの要件に効果的に対応していることに気づくでしょう。
無料トライアルでIronPDFの評価を開始し、包括的なドキュメントを参照して、特定の要件への適合性を評価してください。