IRONPDFの使用 IronPDFを使用してASP.NETでPDFファイルを印刷する方法 カーティス・チャウ 更新日:2026年2月27日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る IronPDF は、サーバー側とクライアント側の機能を使用して、 ASP.NETアプリケーションで信頼性の高いPDF 印刷を可能にします。 ネットワーク プリンター、エラー処理、完全な監査証跡を備えたコンプライアンス対応のドキュメント生成などのエンタープライズ要件に対応します。 ASP.NET のPDF 印刷タスクには、多くの場合、エンタープライズ アーキテクチャに固有の課題が伴います。 請求書、レポート、出荷ラベルなどのドキュメントを生成する場合、信頼性の高い印刷機能を実装するには、セキュリティ コンプライアンスを維持しながら、サーバー クライアント アーキテクチャの複雑さに対処する必要があります。 IronPDFライブラリは、デジタル署名、透かし、長期アーカイブ用の PDF/A 準拠などの専門的な機能を提供します。 この記事では、IronPDF for .NET PDF ライブラリを使用して PDF 印刷タスクを処理する方法について説明し、サーバー側の自動化とクライアント側の印刷ワークフローの両方について説明します。 これらの例は、トップレベル ステートメント スタイル for .NET 10 を対象としており、C# で記述されています。 ASP.NETでの PDF 印刷の主な課題は何ですか? 従来のデスクトップ アプリケーションはデフォルトのプリンターに直接アクセスできますが、 ASP.NET Coreアプリケーションでは PDF ドキュメントを印刷するときにいくつかの障害が発生します。 サーバー環境では、IIS のセキュリティ制限によりプリンタへの直接アクセスができず、ファイル アクセス用のプロセスを生成しようとすると、アクセス許可エラーが発生します。 これらの制約は、監査証跡とアクセス制御を維持する必要がある規制産業では特に重要です。 さらに、Web サーバー プロセスは通常、物理プリンター ドライバーにアクセスできない制限されたサービス アカウントで実行されるため、ローカル テストに合格した場合でもプロセスベースの印刷は信頼できません。 // This fails in ASP.NET -- wrong approach Process.Start(@"C:\Files\document.pdf"); // Works locally, crashes on server // This fails in ASP.NET -- wrong approach Process.Start(@"C:\Files\document.pdf"); // Works locally, crashes on server $vbLabelText $csharpLabel 上記のコードは一般的なミスを示しています。 Web アプリケーションは、データ常駐要件を維持しながら、サーバー側とクライアント側の両方の印刷シナリオを効果的に処理する必要があります。 IronPDF は、外部プロセスやプリンター ドライバーに依存しない完全に管理された.NET API を提供することでこの問題を解決します。 ASP.NETプロジェクトにIronPDFをインストールするにはどうすればよいでしょうか? IronPDF は、外部依存なしにPDF ドキュメントを生成し、印刷するための完全な.NET Coreソリューションを提供します。 NuGetパッケージのインストールは、 .NET Frameworkと.NET Coreアプリケーションの両方で簡単です。 パッケージ マネージャー コンソールからインストールします。 Install-Package IronPdf Install-Package IronPdf SHELL または.NET CLI経由で: dotnet add package IronPdf dotnet add package IronPdf SHELL IronPDF は、Windows Server、Linux ディストリビューション、 Docker コンテナーなどのオペレーティング システム間で動作し、他のライブラリに影響する互換性の問題を排除します。 macOS では、ライブラリは Intel プロセッサと Apple Silicon プロセッサの両方をネイティブにサポートします。 インストール後、起動時にライセンス キーを追加して、完全な機能セットをアクティブ化します。 IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY" $vbLabelText $csharpLabel 購入前にすべての機能を評価できる無料試用ライセンスをご利用いただけます。 サーバー側で PDF ドキュメントを作成して印刷するにはどうすればよいですか? 次の例は、 ASP.NETコントローラー内の HTML マークアップからPDF ドキュメントを生成して印刷する方法を示しています。 ChromePdfRenderer は、完全な CSS サポートによりピクセル パーフェクトなレンダリングを保証します。 CssMediaType.Print を使用すると、HTML で定義されている印刷専用のスタイルシートが有効になり、出力がブラウザの印刷プレビューで表示される内容と完全に一致します。 using IronPdf; using Microsoft.AspNetCore.Mvc; var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run(); [ApiController] [Route("[controller]")] public class PdfController : ControllerBase { [HttpGet("print")] public IActionResult PrintDocument() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PrintHtmlBackgrounds = true; renderer.RenderingOptions.MarginBottom = 10; renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print; var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $749.00</p>"); // Print to default server printer pdf.Print(); return Ok("Document sent to printer"); } } using IronPdf; using Microsoft.AspNetCore.Mvc; var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run(); [ApiController] [Route("[controller]")] public class PdfController : ControllerBase { [HttpGet("print")] public IActionResult PrintDocument() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PrintHtmlBackgrounds = true; renderer.RenderingOptions.MarginBottom = 10; renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print; var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $749.00</p>"); // Print to default server printer pdf.Print(); return Ok("Document sent to printer"); } } Imports IronPdf Imports Microsoft.AspNetCore.Mvc Dim builder = WebApplication.CreateBuilder(args) builder.Services.AddControllers() Dim app = builder.Build() app.MapControllers() app.Run() <ApiController> <Route("[controller]")> Public Class PdfController Inherits ControllerBase <HttpGet("print")> Public Function PrintDocument() As IActionResult Dim renderer = New ChromePdfRenderer() renderer.RenderingOptions.PrintHtmlBackgrounds = True renderer.RenderingOptions.MarginBottom = 10 renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print Dim pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $749.00</p>") ' Print to default server printer pdf.Print() Return Ok("Document sent to printer") End Function End Class $vbLabelText $csharpLabel この例では、レンダリングされた PDF をデフォルトのサーバー プリンターに直接送信します。 ChromePdfRenderer は CSS スタイルとフォントの書式設定を保持します。 JavaScriptを多用するページでは、RenderingOptions.WaitFor を使用してレンダリング遅延を追加し、キャプチャ前に動的コンテンツの読み込みが完了するようにします。 サーバー側の印刷出力はどのようになりますか? ASP.NETでネットワーク プリンターを構成するにはどうすればよいでしょうか? コンプライアンス追跡を備えた特定のプリンター ルーティングを必要とするエンタープライズ環境向けに、 IronPDF は完全な印刷ドキュメント管理を提供します。 ライブラリは、さまざまな用紙サイズとページの向きをサポートしています。 using IronPdf; using System.Drawing.Printing; using Microsoft.AspNetCore.Mvc; [ApiController] [Route("[controller]")] public class NetworkPrintController : ControllerBase { [HttpPost("print-network")] public IActionResult PrintToNetworkPrinter(string filePath) { try { var pdfDocument = PdfDocument.FromFile(filePath); var printDocument = pdfDocument.GetPrintDocument(); // Specify network printer with failover support printDocument.PrinterSettings.PrinterName = @"\\server\printer"; printDocument.PrinterSettings.Copies = 2; printDocument.DefaultPageSettings.PaperSize = new PaperSize("A4", 827, 1169); var printJobId = Guid.NewGuid().ToString(); printDocument.Print(); return Ok(new { success = true, jobId = printJobId, message = "Document sent to " + printDocument.PrinterSettings.PrinterName }); } catch (Exception ex) { return StatusCode(500, new { error = "Print operation failed", details = ex.Message }); } } } using IronPdf; using System.Drawing.Printing; using Microsoft.AspNetCore.Mvc; [ApiController] [Route("[controller]")] public class NetworkPrintController : ControllerBase { [HttpPost("print-network")] public IActionResult PrintToNetworkPrinter(string filePath) { try { var pdfDocument = PdfDocument.FromFile(filePath); var printDocument = pdfDocument.GetPrintDocument(); // Specify network printer with failover support printDocument.PrinterSettings.PrinterName = @"\\server\printer"; printDocument.PrinterSettings.Copies = 2; printDocument.DefaultPageSettings.PaperSize = new PaperSize("A4", 827, 1169); var printJobId = Guid.NewGuid().ToString(); printDocument.Print(); return Ok(new { success = true, jobId = printJobId, message = "Document sent to " + printDocument.PrinterSettings.PrinterName }); } catch (Exception ex) { return StatusCode(500, new { error = "Print operation failed", details = ex.Message }); } } } Imports IronPdf Imports System.Drawing.Printing Imports Microsoft.AspNetCore.Mvc <ApiController> <Route("[controller]")> Public Class NetworkPrintController Inherits ControllerBase <HttpPost("print-network")> Public Function PrintToNetworkPrinter(filePath As String) As IActionResult Try Dim pdfDocument = PdfDocument.FromFile(filePath) Dim printDocument = pdfDocument.GetPrintDocument() ' Specify network printer with failover support printDocument.PrinterSettings.PrinterName = "\\server\printer" printDocument.PrinterSettings.Copies = 2 printDocument.DefaultPageSettings.PaperSize = New PaperSize("A4", 827, 1169) Dim printJobId = Guid.NewGuid().ToString() printDocument.Print() Return Ok(New With { .success = True, .jobId = printJobId, .message = "Document sent to " & printDocument.PrinterSettings.PrinterName }) Catch ex As Exception Return StatusCode(500, New With {.error = "Print operation failed", .details = ex.Message}) End Try End Function End Class $vbLabelText $csharpLabel このアプローチにより、用紙のフォーマットや解像度などのプリンター設定を完全に制御できます。 実装には、コンプライアンス フレームワークに必要なエラー処理とジョブ追跡が含まれます。 大量印刷の場合は、サーバーのスループットを高く保つために、非同期処理とメモリの最適化を実装することを検討してください。 ネットワーク印刷のセキュリティに関する考慮事項は何ですか? 印刷ジョブが成功したかどうかをどのように確認しますか? 最適なクライアント側印刷戦略は何ですか? ブラウザはセキュリティ上の理由からプリンタへの直接アクセスを制限するため、適切なセキュリティ ヘッダーを含む PDF ファイルを提供することで、クライアント側での印刷を実装します。 IronPDF は、ファイル配信を高速化するためにさまざまな圧縮オプションをサポートしています。 このパターンは、エンド ユーザーがブラウザーの印刷ダイアログから独自の印刷先を選択する必要がある場合に最適です。 using IronPdf; using IronPdf.Rendering; using Microsoft.AspNetCore.Mvc; using System.Text; [ApiController] [Route("[controller]")] public class ClientPrintController : ControllerBase { [HttpGet("pdf")] public IActionResult GetRawPrintablePdf() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.EnableJavaScript = false; var pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml()); pdf.SecuritySettings.AllowUserPrinting = true; pdf.SecuritySettings.AllowUserEditing = false; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.ApplyWatermark( "<h2 style='color:red;opacity:0.3'>CONFIDENTIAL</h2>", 30, VerticalAlignment.Middle, HorizontalAlignment.Center); HttpContext.Response.Headers["Content-Disposition"] = "inline; filename=invoice.pdf"; HttpContext.Response.Headers["X-Content-Type-Options"] = "nosniff"; return File(pdf.BinaryData, "application/pdf"); } [HttpGet("print-wrapper")] public IActionResult PrintUsingClientWrapper() { var printUrl = Url.Action(nameof(GetRawPrintablePdf)); var html = new StringBuilder(); html.AppendLine("<!DOCTYPE html><html lang=\"en\"><head><title>Print Document</title></head><body>"); html.AppendLine($"<iframe src='{printUrl}' style='position:absolute;top:0;left:0;width:100%;height:100%;border:none;'></iframe>"); html.AppendLine("<script>window.onload = function() { setTimeout(function() { window.print(); }, 100); };</script>"); html.AppendLine("</body></html>"); return Content(html.ToString(), "text/html"); } private static string GetInvoiceHtml() => @" <html><head><style> body { font-family: Arial, sans-serif; } .header { font-weight: bold; color: #1e40af; } @media print { .no-print { display: none; } } </style></head> <body> <div class='header'>Invoice Summary</div> <p>Total Amount: <b>$749.00</b></p> </body></html>"; } using IronPdf; using IronPdf.Rendering; using Microsoft.AspNetCore.Mvc; using System.Text; [ApiController] [Route("[controller]")] public class ClientPrintController : ControllerBase { [HttpGet("pdf")] public IActionResult GetRawPrintablePdf() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.EnableJavaScript = false; var pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml()); pdf.SecuritySettings.AllowUserPrinting = true; pdf.SecuritySettings.AllowUserEditing = false; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.ApplyWatermark( "<h2 style='color:red;opacity:0.3'>CONFIDENTIAL</h2>", 30, VerticalAlignment.Middle, HorizontalAlignment.Center); HttpContext.Response.Headers["Content-Disposition"] = "inline; filename=invoice.pdf"; HttpContext.Response.Headers["X-Content-Type-Options"] = "nosniff"; return File(pdf.BinaryData, "application/pdf"); } [HttpGet("print-wrapper")] public IActionResult PrintUsingClientWrapper() { var printUrl = Url.Action(nameof(GetRawPrintablePdf)); var html = new StringBuilder(); html.AppendLine("<!DOCTYPE html><html lang=\"en\"><head><title>Print Document</title></head><body>"); html.AppendLine($"<iframe src='{printUrl}' style='position:absolute;top:0;left:0;width:100%;height:100%;border:none;'></iframe>"); html.AppendLine("<script>window.onload = function() { setTimeout(function() { window.print(); }, 100); };</script>"); html.AppendLine("</body></html>"); return Content(html.ToString(), "text/html"); } private static string GetInvoiceHtml() => @" <html><head><style> body { font-family: Arial, sans-serif; } .header { font-weight: bold; color: #1e40af; } @media print { .no-print { display: none; } } </style></head> <body> <div class='header'>Invoice Summary</div> <p>Total Amount: <b>$749.00</b></p> </body></html>"; } Imports IronPdf Imports IronPdf.Rendering Imports Microsoft.AspNetCore.Mvc Imports System.Text <ApiController> <Route("[controller]")> Public Class ClientPrintController Inherits ControllerBase <HttpGet("pdf")> Public Function GetRawPrintablePdf() As IActionResult Dim renderer As New ChromePdfRenderer() renderer.RenderingOptions.EnableJavaScript = False Dim pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml()) pdf.SecuritySettings.AllowUserPrinting = True pdf.SecuritySettings.AllowUserEditing = False pdf.SecuritySettings.AllowUserCopyPasteContent = False pdf.ApplyWatermark("<h2 style='color:red;opacity:0.3'>CONFIDENTIAL</h2>", 30, VerticalAlignment.Middle, HorizontalAlignment.Center) HttpContext.Response.Headers("Content-Disposition") = "inline; filename=invoice.pdf" HttpContext.Response.Headers("X-Content-Type-Options") = "nosniff" Return File(pdf.BinaryData, "application/pdf") End Function <HttpGet("print-wrapper")> Public Function PrintUsingClientWrapper() As IActionResult Dim printUrl = Url.Action(NameOf(GetRawPrintablePdf)) Dim html As New StringBuilder() html.AppendLine("<!DOCTYPE html><html lang=""en""><head><title>Print Document</title></head><body>") html.AppendLine($"<iframe src='{printUrl}' style='position:absolute;top:0;left:0;width:100%;height:100%;border:none;'></iframe>") html.AppendLine("<script>window.onload = function() { setTimeout(function() { window.print(); }, 100); };</script>") html.AppendLine("</body></html>") Return Content(html.ToString(), "text/html") End Function Private Shared Function GetInvoiceHtml() As String Return " <html><head><style> body { font-family: Arial, sans-serif; } .header { font-weight: bold; color: #1e40af; } @media print { .no-print { display: none; } } </style></head> <body> <div class='header'>Invoice Summary</div> <p>Total Amount: <b>$749.00</b></p> </body></html>" End Function End Class $vbLabelText $csharpLabel PDF はブラウザで開き、ユーザーは標準の印刷ダイアログを通じて印刷を開始します。 このアプローチでは、コンテンツ セキュリティ ポリシーと透かしによってセキュリティを維持しながら、サーバー リソースをプリンター ドライバーに依存しないようにします。 クライアント側印刷ではどのようにしてデータのセキュリティが確保されるのでしょうか? 複数の入力ソースをどのように操作しますか? IronPDF は、データ主権を維持しながらさまざまな入力ソースを処理します。これは、エンタープライズ環境で動的な印刷ワークフローを構築する開発者にとって重要です。 ライブラリは、HTML ファイル、URL、HTML 文字列、および Markdown コンテンツをサポートしています。 using IronPdf; using Microsoft.AspNetCore.Mvc; [ApiController] [Route("[controller]")] public class MultiSourcePrintController : ControllerBase { [HttpPost("print-multi")] public async Task<IActionResult> PrintFromMultipleSources() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.EnableJavaScript = false; renderer.RenderingOptions.Timeout = 30; // From URL with authentication renderer.LoginCredentials = new ChromeHttpLoginCredentials { NetworkUsername = "serviceaccount", NetworkPassword = "securepassword" }; var pdfFromUrl = await renderer.RenderUrlAsPdfAsync("https://reports.internal.example.com/report"); // From HTML file template var pdfFromFile = renderer.RenderHtmlFileAsPdf(@"Templates\report.html"); // From sanitized HTML string var pdfFromString = renderer.RenderHtmlAsPdf("<h2>Summary Report</h2><p>Generated on demand.</p>"); pdfFromUrl.Print(); return Ok(new { message = "PDF documents processed and printed.", sources = new[] { "URL", "File", "HTML string" }, timestamp = DateTime.UtcNow }); } } using IronPdf; using Microsoft.AspNetCore.Mvc; [ApiController] [Route("[controller]")] public class MultiSourcePrintController : ControllerBase { [HttpPost("print-multi")] public async Task<IActionResult> PrintFromMultipleSources() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.EnableJavaScript = false; renderer.RenderingOptions.Timeout = 30; // From URL with authentication renderer.LoginCredentials = new ChromeHttpLoginCredentials { NetworkUsername = "serviceaccount", NetworkPassword = "securepassword" }; var pdfFromUrl = await renderer.RenderUrlAsPdfAsync("https://reports.internal.example.com/report"); // From HTML file template var pdfFromFile = renderer.RenderHtmlFileAsPdf(@"Templates\report.html"); // From sanitized HTML string var pdfFromString = renderer.RenderHtmlAsPdf("<h2>Summary Report</h2><p>Generated on demand.</p>"); pdfFromUrl.Print(); return Ok(new { message = "PDF documents processed and printed.", sources = new[] { "URL", "File", "HTML string" }, timestamp = DateTime.UtcNow }); } } Imports IronPdf Imports Microsoft.AspNetCore.Mvc <ApiController> <Route("[controller]")> Public Class MultiSourcePrintController Inherits ControllerBase <HttpPost("print-multi")> Public Async Function PrintFromMultipleSources() As Task(Of IActionResult) Dim renderer As New ChromePdfRenderer() renderer.RenderingOptions.EnableJavaScript = False renderer.RenderingOptions.Timeout = 30 ' From URL with authentication renderer.LoginCredentials = New ChromeHttpLoginCredentials With { .NetworkUsername = "serviceaccount", .NetworkPassword = "securepassword" } Dim pdfFromUrl = Await renderer.RenderUrlAsPdfAsync("https://reports.internal.example.com/report") ' From HTML file template Dim pdfFromFile = renderer.RenderHtmlFileAsPdf("Templates\report.html") ' From sanitized HTML string Dim pdfFromString = renderer.RenderHtmlAsPdf("<h2>Summary Report</h2><p>Generated on demand.</p>") pdfFromUrl.Print() Return Ok(New With { .message = "PDF documents processed and printed.", .sources = New String() {"URL", "File", "HTML string"}, .timestamp = DateTime.UtcNow }) End Function End Class $vbLabelText $csharpLabel いずれの方法でも、印刷品質を維持しながらドキュメントの構造とグラフィックが保持されます。 実装には、認証、入力検証、暗号化のサポートが含まれます。 追加の入力ソースとして、 IronPDF はDOCX ファイル、RTF ドキュメント、および画像形式をサポートしており、アプリケーション全体で単一の PDF パイプラインとして機能するほど柔軟です。 エラー処理とログ記録をどのように実装しますか? コンプライアンス ログ記録要件のある実稼働環境では、信頼性の高いエラー処理が不可欠です。 IronPDF は、ネイティブの例外処理と、印刷障害を診断するためのトラブルシューティング ガイドを提供します。 相関 ID パターンを使用すると、監査履歴を確認するときに、ログ エントリを特定の印刷要求と簡単に一致させることができます。 using IronPdf; using System.Drawing.Printing; using Microsoft.AspNetCore.Mvc; [ApiController] [Route("[controller]")] public class SafePrintController : ControllerBase { [HttpPost("safe-print")] public IActionResult SafePrint(string documentId) { var correlationId = Guid.NewGuid().ToString(); try { var pdf = PdfDocument.FromFile(GetSecureFilePath(documentId)); var availablePrinters = PrinterSettings.InstalledPrinters.Cast<string>().ToList(); var targetPrinter = availablePrinters.FirstOrDefault(); if (string.IsNullOrEmpty(targetPrinter)) { return BadRequest(new { error = "No printer available", correlationId }); } var printDoc = pdf.GetPrintDocument(); printDoc.PrinterSettings.PrinterName = targetPrinter; printDoc.Print(); return Ok(new { message = $"Document {documentId} printed successfully", printer = targetPrinter, correlationId, timestamp = DateTime.UtcNow }); } catch (UnauthorizedAccessException) { return StatusCode(403, new { error = "Access denied", correlationId }); } catch (Exception ex) { return StatusCode(500, new { error = "Printing failed", correlationId, message = "Contact support with the correlation ID" }); } } private static string GetSecureFilePath(string documentId) => Path.Combine(AppContext.BaseDirectory, "documents", documentId + ".pdf"); } using IronPdf; using System.Drawing.Printing; using Microsoft.AspNetCore.Mvc; [ApiController] [Route("[controller]")] public class SafePrintController : ControllerBase { [HttpPost("safe-print")] public IActionResult SafePrint(string documentId) { var correlationId = Guid.NewGuid().ToString(); try { var pdf = PdfDocument.FromFile(GetSecureFilePath(documentId)); var availablePrinters = PrinterSettings.InstalledPrinters.Cast<string>().ToList(); var targetPrinter = availablePrinters.FirstOrDefault(); if (string.IsNullOrEmpty(targetPrinter)) { return BadRequest(new { error = "No printer available", correlationId }); } var printDoc = pdf.GetPrintDocument(); printDoc.PrinterSettings.PrinterName = targetPrinter; printDoc.Print(); return Ok(new { message = $"Document {documentId} printed successfully", printer = targetPrinter, correlationId, timestamp = DateTime.UtcNow }); } catch (UnauthorizedAccessException) { return StatusCode(403, new { error = "Access denied", correlationId }); } catch (Exception ex) { return StatusCode(500, new { error = "Printing failed", correlationId, message = "Contact support with the correlation ID" }); } } private static string GetSecureFilePath(string documentId) => Path.Combine(AppContext.BaseDirectory, "documents", documentId + ".pdf"); } Imports IronPdf Imports System.Drawing.Printing Imports Microsoft.AspNetCore.Mvc <ApiController> <Route("[controller]")> Public Class SafePrintController Inherits ControllerBase <HttpPost("safe-print")> Public Function SafePrint(documentId As String) As IActionResult Dim correlationId = Guid.NewGuid().ToString() Try Dim pdf = PdfDocument.FromFile(GetSecureFilePath(documentId)) Dim availablePrinters = PrinterSettings.InstalledPrinters.Cast(Of String)().ToList() Dim targetPrinter = availablePrinters.FirstOrDefault() If String.IsNullOrEmpty(targetPrinter) Then Return BadRequest(New With { .error = "No printer available", .correlationId = correlationId }) End If Dim printDoc = pdf.GetPrintDocument() printDoc.PrinterSettings.PrinterName = targetPrinter printDoc.Print() Return Ok(New With { .message = $"Document {documentId} printed successfully", .printer = targetPrinter, .correlationId = correlationId, .timestamp = DateTime.UtcNow }) Catch ex As UnauthorizedAccessException Return StatusCode(403, New With {.error = "Access denied", .correlationId = correlationId}) Catch ex As Exception Return StatusCode(500, New With { .error = "Printing failed", .correlationId = correlationId, .message = "Contact support with the correlation ID" }) End Try End Function Private Shared Function GetSecureFilePath(documentId As String) As String Return Path.Combine(AppContext.BaseDirectory, "documents", documentId & ".pdf") End Function End Class $vbLabelText $csharpLabel これにより、システム リソースが利用できない場合でも信頼性の高い印刷が保証されます。 相関 ID を使用すると、分散システム全体のリクエストを追跡し、監査証跡内の特定の印刷ジョブにログ エントリをリンクできます。 構造化されたエラー応答により、呼び出し元のクライアントは、フォールバック プリンターで再試行したり、ユーザーに通知するなどの適切なアクションを実行することもできます。 プリンターが利用できない場合はどうなるでしょうか? コードで指定されたプリンターが利用できない場合、コードは構造化されたエラー応答を返します。 成功した印刷ジョブをどのように監視しますか? 印刷ジョブが成功すると、ジョブの詳細を含む確認メッセージが返されます。 どのような詳細構成オプションが利用可能ですか? IronPDF のレンダリング オプションは、エンタープライズ アーキテクチャに必要な複雑なシナリオをサポートします。 このライブラリは、高忠実度のドキュメントを生成する際のパフォーマンス最適化とメモリ管理の設定を提供します。 DpiResolution を 300 に設定すると、紙文書に適した印刷品質の出力が生成されます。一方、CssMediaType.Print オプションは、ソース HTML 内の印刷固有の CSS ルールを有効にします。 using IronPdf; using Microsoft.AspNetCore.Mvc; [ApiController] [Route("[controller]")] public class AdvancedPrintController : ControllerBase { [HttpGet("advanced")] public IActionResult ConfigureAdvancedPrinting() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.EnableJavaScript = false; renderer.RenderingOptions.RenderDelay = 500; renderer.RenderingOptions.Timeout = 60; renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print; renderer.RenderingOptions.PrintHtmlBackgrounds = true; renderer.RenderingOptions.DpiResolution = 300; var pdf = renderer.RenderHtmlAsPdf(GetEnterpriseHtml()); pdf.SecuritySettings.AllowUserPrinting = true; pdf.SecuritySettings.AllowUserEditing = false; pdf.SecuritySettings.OwnerPassword = Guid.NewGuid().ToString(); pdf.MetaData.Author = "Enterprise Document System"; pdf.MetaData.Subject = "Compliance Document"; pdf.MetaData.Keywords = "enterprise,secure,compliant"; pdf.MetaData.CreationDate = DateTime.UtcNow; // Apply digital signature for document integrity // pdf.SignWithFile("/path/to/certificate.pfx", "certificatePassword"); return File(pdf.BinaryData, "application/pdf"); } private static string GetEnterpriseHtml() => @" <!DOCTYPE html><html><head> <style>@page { size: A4; margin: 1cm; } body { font-family: Arial, sans-serif; }</style> </head><body> <h1>Enterprise Document</h1> <p>CONFIDENTIAL -- INTERNAL USE ONLY</p> </body></html>"; } using IronPdf; using Microsoft.AspNetCore.Mvc; [ApiController] [Route("[controller]")] public class AdvancedPrintController : ControllerBase { [HttpGet("advanced")] public IActionResult ConfigureAdvancedPrinting() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.EnableJavaScript = false; renderer.RenderingOptions.RenderDelay = 500; renderer.RenderingOptions.Timeout = 60; renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print; renderer.RenderingOptions.PrintHtmlBackgrounds = true; renderer.RenderingOptions.DpiResolution = 300; var pdf = renderer.RenderHtmlAsPdf(GetEnterpriseHtml()); pdf.SecuritySettings.AllowUserPrinting = true; pdf.SecuritySettings.AllowUserEditing = false; pdf.SecuritySettings.OwnerPassword = Guid.NewGuid().ToString(); pdf.MetaData.Author = "Enterprise Document System"; pdf.MetaData.Subject = "Compliance Document"; pdf.MetaData.Keywords = "enterprise,secure,compliant"; pdf.MetaData.CreationDate = DateTime.UtcNow; // Apply digital signature for document integrity // pdf.SignWithFile("/path/to/certificate.pfx", "certificatePassword"); return File(pdf.BinaryData, "application/pdf"); } private static string GetEnterpriseHtml() => @" <!DOCTYPE html><html><head> <style>@page { size: A4; margin: 1cm; } body { font-family: Arial, sans-serif; }</style> </head><body> <h1>Enterprise Document</h1> <p>CONFIDENTIAL -- INTERNAL USE ONLY</p> </body></html>"; } Imports IronPdf Imports Microsoft.AspNetCore.Mvc <ApiController> <Route("[controller]")> Public Class AdvancedPrintController Inherits ControllerBase <HttpGet("advanced")> Public Function ConfigureAdvancedPrinting() As IActionResult Dim renderer As New ChromePdfRenderer() renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 renderer.RenderingOptions.EnableJavaScript = False renderer.RenderingOptions.RenderDelay = 500 renderer.RenderingOptions.Timeout = 60 renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print renderer.RenderingOptions.PrintHtmlBackgrounds = True renderer.RenderingOptions.DpiResolution = 300 Dim pdf = renderer.RenderHtmlAsPdf(GetEnterpriseHtml()) pdf.SecuritySettings.AllowUserPrinting = True pdf.SecuritySettings.AllowUserEditing = False pdf.SecuritySettings.OwnerPassword = Guid.NewGuid().ToString() pdf.MetaData.Author = "Enterprise Document System" pdf.MetaData.Subject = "Compliance Document" pdf.MetaData.Keywords = "enterprise,secure,compliant" pdf.MetaData.CreationDate = DateTime.UtcNow ' Apply digital signature for document integrity ' pdf.SignWithFile("/path/to/certificate.pfx", "certificatePassword") Return File(pdf.BinaryData, "application/pdf") End Function Private Shared Function GetEnterpriseHtml() As String Return " <!DOCTYPE html><html><head> <style>@page { size: A4; margin: 1cm; } body { font-family: Arial, sans-serif; }</style> </head><body> <h1>Enterprise Document</h1> <p>CONFIDENTIAL -- INTERNAL USE ONLY</p> </body></html>" End Function End Class $vbLabelText $csharpLabel すべてのセキュリティ設定が適用された状態で生成されたら、pdf.Print() を呼び出すと、ドキュメントがプリンターに送信されます。 このアプローチにより、デジタル署名と暗号化を通じてドキュメントの整合性を維持しながら、企業のセキュリティ標準への準拠が保証されます。 長期にわたるアーカイブの場合は、数十年にわたって読み取りと再現が可能でなければならないドキュメント向けに特別に設計された標準であるPDF/A 準拠を検討してください。 サーバー側印刷とクライアント側印刷の違いは何ですか? サーバー側印刷とクライアント側印刷のどちらを選択するかは、使用事例によって異なります。 以下の表は、主なトレードオフをまとめたものです。 ASP.NETにおけるサーバー側とクライアント側の PDF 印刷 アスペクト サーバー側印刷 クライアント側印刷 プリンターアクセス サーバー上のネットワークプリンターとローカルプリンター ユーザーのローカル接続プリンター ユーザーインタラクション なし - 完全自動化 ブラウザの印刷ダイアログが表示されます コンプライアンスログ 完全なサーバー側監査証跡 クライアント側コンソールログのみ セキュリティ管理 サーバーはすべての制限を強制する ブラウザはコンテンツセキュリティポリシーを適用します 最適 バッチジョブ、請求書、規制産業 オンデマンドのユーザートリガー印刷 監査証跡の文書化が求められる規制産業では、サーバー側印刷が最適な選択肢です。クライアント側印刷は、エンドユーザーが印刷先を制御する必要がある場合に適しています。 ASP.NETでの PDF 印刷にIronPDFを選択する理由は何ですか? IronPDF は、企業のセキュリティ標準を維持しながら、 ASP.NET PDF 印刷を複雑な課題から簡単な実装へと変換します。 このライブラリは、Adobe Reader や外部依存関係を必要とせず、最小限のコードでPDF ファイルを生成して印刷すると同時に、SOC2、HIPAA、業界固有の規制への準拠を保証します。 完全な API は、さまざまな入力形式、編集機能、セキュリティ機能、および完全な PDF 管理のための整理ツールをサポートします。 ライブラリに用意された豊富なチュートリアル、コード例、トラブルシューティングリソースにより、既存のインフラストラクチャへのスムーズな統合が保証されます。 PDF 生成を超えた印刷要件 (画像や Office ファイルの直接印刷など) については、 Iron Software専用 for .NET印刷ライブラリであるIronPrintも提供しています。 PDF コンテンツの生成と操作に重点を置くIronPDFとは異なり、 IronPrint は中間変換なしの直接ファイル印刷に特化しています。 Microsoft のASP.NETドキュメントによると、サーバー側の印刷操作は IIS アプリケーション プール ID の制限の対象となるため、ライブラリ アプローチはあらゆる実稼働展開において適切なアーキテクチャ上の選択となります。 今すぐ無料トライアルを開始し、 IronPDF がASP.NETアプリケーションでのドキュメント処理をいかに簡素化するかを体験してください。 完全なドキュメント、直接的なエンジニアリング サポート、および実証済みのコンプライアンス認定により、生産準備が整った PDF 印刷を数分で実行できます。 さらに詳しい情報については、 Iron Software の PDF ドキュメント セキュリティに関するガイドとW3C PDF アクセシビリティ仕様を参照してください。 よくある質問 ASP.NETアプリケーションからPDFを直接印刷するにはどうすればよいですか? IronPDFを使ってASP.NETアプリケーションから直接PDFを印刷するには、HTMLファイルをPDFに変換してからプリンターに送信します。IronPDFは組み込みのメソッドでこのプロセスを簡素化します。 ASP.NETでPDFを印刷するためにIronPDFを使う利点は何ですか? IronPDFはASP.NETでPDFを印刷するために、簡単な統合、高品質なレンダリング、HTMLコンテンツを正確にPDFに変換する機能など、いくつかの利点を提供します。 IronPDFを使って印刷する前にPDFをカスタマイズすることは可能ですか? はい、IronPDFではヘッダー、フッター、透かしを追加したり、ページサイズや余白を設定することで、印刷前にPDFをカスタマイズすることができます。 IronPDFは大きなPDFファイルを印刷できますか? IronPDFは大きなPDFファイルを効率的に処理することができ、複雑なドキュメントもASP.NETアプリケーションから正確かつ迅速に印刷することができます。 IronPDFはPDF印刷のための異なるプリンタ設定をサポートしていますか? IronPDFは様々なプリンター設定をサポートしており、ニーズに合わせて用紙サイズ、向き、印刷品質を指定することができます。 ASP.NETで印刷前にPDFをプレビューする方法はありますか? IronPDFを使用すると、ASP.NETアプリケーション内でPDFプレビューを生成、表示することができ、ユーザーは印刷コマンドを実行する前にドキュメントを確認することができます。 IronPDFはどのようなフォーマットをPDFに変換できますか? IronPDFはHTML、ASPX、画像ファイルなど様々なフォーマットを印刷用のPDFに変換することができます。 IronPDFはどのようにして印刷されたPDFドキュメントの品質を保証するのですか? IronPDFは高度なレンダリング技術を使用し、印刷されたPDFドキュメントが元のコンテンツに忠実で、シャープなテキストと鮮明な画像を維持することを保証します。 IronPDFを使って暗号化されたPDFやパスワードで保護されたPDFを印刷することはできますか? IronPDFは暗号化されたPDFやパスワードで保護されたPDFを扱うことができ、ASP.NETアプリケーション内で必要な認証情報を提供することで安全に印刷することができます。 既存のASP.NETアプリケーションにIronPDFを統合するのは簡単ですか? IronPDFを既存のASP.NETアプリケーションに統合するのは、包括的なドキュメントとさまざまな開発環境のサポートにより簡単です。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 2026年3月1日 .NETでIronPDFを使用してPDFファイルを作成する方法 (C#チュートリアル) C#で開発者向けにPDFファイルを作成する効果的な方法を発見します。コーディングスキルを向上させ、プロジェクトを効率化します。この記事を今すぐお読みください! 詳しく読む 更新日 2026年2月27日 C#でPDFファイルをマージする方法 IronPDF で PDF をマージします。シンプルな VB.NET コードを使用して、複数の PDF ファイルを1つのドキュメントに結合する方法を学びます。ステップバイステップの例が含まれています。 詳しく読む 更新日 2026年3月1日 .NET 10 開発者向け C# PDFWriter チュートリアル このステップバイステップガイドで開発者がC# PDFWriterを使用してPDFを効率的に作成する方法を学びます。記事を読んでスキルを向上させましょう! 詳しく読む IronPDFを使用してBlazorでPDFを表示する方法ASP.NET MVC PDFビューア:セ...
更新日 2026年3月1日 .NETでIronPDFを使用してPDFファイルを作成する方法 (C#チュートリアル) C#で開発者向けにPDFファイルを作成する効果的な方法を発見します。コーディングスキルを向上させ、プロジェクトを効率化します。この記事を今すぐお読みください! 詳しく読む
更新日 2026年2月27日 C#でPDFファイルをマージする方法 IronPDF で PDF をマージします。シンプルな VB.NET コードを使用して、複数の PDF ファイルを1つのドキュメントに結合する方法を学びます。ステップバイステップの例が含まれています。 詳しく読む
更新日 2026年3月1日 .NET 10 開発者向け C# PDFWriter チュートリアル このステップバイステップガイドで開発者がC# PDFWriterを使用してPDFを効率的に作成する方法を学びます。記事を読んでスキルを向上させましょう! 詳しく読む