使用IRONPDF 如何在 ASP.NET 中以編程方式打印 PDF 文件 Curtis Chau 發表日期:10月 27, 2025 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 ASP.NET 列印 PDF 文件任務通常會遇到開發人員經常遇到的獨特挑戰。 無論您是產生用於發票、報告還是運輸標籤的 PDF 文檔,實現可靠的列印功能都需要應對伺服器-用戶端架構的複雜性。 在本文中,我們將向您展示如何使用IronPDF強大的 .NET PDF 庫來處理PDF 列印任務。 理解挑戰 傳統桌面應用程式可以直接存取預設印表機,但 ASP.NET Core 應用程式在列印 PDF 文件時會面臨幾個障礙: // 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 IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 上面的程式碼展示了一個常見的錯誤。 伺服器環境缺少直接印表機存取權限,並且由於 IIS 權限限制,系統會拋出錯誤。 另一點要記住的是,Web應用程式必須有效地處理伺服器端和用戶端列印場景。 開始使用 IronPdf IronPDF提供了一個完整的 .NET core 解決方案,用於產生 PDF 文件並進行列印,無需 Adobe Reader 等外部相依性。 讓我們使用 NuGet 安裝 IronPDF 套件: Install-Package IronPdf 這個 .NET 函式庫可以跨作業系統無縫運行,消除了困擾其他函式庫的相容性問題。 該工具在 Microsoft Windows 和其他作業系統環境下都能運作良好。 使用預設印表機在伺服器端建立和列印 PDF 文檔 以下是如何在 ASP.NET 控制器中根據 HTML 標記產生和列印 PDF 文件的方法: using IronPdf; using Microsoft.AspNetCore.Mvc; using System.Drawing; public class PdfController : Controller { public IActionResult Index() { // Initialize the renderer var renderer = new ChromePdfRenderer(); // Configure print-optimized settings renderer.RenderingOptions.PrintHtmlBackgrounds = true; renderer.RenderingOptions.MarginBottom = 10; renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print; // Generate PDF from HTML var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $749</p>"); // Print to default printer pdf.Print(); return Ok("Document sent to printer"); } } using IronPdf; using Microsoft.AspNetCore.Mvc; using System.Drawing; public class PdfController : Controller { public IActionResult Index() { // Initialize the renderer var renderer = new ChromePdfRenderer(); // Configure print-optimized settings renderer.RenderingOptions.PrintHtmlBackgrounds = true; renderer.RenderingOptions.MarginBottom = 10; renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print; // Generate PDF from HTML var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $749</p>"); // Print to default printer pdf.Print(); return Ok("Document sent to printer"); } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel ChromePdfRenderer 負責處理轉換,同時保留 CSS 樣式和字體大小格式。 此範例示範了在無需使用者互動的情況下使用預設印表機進行基本列印。 輸出 網路印表機配置 對於需要特定印表機路由的企業環境: public IActionResult PrintToNetworkPrinter(string filePath) { // Load existing PDF file var pdfDocument = PdfDocument.FromFile(filePath); // Get print document for advanced settings var printDocument = pdfDocument.GetPrintDocument(); // Specify network printer printDocument.PrinterSettings.PrinterName = @"\\server\printer"; printDocument.PrinterSettings.Copies = 2; // Configure page settings printDocument.DefaultPageSettings.Landscape = false; var renderer = printDocument.PrinterSettings.PrinterResolution; // Execute print printDocument.Print(); return Json(new { success = true }); } public IActionResult PrintToNetworkPrinter(string filePath) { // Load existing PDF file var pdfDocument = PdfDocument.FromFile(filePath); // Get print document for advanced settings var printDocument = pdfDocument.GetPrintDocument(); // Specify network printer printDocument.PrinterSettings.PrinterName = @"\\server\printer"; printDocument.PrinterSettings.Copies = 2; // Configure page settings printDocument.DefaultPageSettings.Landscape = false; var renderer = printDocument.PrinterSettings.PrinterResolution; // Execute print printDocument.Print(); return Json(new { success = true }); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 這種方法可以完全控製印表機設置,包括紙張格式和分辨率,這對於正確的繪圖和佈局至關重要。 輸出 如何在 ASP.NET 中以程式方式列印 PDF 檔案:圖 2 - 使用網頁列印列印 PDF 列印確認 如何在 ASP.NET 中以程式設計方式列印 PDF 檔案:圖 3 - PDF 列印作業成功訊息 客戶端列印策略 由於瀏覽器限制了直接列印,因此可以透過提供 PDF 檔案供下載來實現客戶端列印: public IActionResult GetRawPrintablePdf() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml()); // This header tells the browser to display the file inline. // We use IHeaderDictionary indexer to prevent ArgumentException. **HttpContext context**.Response.Headers["Content-Disposition"] = "inline; filename=invoice.pdf"; return File(pdf.BinaryData, "application/pdf"); } public IActionResult PrintUsingClientWrapper() { var printUrl = Url.Action(nameof(GetRawPrintablePdf)); // Use a simple HTML/JavaScript wrapper to force the print dialog var html = new StringBuilder(); html.AppendLine("<!DOCTYPE html>"); html.AppendLine("<html lang=\"en\">"); html.AppendLine("<head>"); html.AppendLine(" <title>Print Document</title>"); html.AppendLine("</head>"); html.AppendLine("<body>"); // Load the PDF from the 'GetRawPrintablePdf' action into an invisible iframe. html.AppendLine($" <iframe src='{printUrl}' style='position:absolute; top:0; left:0; width:100%; height:100%; border:none;'></iframe>"); html.AppendLine(" <script>"); // Wait for the iframe (and thus the PDF) to load, then trigger the print dialog. html.AppendLine(" window.onload = function() {"); html.AppendLine(" // Wait briefly to ensure the iframe content is rendered before printing."); html.AppendLine(" setTimeout(function() {"); html.AppendLine(" window.print();"); html.AppendLine(" }, 100);"); html.AppendLine(" };"); html.AppendLine(" </script>"); html.AppendLine("</body>"); html.AppendLine("</html>"); return Content(html.ToString(), "text/html"); } private string GetInvoiceHtml() { // Build HTML with proper structure return @" <html> <head> <style> body { font-family: Arial, sans-serif; } .header { font-weight: bold; color: #1e40af; border-bottom: 2px solid #3b82f6; padding-bottom: 5px; } .content { padding-top: 10px; } </style> </head> <body> <div class='header'>Invoice Summary (Client View)</div> <div class='content'> <p>Document content: This file is optimized for printing.</p> <p>Total Amount: <b>$749.00</b></p> </div> </body> </html>"; } public IActionResult GetRawPrintablePdf() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml()); // This header tells the browser to display the file inline. // We use IHeaderDictionary indexer to prevent ArgumentException. **HttpContext context**.Response.Headers["Content-Disposition"] = "inline; filename=invoice.pdf"; return File(pdf.BinaryData, "application/pdf"); } public IActionResult PrintUsingClientWrapper() { var printUrl = Url.Action(nameof(GetRawPrintablePdf)); // Use a simple HTML/JavaScript wrapper to force the print dialog var html = new StringBuilder(); html.AppendLine("<!DOCTYPE html>"); html.AppendLine("<html lang=\"en\">"); html.AppendLine("<head>"); html.AppendLine(" <title>Print Document</title>"); html.AppendLine("</head>"); html.AppendLine("<body>"); // Load the PDF from the 'GetRawPrintablePdf' action into an invisible iframe. html.AppendLine($" <iframe src='{printUrl}' style='position:absolute; top:0; left:0; width:100%; height:100%; border:none;'></iframe>"); html.AppendLine(" <script>"); // Wait for the iframe (and thus the PDF) to load, then trigger the print dialog. html.AppendLine(" window.onload = function() {"); html.AppendLine(" // Wait briefly to ensure the iframe content is rendered before printing."); html.AppendLine(" setTimeout(function() {"); html.AppendLine(" window.print();"); html.AppendLine(" }, 100);"); html.AppendLine(" };"); html.AppendLine(" </script>"); html.AppendLine("</body>"); html.AppendLine("</html>"); return Content(html.ToString(), "text/html"); } private string GetInvoiceHtml() { // Build HTML with proper structure return @" <html> <head> <style> body { font-family: Arial, sans-serif; } .header { font-weight: bold; color: #1e40af; border-bottom: 2px solid #3b82f6; padding-bottom: 5px; } .content { padding-top: 10px; } </style> </head> <body> <div class='header'>Invoice Summary (Client View)</div> <div class='content'> <p>Document content: This file is optimized for printing.</p> <p>Total Amount: <b>$749.00</b></p> </div> </body> </html>"; } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel PDF 文件將在瀏覽器中打開,使用者可以使用標準的瀏覽器列印對話框,透過預設印表機觸發列印。 這種方法優於直接向伺服器端發出列印請求。 輸出 如何在 ASP.NET 中以程式設計方式列印 PDF 檔案:圖 4 - 用戶端列印對話框 處理各種原始碼輸入 IronPDF 可以靈活處理各種原始碼輸入,這對於希望創建動態列印程式碼的開發人員來說非常重要: public async Task<IActionResult> PrintFromMultipleSources() { var renderer = new ChromePdfRenderer(); // From URL var pdfFromUrl = await renderer.RenderUrlAsPdfAsync("https://example.com"); // From HTML file path var pdfFromFile = renderer.RenderHtmlFileAsPdf(@"Templates\report.html"); var pdfToStream = renderer.RenderHtmlAsPdf("<h2>PDF from Memory Stream</h2><p>This content was loaded into memory first.</p>"); // Now, write the valid PDF bytes to the stream using (var stream = new MemoryStream(pdfToStream.BinaryData)) { var pdfFromStream = new PdfDocument(stream); // Example: Print the PDF loaded from the stream // pdfFromStream.Print(); } pdfFromUrl.Print(); // Logging the various files handled var fileList = new List<string> { "URL", "File Path", "Memory Stream" }; return Ok("PDF documents processed and 'example.com' printed to default server printer."); } public async Task<IActionResult> PrintFromMultipleSources() { var renderer = new ChromePdfRenderer(); // From URL var pdfFromUrl = await renderer.RenderUrlAsPdfAsync("https://example.com"); // From HTML file path var pdfFromFile = renderer.RenderHtmlFileAsPdf(@"Templates\report.html"); var pdfToStream = renderer.RenderHtmlAsPdf("<h2>PDF from Memory Stream</h2><p>This content was loaded into memory first.</p>"); // Now, write the valid PDF bytes to the stream using (var stream = new MemoryStream(pdfToStream.BinaryData)) { var pdfFromStream = new PdfDocument(stream); // Example: Print the PDF loaded from the stream // pdfFromStream.Print(); } pdfFromUrl.Print(); // Logging the various files handled var fileList = new List<string> { "URL", "File Path", "Memory Stream" }; return Ok("PDF documents processed and 'example.com' printed to default server printer."); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 以上程式碼示範如何建立新的文件來源處理清單。 每種方法都能在保持列印品質的同時,保留文件結構和圖形。 如何在 ASP.NET 中以程式設計方式列印 PDF 檔案:圖 5 錯誤處理和日誌記錄 在生產環境中實作健全的錯誤處理機制: using System.Drawing.Printing; // For PrinterSettings // ... other usings ... public IActionResult SafePrint(string documentId) { try { var pdf = LoadPdfDocument(documentId); // Verify printer availability if (!PrinterSettings.InstalledPrinters.Cast<string>() .Contains("Target Printer")) { // Log error and handle gracefully return BadRequest("Printer not available"); } pdf.Print(); // Log successful output return Ok($"Document {documentId} printed successfully"); } catch (Exception ex) { // Log error details return StatusCode(500, "Printing failed"); } } using System.Drawing.Printing; // For PrinterSettings // ... other usings ... public IActionResult SafePrint(string documentId) { try { var pdf = LoadPdfDocument(documentId); // Verify printer availability if (!PrinterSettings.InstalledPrinters.Cast<string>() .Contains("Target Printer")) { // Log error and handle gracefully return BadRequest("Printer not available"); } pdf.Print(); // Log successful output return Ok($"Document {documentId} printed successfully"); } catch (Exception ex) { // Log error details return StatusCode(500, "Printing failed"); } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 即使系統資源不可用,也能確保可靠列印,這是列印服務的關鍵組成部分。 輸出情景 印表機不可用 如果程式碼中指定的印表機不可用,程式碼將顯示以下錯誤訊息: 如何在 ASP.NET 中以程式方式列印 PDF 檔案:圖 6 - 印表機不可用錯誤 PDF文件列印成功。 如果您的 PDF 文件列印成功,您應該會看到類似這樣的確認訊息: 如何在 ASP.NET 中以程式方式列印 PDF 檔案:圖 7 - PDF 列印成功訊息 進階配置 IronPDF的資料夾結構支援複雜的場景。 您使用的 IronPDF 庫版本可能會影響這些設定: public IActionResult ConfigureAdvancedPrinting(object sender, EventArgs e) { var renderer = new ChromePdfRenderer(); // Configure rendering options renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.EnableJavaScript = true; renderer.RenderingOptions.RenderDelay = 500; // Wait for dynamic content // Generate complex PDF documents var pdf = renderer.RenderHtmlAsPdf(GetDynamicContent()); // Apply security settings pdf.SecuritySettings.AllowUserPrinting = true; pdf.MetaData.Author = "Your Company"; return File(pdf.BinaryData, "application/pdf"); } public IActionResult ConfigureAdvancedPrinting(object sender, EventArgs e) { var renderer = new ChromePdfRenderer(); // Configure rendering options renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.EnableJavaScript = true; renderer.RenderingOptions.RenderDelay = 500; // Wait for dynamic content // Generate complex PDF documents var pdf = renderer.RenderHtmlAsPdf(GetDynamicContent()); // Apply security settings pdf.SecuritySettings.AllowUserPrinting = true; pdf.MetaData.Author = "Your Company"; return File(pdf.BinaryData, "application/pdf"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 文件產生後,只需使用 pdf.Print() 指令即可列印。 IronPrint 替代方案 對於特殊的列印需求,Iron Software 還提供 IronPrint,這是一個專用的 .NET 列印庫,具有增強的跨平台支援。 您可以在他們的網站上找到更多資訊的連結。主要參數就是檔案路徑。 產品詳情可在其網站上查看。 結論 IronPDF 將 ASP.NET PDF 列印從複雜的挑戰轉變為簡單的實作。 無需 Adobe Reader 或外部依賴項,只需編寫少量程式碼即可產生和列印 PDF 文件。 PDF 庫可以處理從 HTML 轉換到印表機配置的所有操作,使其成為伺服器端自動化和用戶端列印場景的理想選擇。 準備好簡化您的 PDF 列印工作流程了嗎? 立即開始免費試用,體驗 IronPDF 如何簡化 ASP.NET 應用程式中的文件處理。 憑藉全面的文件和直接的工程支持,您將在幾分鐘內即可開始生產就緒的 PDF 列印。 常見問題解答 如何在 ASP.NET 中列印 PDF 檔案? 您可以使用 IronPDF 在 ASP.NET 中列印 PDF 檔案,IronPDF 透過其全面的 API 簡化了列印過程,可輕鬆整合並提供可靠的列印功能。 在 ASP.NET 應用程式中列印 PDF 時,常遇到哪些挑戰? 常見的挑戰包括管理伺服器-用戶端架構的複雜性,以及產生一致的列印輸出。IronPDF 以專為無縫整合和可靠結果而設計的功能來解決這些挑戰。 IronPDF 是否可用於產生特定用途的 PDF 文件,例如發票或報告? 是的,IronPDF 可用於產生各種用途的 PDF,包括發票、報告和運送標籤,為開發人員提供了多用途的文件產生工具。 IronPDF 提供哪些功能來支援 ASP.NET 中的 PDF 列印? IronPDF for .NET 提供 HTML 到 PDF 的轉換、CSS 定義和 JavaScript 支援等功能,這些功能都有助於在 ASP.NET 應用程式中有效地列印 PDF。 IronPDF for .NET 可以在 ASP.NET 中自動列印 PDF 嗎? 是的,IronPDF 可在 ASP.NET 應用程式中自動進行 PDF 列印,讓開發人員簡化工作流程並提高生產力。 IronPdf 如何處理伺服器-用戶端架構的複雜性? IronPdf 旨在透過提供強大的 API,簡化直接從伺服器端產生和列印 PDF 的流程,以處理伺服器-用戶端架構的複雜性。 IronPDF 是否支持在打印前定制 PDF 文档? IronPDF 支援廣泛的 PDF 文件自訂選項,讓開發人員可以在列印前控制版面、內容和設計。 哪些程式語言與 IronPDF 的 PDF 列印相容? IronPDF 與 C# 及其他 .NET 語言相容,是在 ASP.NET Framework 內工作的開發人員的理想選擇。 IronPDF 可以與其他 .NET 應用程式整合嗎? 是的,IronPDF 可以輕鬆地與其他 .NET 應用程式整合,允許無縫地添加到現有系統中,並增強 PDF 管理能力。 IronPDF 如何確保在不同設備上輸出一致的列印結果? IronPDF 支援 HTML、CSS 和 JavaScript 至 PDF 的高保真渲染和精確轉換,無論使用何種列印設備,都能確保一致的列印輸出。 IronPDF 與 .NET 10 相容嗎?升級 IronPDF 有什麼好處? 是的,IronPDF 與 .NET 10 完全相容,包括針對 Windows、Linux、macOS 和容器化環境的 .NET 10 專案。升級至 .NET 10 可開啟各種改進,例如降低記憶體使用率、提高性能、新的 C# 語言功能,以及 ASP.NET Core 10 中可簡化 PDF 生成和整合的增強功能。 Curtis Chau 立即與工程團隊聊天 技術作家 Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。 相關文章 發表日期 12月 18, 2025 .NET PDF API 教學課程(面向 .NET 開發人員) 如何使用 IronPDF 建立 .NET PDF API 閱讀更多 發表日期 12月 18, 2025 如何使用 Aspose C# 和 IronPDF 建立 PDF 本指南將一步步教您如何使用 Aspose C# 和 IronPDF 建立 PDF,專為開發人員設計。 閱讀更多 發表日期 12月 18, 2025 使用 IronPDF 建立 .NET Core PDF 產生器 在 .NET Core 中使用 IronPDF 構建強大的 PDF 生成器。將 HTML 轉換為 PDF,創建發票並生成具有像素完美渲染的報告。 閱讀更多 如何在 VB.NET 中將 PDF 轉換為 JPG如何在 .NET 中將 PDF 轉換為...
發表日期 12月 18, 2025 如何使用 Aspose C# 和 IronPDF 建立 PDF 本指南將一步步教您如何使用 Aspose C# 和 IronPDF 建立 PDF,專為開發人員設計。 閱讀更多
發表日期 12月 18, 2025 使用 IronPDF 建立 .NET Core PDF 產生器 在 .NET Core 中使用 IronPDF 構建強大的 PDF 生成器。將 HTML 轉換為 PDF,創建發票並生成具有像素完美渲染的報告。 閱讀更多