跳過到頁腳內容
使用 IRONPRINT

如何使用IronPrint在VB.NET中不使用Adobe列印PDF

在.NET中列印 PDF 文件需要一個庫來處理渲染、印表機通訊和設定管理,而無需強制您安裝 Adob​​e Reader 或其他第三方相依性。 IronPrint透過簡潔的 API 解決了這個問題,該 API 可在 Windows、macOS、Linux 和行動平台上運作。 本指南將引導您完成從安裝軟體包到處理常見列印錯誤的每一步,以便您可以快速自信地將 PDF 列印功能新增至您的 VB .NET應用程式。

在本教學結束時,您將知道如何靜默列印、顯示 Windows 列印對話方塊、套用自訂設定(例如 DPI 和紙張方向)、枚舉可用印表機以及如何優雅地處理異常情況。

如何在.NET專案中安裝IronPrint ?

透過NuGet套件管理器安裝IronPrint只需幾秒鐘。 在 Visual Studio 中開啟程式包管理器控制台並執行:

Install-Package IronPrint

安裝完成後,在任何需要列印的檔案頂部新增命名空間匯入語句,然後在呼叫任何IronPrint方法之前套用您的授權金鑰:

Imports IronPrint

' Apply your license key (get a free trial key at ironsoftware.com)
License.LicenseKey = "YOUR-LICENSE-KEY"
Imports IronPrint

' Apply your license key (get a free trial key at ironsoftware.com)
License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

IronPrint 的目標平台為.NET Framework 4.6.2 以上版本,以及.NET 6、7、8、9 和 10。它為每個平台都配備了原生渲染引擎,因此您無需安裝 Adob​​e Acrobat、Ghostscript 或任何其他 PDF 渲染器。 同一個NuGet套件適用於用.NET編寫的 Windows Forms、WPF、控制台應用程式和ASP.NET專案。

支援的文件格式包括 PDF、PNG、HTML、TIFF、GIF、JPEG 和 BMP。您可以在IronPrint統一列印 API 參考文件中了解其全部功能。

有關許可和啟動的更多信息,請訪問IronPrint許可證密鑰文件

如何在.NET中靜默列印PDF?

靜默列印是指直接將文件傳送到印表機,而不顯示任何對話方塊。 此模式對於自動化工作流程、大量發票處理、報表產生管道以及沒有使用者在場的伺服器端文件列印至關重要。

根據微軟關於.NET中 GDI+ 列印的文檔,傳統的.NET列印涉及創建一個 PrintDocument 對象,掛鉤到 PrintPage 事件,並手動處理頁面佈局。 IronPrint省去了所有這些樣板程式碼:

Imports IronPrint

Module SilentPrinting
    Sub Main()
        Dim pdfPath As String = "invoice.pdf"

        ' Print to the system default printer
        Printer.Print(pdfPath)

        ' Print to a specific printer by name
        Dim settings As New PrintSettings()
        settings.PrinterName = "Microsoft Print to PDF"
        Printer.Print(pdfPath, settings)
    End Sub
End Module
Imports IronPrint

Module SilentPrinting
    Sub Main()
        Dim pdfPath As String = "invoice.pdf"

        ' Print to the system default printer
        Printer.Print(pdfPath)

        ' Print to a specific printer by name
        Dim settings As New PrintSettings()
        settings.PrinterName = "Microsoft Print to PDF"
        Printer.Print(pdfPath, settings)
    End Sub
End Module
$vbLabelText   $csharpLabel

Printer.Print 方法在內部處理所有 PDF 渲染。 當您呼叫 Printer.Print(pdfPath) 而不帶 PrintSettings 參數時, IronPrint會自動選擇系統預設印表機。 當您提供一個帶有 PrintSettings 值的 PrinterName 物件時,它會將作業路由到該特定裝置。

對於批次處理場景,您可以遍歷檔案路徑列表,並對每個檔案呼叫 Printer.Print。 由於IronPrint不會為靜默列印開啟任何 UI 線程,因此它在控制台應用程式、Windows 服務和ASP.NET請求處理程序中都能正常運作。

若要深入了解可用選項,請閱讀IronPrint列印設定文件

如何在列印前顯示列印對話框?

有時,在執行列印作業之前,需要讓使用者選擇印表機、調整頁面範圍或設定份數。 IronPrint為此情況提供了 Printer.ShowPrintDialog

Imports IronPrint

Module DialogPrinting
    Sub Main()
        ' Display the standard Windows print dialog
        Printer.ShowPrintDialog("report.pdf")
    End Sub
End Module
Imports IronPrint

