ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
Severity: Notice
Message: Undefined index: extension
Filename: libraries/PostRender.php
Line Number: 121
Backtrace:
File: /var/www/ironpdf.com/application/libraries/PostRender.php
Line: 121
Function: _error_handler
File: /var/www/ironpdf.com/application/libraries/PostRender.php
Line: 60
Function: render_view_with_translated_links
File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once
動的でデータ駆動型のリッチなPDFドキュメントを作成することは、現代のソフトウェア開発の多くの分野で一般的な要求です。 ビジネスは、請求書、レポート、またはドキュメントの作成において、高品質なPDFを迅速に生成する能力に大きく依存しています。 しかし、PDF生成プロセスの効果を追跡して理解することは、アプリの健全性を維持し、ユーザーの満足度を確保するために、プロセスがますます複雑で大規模になるにつれて重要となります。
この記事では、開発者がIronPDFおよびOpenTelemetry.NETの機能を利用して、PDF生成操作を改善し、アプリケーションのパフォーマンスに関する重要な洞察を提供する方法について議論します。 我々は、両技術の特徴と利点を探求し、.NETアプリケーションでのPDFの作成および監視を最適化するために、これらがどのように調和して機能するかを示します。
OpenTelemetryは、クラウドネイティブアプリケーションのために特別に作られたベンダーに依存しない可観測性フレームワークです。OpenTelemetryの自動インストルメンテーションは、ログ、トレーシング、およびメトリクスを含むテレメトリー情報を収集するための単一のAPIを提供します。 この豊富なデータを活用することで、開発者は効果的に問題をデバッグし、パフォーマンスのボトルネックを特定し、プログラムの動作を完全に理解することができます。 OpenTelemetryは、包括的かつ柔軟なテレメトリーデータの収集のために、オートマチックおよびマニュアルの両方のインストゥルメンテーションをサポートしています。
OpenTelemetry を .NET アプリケーションに統合すると、いくつかの利点があります:
OpenTelemetry をアプリケーションで設定する必要があります。 ASP.NET Core アプリケーションの場合、通常これは Startup.cs
ファイルの ConfigureServices
メソッドで行われます。ここに示すのは Jaeger エクスポーター設定の例です:
using OpenTelemetry.Trace;
using OpenTelemetry.Exporter.Jaeger;
using OpenTelemetry.Resources;
public void ConfigureServices(IServiceCollection services)
{
// Configure OpenTelemetry
builder.Services.AddOpenTelemetry().WithTracing(options =>
{
// Configure Jaeger exporter
// serviceName we can read from environment variables
options
.SetResourceBuilder(
ResourceBuilder.CreateDefault()
.AddService(serviceName))
.AddAspNetCoreInstrumentation().AddJaegerExporter(opt =>
{
opt.AgentHost = "localhost"; // Jaeger agent host
opt.AgentPort = 14250; // Jaeger agent port
});
});
// Other service configurations...
}
using OpenTelemetry.Trace;
using OpenTelemetry.Exporter.Jaeger;
using OpenTelemetry.Resources;
public void ConfigureServices(IServiceCollection services)
{
// Configure OpenTelemetry
builder.Services.AddOpenTelemetry().WithTracing(options =>
{
// Configure Jaeger exporter
// serviceName we can read from environment variables
options
.SetResourceBuilder(
ResourceBuilder.CreateDefault()
.AddService(serviceName))
.AddAspNetCoreInstrumentation().AddJaegerExporter(opt =>
{
opt.AgentHost = "localhost"; // Jaeger agent host
opt.AgentPort = 14250; // Jaeger agent port
});
});
// Other service configurations...
}
Imports OpenTelemetry.Trace
Imports OpenTelemetry.Exporter.Jaeger
Imports OpenTelemetry.Resources
Public Sub ConfigureServices(ByVal services As IServiceCollection)
' Configure OpenTelemetry
builder.Services.AddOpenTelemetry().WithTracing(Sub(options)
' Configure Jaeger exporter
' serviceName we can read from environment variables
options.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName)).AddAspNetCoreInstrumentation().AddJaegerExporter(Sub(opt)
opt.AgentHost = "localhost" ' Jaeger agent host
opt.AgentPort = 14250 ' Jaeger agent port
End Sub)
End Sub)
' Other service configurations...
End Sub
あなたのサービス名を serviceName
の部分に入れてください。 お客様のJaeger構成オプションに従い、Jaegerエージェントのホストとポートを変更してください。
ASP.NET Coreアプリに自動的にHTTPリクエストを計測するためには、OpenTelemetryミドルウェアを含める必要があります。 Startup.cs
ファイルの Configure
メソッドにミドルウェアを追加します:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// Add OpenTelemetry middleware if we are using Prometheus
app.UseHttpMetrics();
// Other middleware configurations...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// Add OpenTelemetry middleware if we are using Prometheus
app.UseHttpMetrics();
// Other middleware configurations...
}
Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
' Add OpenTelemetry middleware if we are using Prometheus
app.UseHttpMetrics()
' Other middleware configurations...
End Sub
すべての設定が完了すると、OpenTelemetryは受信HTTPリクエストを追跡し、設定したJaegerバックエンドにテレメトリー情報を自動的に送信し始めます。
OpenTelemetryが正常に機能していることを確認するために、Jaegerバックエンドでトレースを確認できます。 Jaegerユーザーインターフェースを開く(通常、Jaeger UIは http://localhost:16686
で利用可能です。)お客様のサービスに関連する痕跡を探します。
OpenTelemetryは基本的な計装に必須ではありませんが、他のバックエンドオペレーティングシステムと統合してテレメトリーデータを保存および処理します。 人気のオプションには、正式にサポートされているオペレーティングシステムが含まれます:
人気の.NETパッケージIronPDFを使用すると、.NETプログラム内でPDF文書を作成、編集、レンダリングできます。 PDFの操作に関する機能は多数あり、以下を含みます:HTMLページをPDFに変換する; PDFからテキストおよび画像を抽出する; 既存のPDFドキュメントにテキスト、画像、形状を追加すること。 HTMLコンテンツ、写真、または生データからPDFを生成します。
IronPDFの2つの主な利点は、その使いやすさとシンプルさです。 開発者は、直感的なAPIと包括的なドキュメントのおかげで、.NETプロジェクト内で簡単にPDFを作成し始めることができます。 IronPDFの効率性とスピードは、開発者が高品質のPDFドキュメントを迅速かつ効率的に作成するのを助ける追加の特徴です。
IronPDFの利点のいくつか:
OpenTelemetryの異なるコンポーネント向けに複数のNuGetパッケージが利用可能です。 ニーズに応じて、必要なパッケージをインストールできます。 オブザーバビリティバックエンドにテレメトリーデータを送信するために(例えば、Jaeger、Zipkin、またはPrometheus)少なくとも、OpenTelemetryパッケージと、アプリケーションフレームワーク用のインストゥルメンテーションパッケージが必要です。(ASP.NET Coreなど), およびエクスポーター パッケージ。 また、プロジェクトにIronPDFパッケージがインストールされていることを確認してください。 インストールするには、NuGet パッケージ マネージャー コンソールを使用してください:
Install-Package OpenTelemetry
Install-Package OpenTelemetry.Instrumentation.AspNetCore
Install-Package OpenTelemetry.Exporter.Jaeger
Install-Package IronPdf
ASP.NET CoreアプリケーションのStartup.cs
ファイルを開き、ConfigureServices
関数に進みます。 IronPDFを設定するには、次のコードを含めてください。
using IronPdf;
public void ConfigureServices(IServiceCollection services)
{
// Configure IronPDF
services.AddSingleton<HtmlToPdf>();
// Other service configurations...
}
using IronPdf;
public void ConfigureServices(IServiceCollection services)
{
// Configure IronPDF
services.AddSingleton<HtmlToPdf>();
// Other service configurations...
}
Imports IronPdf
Public Sub ConfigureServices(ByVal services As IServiceCollection)
' Configure IronPDF
services.AddSingleton(Of HtmlToPdf)()
' Other service configurations...
End Sub
このコードは、IronPDFのHtmlToPdf
サービスをシングルトンとして構成することにより、HtmlToPdf
のインスタンスがアプリケーションによって一度だけ作成および使用されることを保証します。
.NETアプリケーションにIronPDFとOpenTelemetry.NETを統合することで、PDF生成プロセスを追跡および観察することができます。 コード例を詳しく見て、ステップごとに各段階を確認しましょう。
using Microsoft.AspNetCore.Mvc;
using OpenTelemetry.Trace;
using System.Diagnostics;
using System.Net;
using System.Net.Http.Headers;
namespace DemoWebApplication.Controllers
{
[ApiController]
[Route("[controller]")]
public class DemoController : ControllerBase
{
private readonly HtmlToPdf _htmlToPdf;
private readonly ILogger<WeatherForecastController> _logger;
private readonly Tracer _tracer;
public WeatherForecastController(ILogger<WeatherForecastController> logger, HtmlToPdf htmlToPdf, TracerProvider tracerProvider)
{
_tracer = tracerProvider.GetTracer("Demo");
_htmlToPdf = htmlToPdf;
}
[HttpGet]
public FileContentResult Generate()
{
string fileName = "Sample.pdf";
var stream = GeneratePdf("Hello IronPDF");
return new FileContentResult(stream, "application/octet-stream")
{
FileDownloadName = fileName
};
}
private byte[] GeneratePdf(string htmlContent)
{
using (var activity = _tracer.StartActiveSpan("PDF Generation"))
{
var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent);
var pdfBytes = pdfDocument.BinaryData;
return pdfBytes;
}
}
}
}
using Microsoft.AspNetCore.Mvc;
using OpenTelemetry.Trace;
using System.Diagnostics;
using System.Net;
using System.Net.Http.Headers;
namespace DemoWebApplication.Controllers
{
[ApiController]
[Route("[controller]")]
public class DemoController : ControllerBase
{
private readonly HtmlToPdf _htmlToPdf;
private readonly ILogger<WeatherForecastController> _logger;
private readonly Tracer _tracer;
public WeatherForecastController(ILogger<WeatherForecastController> logger, HtmlToPdf htmlToPdf, TracerProvider tracerProvider)
{
_tracer = tracerProvider.GetTracer("Demo");
_htmlToPdf = htmlToPdf;
}
[HttpGet]
public FileContentResult Generate()
{
string fileName = "Sample.pdf";
var stream = GeneratePdf("Hello IronPDF");
return new FileContentResult(stream, "application/octet-stream")
{
FileDownloadName = fileName
};
}
private byte[] GeneratePdf(string htmlContent)
{
using (var activity = _tracer.StartActiveSpan("PDF Generation"))
{
var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent);
var pdfBytes = pdfDocument.BinaryData;
return pdfBytes;
}
}
}
}
Imports Microsoft.AspNetCore.Mvc
Imports OpenTelemetry.Trace
Imports System.Diagnostics
Imports System.Net
Imports System.Net.Http.Headers
Namespace DemoWebApplication.Controllers
<ApiController>
<Route("[controller]")>
Public Class DemoController
Inherits ControllerBase
Private ReadOnly _htmlToPdf As HtmlToPdf
Private ReadOnly _logger As ILogger(Of WeatherForecastController)
Private ReadOnly _tracer As Tracer
Private Function WeatherForecastController(ByVal logger As ILogger(Of WeatherForecastController), ByVal htmlToPdf As HtmlToPdf, ByVal tracerProvider As TracerProvider) As Public
_tracer = tracerProvider.GetTracer("Demo")
_htmlToPdf = htmlToPdf
End Function
<HttpGet>
Public Function Generate() As FileContentResult
Dim fileName As String = "Sample.pdf"
Dim stream = GeneratePdf("Hello IronPDF")
Return New FileContentResult(stream, "application/octet-stream") With {.FileDownloadName = fileName}
End Function
Private Function GeneratePdf(ByVal htmlContent As String) As Byte()
Using activity = _tracer.StartActiveSpan("PDF Generation")
Dim pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent)
Dim pdfBytes = pdfDocument.BinaryData
Return pdfBytes
End Using
End Function
End Class
End Namespace
私たちのアプリケーション用にトレーサーインスタンスを生成するために、TracerProvider
サービスを注入します。 Generate
メソッドによって「PDF Generation」と呼ばれるOpenTelemetryアクティビティが作成され、現在進行中の作業を象徴します。 私たちはアクティビティ内でいくつかの作業を模倣します。(独自のロジックに置き換えます). 私たちは、作業のミリ秒単位の時間を監視するために、work_duration_ms
というヒストグラムメトリクスを確立します。 メトリクスにデータポイントを追加し、タグ "Demo" を付けて "PDF Generation" の値を設定し、期間を記録します。(この場合、1000ミリ秒). タグは分析に追加のコンテキスト層を提供します。
上記のソースコードから生成されたPDF出力:
以下はJaeger UIから生成されたトレースの画面です:
OpenTelemetryは、.NETアプリケーションのパフォーマンス最適化とヘルスモニタリングにおいて画期的なツールです。 開発者に、テレメトリーデータを収集、分析、エクスポートするためのベンダーニュートラルで標準化された方法を提供することで、アプリケーションの内部動作に関する徹底的な理解をもたらします。(メトリクス、トレース、およびログ).
OpenTelemetry.NETをIronPDFと統合することにより、開発者はPDF作成のワークフローを改善し、アプリケーションのパフォーマンスに関する洞察を得ることができます。 OpenTelemetry.NETの実装を活用して、PDF生成プロセスを手動で計測することで、開発者は実行経路を追跡し、パフォーマンス指標を監視し、最適化が必要な領域をピンポイントで特定することができます。 さらに、観測データをオブザーバビリティプラットフォームにエクスポートすることで、中央集約型のモニタリングメトリクスの収集と分析が可能となり、開発者はアプリケーションの健全性を維持し、スムーズなユーザー体験を提供することができます。
OpenTelemetry.NET実装とIronPDFの統合により、PDFを作成するための開発者のワークフローを強化し、.NETアプリケーションでのスケーラビリティ、パフォーマンス、信頼性を保証することができます。 これらの技術を統合することで、開発者は現代のソフトウェア開発のニーズを満たし、請求書、レポート、ドキュメントの作成において優れた結果を生み出すことができます。
パッケージとして購入すると、IronPDFはかなり手頃な価格で、ライセンスは永久ライセンスが含まれています。 このパッケージは、複数のシステムに対して一度の支払いで、わずか$749という大変お得な価格を提供します。 ライセンス所有者には、24時間オンラインエンジニアリングサポートを提供します。 ご訪問くださいIron Software ウェブサイト料金の詳細については、こちらをご覧ください。 Explore: 探索する
If you need further assistance or additional translations, feel free to ask同社が提供するソリューションの詳細については、こちらをご覧ください。
9つの .NET API製品 オフィス文書用