Module DialogPrinting
    Sub Main()
        ' Display the standard Windows print dialog
        Printer.ShowPrintDialog("report.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

執行此方法時,Windows 將顯示其標準列印對話方塊。 使用者可以選擇任何已安裝的印表機,選擇頁面範圍,選擇份數,並調整雙面列印設定。 使用者點擊"列印"或"取消"後,控制權將返回您的程式碼。

這種方法可以自然地整合到 Windows Forms 應用程式中。 你可以從按鈕點擊處理程序中呼叫它,並相信該對話框的行為將與用戶已知的其他 Windows 應用程式的行為保持一致。

 .NET使用IronPrint無需打開 Adob​​e 即可列印 PDF:圖像 1 - 列印對話方塊

列印對話方塊範例頁面顯示了其他使用案例,包括在對話方塊開啟之前​​預先選擇印表機或預先填入份數。

如何在.NET中自訂PDF列印設定?

PrintSettings 類別可讓您完全透過程式控制列印作業的各個方面。 您可以在作業到達列印佇列之前設定 DPI、紙張尺寸、方向、份數和目標印表機:

Imports IronPrint

Module CustomPrintSettings
    Sub Main()
        Dim settings As New PrintSettings() With {
            .Dpi = 300,
            .NumberOfCopies = 2,
            .PaperOrientation = PaperOrientation.Landscape,
            .PaperSize = PaperSize.A4,
            .PrinterName = "Office Printer"
        }

        Printer.Print("document.pdf", settings)
    End Sub
End Module
Imports IronPrint

Module CustomPrintSettings
    Sub Main()
        Dim settings As New PrintSettings() With {
            .Dpi = 300,
            .NumberOfCopies = 2,
            .PaperOrientation = PaperOrientation.Landscape,
            .PaperSize = PaperSize.A4,
            .PrinterName = "Office Printer"
        }

        Printer.Print("document.pdf", settings)
    End Sub
End Module
$vbLabelText   $csharpLabel

了解關鍵列印設定屬性

Dpi 屬性控制輸出解析度。 專業文件的標準值為 300; 600 適用於高品質圖形或工程圖。 對於草稿列印來說,速度比品質更重要,因此可以使用較低的值,例如 150。

NumberOfCopies 告訴印表機一次作業要列印多少份。 將此值設為 3 相當於用戶按下 Ctrl+P 並在副本欄位中輸入 3——但您可以透過程式碼控制它,而無需任何 UI 互動。

PaperOrientation 接受 PaperOrientation.PortraitPaperOrientation.Landscape。 如果將橫向設計的 PDF 檔案選擇錯誤的方向,會導致內容被裁切或縮小。 明確設定此項可確保輸出與文件設計一致。

PaperSize 接受標準尺寸,例如 PaperSize.LetterPaperSize.Legal。 當您的列印環境混合使用裝有不同尺寸紙張的紙匣時,這一點尤其重要。

選擇正確的印表機名稱

PrinterName 字串必須與印表機在 Windows 中註冊的名稱完全匹配,包括大小寫和空格。 使用 Printer.GetPrinterNames()(將在下一節中介紹)在運行時檢索有效名稱清單。

如需更多進階自訂選項,請造訪進階列印自訂功能頁面

如何透過程式設計方式列舉和選擇印表機?

在企業環境中,工作站通常可以存取數十台網路印表機。 IronPrint可以輕鬆列出所有可用印表機,並在運行時選擇正確的印表機:

Imports IronPrint

Module PrinterManagement
    Sub Main()
        ' Retrieve all available printers
        Dim printers As List(Of String) = Printer.GetPrinterNames()

        Console.WriteLine($"Found {printers.Count} printer(s):")
        For Each printerName As String In printers
            Console.WriteLine($"  - {printerName}")
        Next

        ' Print to the first available printer
        If printers.Count > 0 Then
            Dim settings As New PrintSettings()
            settings.PrinterName = printers(0)
            Printer.Print("document.pdf", settings)
        Else
            Console.WriteLine("No printers found. Check system configuration.")
        End If
    End Sub
End Module
Imports IronPrint

Module PrinterManagement
    Sub Main()
        ' Retrieve all available printers
        Dim printers As List(Of String) = Printer.GetPrinterNames()

        Console.WriteLine($"Found {printers.Count} printer(s):")
        For Each printerName As String In printers
            Console.WriteLine($"  - {printerName}")
        Next

        ' Print to the first available printer
        If printers.Count > 0 Then
            Dim settings As New PrintSettings()
            settings.PrinterName = printers(0)
            Printer.Print("document.pdf", settings)
        Else
            Console.WriteLine("No printers found. Check system configuration.")
        End If
    End Sub
End Module
$vbLabelText   $csharpLabel

Printer.GetPrinterNames() 查詢 Windows 列印子系統,並傳回目前使用者可以存取的所有印表機,包括本機 USB 印表機、網路印表機、虛擬印表機(如 Microsoft Print to PDF)以及透過第三方軟體安裝的任何印表機驅動程式。

將文件路由到正確的印表機

在多印表機設定中,您可能想要將大型文件傳送到高速部門印表機,而將小型文件傳送到附近的桌上型設備。您可以透過檢查文件的頁數或文件大小,然後從清單中選擇對應的印表機名稱來實現此邏輯。

 .NET使用IronPrint無需打開 Adob​​e 即可列印 PDF:圖 2 - 印表機選擇

閱讀印表機資訊功能文檔,以了解您可以查詢的其他屬性,例如印表機狀態和預設紙匣。

如何在.NET中處理列印錯誤?

生產列印代碼必須能夠優雅地處理故障。 檔案路徑可能錯誤,印表機可能處於離線狀態,或使用者帳戶可能缺少列印權限。 將列印呼叫封裝在結構化的異常處理中,可防止未處理的異常導致應用程式崩潰:

Imports IronPrint
Imports System.IO

Module 錯誤Handling
    Sub Main()
        Dim filePath As String = "document.pdf"

        If Not File.Exists(filePath) Then
            Console.WriteLine("PDF file not found. Verify the path and try again.")
            Return
        End If

        Try
            Dim settings As New PrintSettings()
            settings.PrinterName = "Office Printer"
            Printer.Print(filePath, settings)
            Console.WriteLine("Print job sent successfully.")
        Catch ex As Exception
            Console.WriteLine($"Printing failed: {ex.Message}")
        End Try
    End Sub
End Module
Imports IronPrint
Imports System.IO

Module 錯誤Handling
    Sub Main()
        Dim filePath As String = "document.pdf"

        If Not File.Exists(filePath) Then
            Console.WriteLine("PDF file not found. Verify the path and try again.")
            Return
        End If

        Try
            Dim settings As New PrintSettings()
            settings.PrinterName = "Office Printer"
            Printer.Print(filePath, settings)
            Console.WriteLine("Print job sent successfully.")
        Catch ex As Exception
            Console.WriteLine($"Printing failed: {ex.Message}")
        End Try
    End Sub
End Module
$vbLabelText   $csharpLabel

常見錯誤及解決方法

下表列出了最常見的印刷錯誤及其解決方法:

.NET PDF 列印常見錯誤及解決方案
錯誤 原因 解決方案
未找到印表機 印表機名稱與 Windows 登錄項目不匹配 呼叫`Printer.GetPrinterNames()`並使用傳回的確切名稱
列印空白頁 文件路徑無效或PDF文件已損壞。 使用`File.Exists`驗證路徑;在檢視器中開啟 PDF 檔案以檢查完整性
列印品質差 DPI設定過低 將`PrintSettings.Dpi`設定為 300 或更高
拒絕訪問 列印權限不足 使用對目標印表機具有列印權限的使用者帳戶執行該應用程式。
印表機離線 網路或裝置連線問題 請檢查Windows裝置和印表機中的印表機狀態;重新連線後重試。

 .NET使用IronPrint無需打開 Adob​​e 即可列印 PDF:圖像 3 - 範例錯誤

如需更多故障排除指導,請參閱IronPrint工程請求和故障排除指南或聯絡Iron Software技術支援

如何在.NET中將PDF產生和列印結合?

常見的工作流程是在運行時產生 PDF 文件並立即列印——例如,一步到位地從資料庫記錄中建立發票並將其發送到印表機。 IronPDF 負責產生 PDFIronPDF,而IronPrint負責輸出:

為什麼要將IronPDF和IronPrint結合使用?

IronPDF可以將 HTML、ASPX 和現有文件轉換為格式正確的 PDF 檔案。 PDF 檔案一旦載入到記憶體或儲存到磁碟, IronPrint即可將其傳送至印表機,而無需 Adob​​e Reader。 這兩個函式庫都採用相同的基於 NuGet 的部署模型,因此您只需新增兩個包,然後編寫簡單的 VB .NET程式碼即可完成整個生成和列印管道。

這種方法尤其適用於:

-發票和收據列印-從 HTML 範本產生 PDF 文件,立即列印 -報表產生-將資料庫查詢結果轉換為格式化的PDF文件,按需列印 標籤和條碼列印-結合IronBarcode來產生條碼和IronPrint輸出條碼 -批次文件處理-循環遍歷記錄,為每筆記錄產生一個 PDF 文件,並依序列印每個 PDF 文件

若要了解如何在 VB .NET中從 HTML 產生 PDF,請造訪IronPDF for VB .NET文件

根據W3C 的印刷媒體查詢規範,透過 CSS 規則控製印刷佈局是 HTML 到印刷工作流程的標準方法。 IronPDF在渲染過程中會遵循這些 CSS 規則,因此在IronPrint將 PDF 傳送到印表機之前,產生的 PDF 將具有正確的邊距、分頁符號和大小。

如何列印多頁並控制頁面範圍?

列印大型文件時,您可能只需要列印特定頁面—例如,50 頁報告中的第 1 至 5 頁。 IronPrint 的 PrintSettings 類別支援頁面範圍配置:

配置頁面範圍

您可以在 PrintSettings 物件中指定起始頁和結束頁。 頁碼從 1 開始,符合使用者在標準列印對話方塊中所期望的慣例。 如果省略頁碼範圍, IronPrint將列印整個文件。

頁面範圍列印在列印量大的環境中尤其有用,因為重印單一損壞的頁面比重印整個文件快得多。 結合 NumberOfCopies,您可以精確控制哪些頁面的複印份數到達出紙托盤。

有關 PrintSettings 屬性(包括頁面範圍)的完整列表,請造訪IronPrint列印設定操作指南

灰階列印

有些印表機即使文檔不包含任何顏色內容,也會預設輸出彩色文檔,造成墨粉或墨水浪費。 您可以透過 PrintSettings 強制輸出灰階影像。 此設定在 Windows 和 macOS 目標系統上均可使用,並且適用於所有支援的文件格式,而不僅僅是 PDF。

IronPrint功能概述列出了所有可用的列印設置,並為每個平台提供了範例。

下一步計劃是什麼?

現在您已經掌握了在.NET應用程式中進行PDF列印的基本要素:

-靜默列印-- Printer.Print(path) 用於自動化工作流程 -對話方塊列印-- Printer.ShowPrintDialog(path) 用於使用者控制的作業 -自訂設定-- PrintSettings 用於 DPI、方向、份數和印表機選擇 -印表機列舉-- Printer.GetPrinterNames() 用於動態印表機路由 -錯誤處理-結構化的異常處理,並附有預檢文件驗證 -組合工作流程IronPDF用於生成, IronPrint用於輸出

要體驗這些功能,請開始您的IronPrint免費試用,並探索以下其他資源:

IronPrint入門指南-完整設定步驟 -帶對話框的列印範例-- 對話框自訂模式 進階列印設定功能-完整設定參考 -印表機資訊功能-- 查詢印表機屬性 IronPrint API 參考——完整的類別和方法文檔 IronPrint故障排除指南-解決常見問題

常見問題解答

什麼是 IronPrint?

IronPrint是一個程式庫,通過消除對Adobe Reader和其他依賴的需求,簡化在VB.NET中列印PDF文檔的流程。

IronPrint如何在VB.NET中促成PDF列印?

IronPrint 通過提供一個簡單的方法使VB.NET的PDF列印可以在多平台間運行,包括Windows、macOS和移動設備。

我可以使用IronPrint進行靜默列印嗎?

可以,IronPrint支援靜默列印,允許PDF文件在不顯示對話框或不需用戶交互的情況下被列印。

IronPrint與移動平台兼容嗎?

是的,IronPrint設計可運行於Windows、macOS和移動平台,提供PDF列印應用的靈活性。

IronPrint需要任何外部依賴嗎?

不,IronPrint是一個無依賴解決方案,意味著您在VB.NET中列印PDF不需要額外的軟件如Adobe Reader。

IronPrint比傳統PDF列印方法提供了哪些優勢?

IronPrint提供了一個精簡且高效的PDF列印過程,通過消除複雜的變通方法和外部依賴使其更易於整合到.NET應用中。

我可以使用IronPrint自定義列印設置嗎?

可以,IronPrint提供選項可以通過PrintSettings類自定義列印設置,允許開發者控制DPI、紙張方向、份數和打印機選擇。

IronPrint如何改善VB.NET應用中的PDF列印過程?

IronPrint通過提供一個簡單易用的方法,讓在不同平台上列印變得更容易,不需額外軟件。

IronPrint適合跨平台開發嗎?

是的,IronPrint適合跨平台開發,因為它支持在Windows、macOS、Linux和移動平台上列印。

IronPrint為開發者提供了什麼樣的支持?

IronPrint通過詳細的文件、代碼示例和技術支援訪問為開發者提供支持,以確保順利的開發經驗。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我