如何使用IronPDF創建VB.NET PDF查看器:完整教程
對於許多開發人員來說,直接在 VB.NET 應用程式中顯示 PDF 文件仍然可能很棘手。 .NET Framework 和 .NET Core 並沒有提供檢視 PDF 檔案的內建方法,因此人們通常依賴舊的 ActiveX 控製或混亂的第三方工具。 這可能會讓開發者和使用者都感到沮喪。
如果您正在建立 Windows Forms 或 WPF 應用程序,您需要一個可靠的 PDF 檢視器。 無論是發票、報告,甚至是轉換為 PDF 格式的 Word 文檔, IronPDF都簡化了這一過程,無需外部組件,並提供強大的選項,可以直接在專案中建立、編輯和處理 PDF。
在本教程中,我將一步一步地引導您建立一個VB.NET PDF檢視器。 到最後,你將像專家一樣掌握如何在你的應用程式中產生和顯示 PDF 文件。 此外,您還會發現添加縮放、導航和列印等功能是多麼容易。 我最近在一個內部專案中嘗試了這種方法,它大大加快了我們團隊的報告審核流程。
VB.NET 中查看 PDF 檔案有哪些挑戰?
Visual Studio 工具箱缺少標準的 PDF 檢視器控制項。 開發人員通常會依賴 Internet Explorer 或嵌入式 WebBrowser 控制項來顯示 PDF 文件,但這些方法依賴使用者的預設 PDF 閱讀器,並且可能會引入部署方面的隱性成本。
傳統解決方案可能還需要安裝外部軟體或手動配置才能正確處理、列印或渲染 PDF 表單,這增加了複雜性,並限制了在多個 Windows 環境中自訂 PDF 顯示的能力。
IronPDF 如何簡化 VB.NET 中的 PDF 檢視?
IronPDF 透過提供一個無需 Adobe Reader 或其他外部檢視器的獨立函式庫,改變了 VB.NET 應用程式中的 PDF 處理方式。 除了基本的檢視功能外,它還允許開發人員使用熟悉的 .NET 模式以程式設計方式建立、編輯、操作和渲染 PDF。
該庫的架構利用了基於 Chrome 的渲染引擎,確保以像素級精度顯示複雜的 PDF 文件,並完全支援表單、註釋和嵌入式多媒體等現代功能。 這種方法可以確保在所有 Windows 環境下呈現一致的渲染效果。
主要能力包括
- 無需下載或依賴瀏覽器即可直接渲染 PDF 文件
- 將 Word 文件或 HTML 轉換為 PDF 格式
- 編輯、分割和合併 PDF 頁面
- 填寫並提取 PDF 表單
- 內建列印支持,並可自訂設置
- 支援模板、圖像和多頁 PDF 文件
這些特性使 IronPDF 成為 .NET 應用程式高度可自訂的解決方案,使開發人員能夠在桌面或 Web 應用程式環境中處理複雜的 PDF 文件。
如何在VB.NET專案中安裝IronPDF?
透過 NuGet 套件管理器,只需幾個步驟即可完成 IronPDF 的安裝。 在 Visual Studio 中開啟您的 VB.NET Windows Forms 項目,然後依照下列步驟操作:
- 在 Visual Studio 中開啟你的新項目,選擇你的目標框架或 .NET Core。
- 在解決方案資源管理器中以滑鼠右鍵按一下您的專案。
- 選擇"管理 NuGet 套件"
- 在"瀏覽"標籤中搜尋"IronPDF"
- 點選 IronPDF 軟體包上的"安裝"按鈕
安裝完成後,將以下導入語句加入您的 VB.NET 檔案:
Imports IronPdfImports IronPdfIRON VB CONVERTER ERROR developers@ironsoftware.com此導入語句使您的 VB.NET 專案能夠存取所有 IronPDF 類別和方法,從而允許您以程式設計方式載入、渲染、列印和操作 PDF 文件。
此配置包含所有必要的運行時組件,無需手動配置,避免了隱性成本。
如何在 Windows Forms 中建立一個基本的 PDF 檢視器?
建立 PDF 檢視器首先要建立一個 Windows Forms 應用程序,並實作 IronPDF 的渲染功能。 以下是在應用程式中顯示 PDF 的簡化方法:
Imports System.Drawing
Imports System.IO
Imports IronPdf
Public Class Form1
Private currentPdf As PdfDocument
Private pdfBitmaps() As Bitmap
Private currentPage As Integer = 0
Private zoomLevel As Double = 1.0
' Load PDF Button
Private Sub LoadPdfButton_Click(sender As Object, e As EventArgs) Handles LoadPdfButton.Click
Using openFileDialog As New OpenFileDialog()
openFileDialog.Filter = "PDF Files (*.pdf)|*.pdf"
If openFileDialog.ShowDialog() = DialogResult.OK Then
' Load PDF
currentPdf = PdfDocument.FromFile(openFileDialog.FileName)
' Render all pages to image files
Dim filePaths As String() = currentPdf.RasterizeToImageFiles("page_*.png")
' Load images into memory
Dim pageList As New List(Of Bitmap)()
For Each filePath As String In filePaths
Using ms As New MemoryStream(File.ReadAllBytes(filePath))
Dim bmp As New Bitmap(ms)
pageList.Add(bmp)
End Using
Next
pdfBitmaps = pageList.ToArray()
currentPage = 0
zoomLevel = 1.0
DisplayCurrentPage()
End If
End Using
End Sub
' Show the current page in PictureBox
Private Sub DisplayCurrentPage()
If pdfBitmaps IsNot Nothing AndAlso currentPage < pdfBitmaps.Length Then
Dim bmp As Bitmap = pdfBitmaps(currentPage)
' Apply zoom
Dim newWidth As Integer = CInt(bmp.Width * zoomLevel)
Dim newHeight As Integer = CInt(bmp.Height * zoomLevel)
Dim zoomedBmp As New Bitmap(bmp, newWidth, newHeight)
PictureBox1.Image = zoomedBmp
Else
PictureBox1.Image = Nothing
End If
UpdateNavigationButtons()
End SubImports System.Drawing
Imports System.IO
Imports IronPdf
Public Class Form1
Private currentPdf As PdfDocument
Private pdfBitmaps() As Bitmap
Private currentPage As Integer = 0
Private zoomLevel As Double = 1.0
' Load PDF Button
Private Sub LoadPdfButton_Click(sender As Object, e As EventArgs) Handles LoadPdfButton.Click
Using openFileDialog As New OpenFileDialog()
openFileDialog.Filter = "PDF Files (*.pdf)|*.pdf"
If openFileDialog.ShowDialog() = DialogResult.OK Then
' Load PDF
currentPdf = PdfDocument.FromFile(openFileDialog.FileName)
' Render all pages to image files
Dim filePaths As String() = currentPdf.RasterizeToImageFiles("page_*.png")
' Load images into memory
Dim pageList As New List(Of Bitmap)()
For Each filePath As String In filePaths
Using ms As New MemoryStream(File.ReadAllBytes(filePath))
Dim bmp As New Bitmap(ms)
pageList.Add(bmp)
End Using
Next
pdfBitmaps = pageList.ToArray()
currentPage = 0
zoomLevel = 1.0
DisplayCurrentPage()
End If
End Using
End Sub
' Show the current page in PictureBox
Private Sub DisplayCurrentPage()
If pdfBitmaps IsNot Nothing AndAlso currentPage < pdfBitmaps.Length Then
Dim bmp As Bitmap = pdfBitmaps(currentPage)
' Apply zoom
Dim newWidth As Integer = CInt(bmp.Width * zoomLevel)
Dim newHeight As Integer = CInt(bmp.Height * zoomLevel)
Dim zoomedBmp As New Bitmap(bmp, newWidth, newHeight)
PictureBox1.Image = zoomedBmp
Else
PictureBox1.Image = Nothing
End If
UpdateNavigationButtons()
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com代碼解釋:
- currentPdf 儲存已載入的 PDF 文件。
- pdfBitmaps 儲存每個 PDF 頁面的點陣圖影像,以便在 PictureBox 控制項中顯示。
- LoadPdfButton_Click 使用標準的 OpenFileDialog 讓使用者選擇 PDF 檔案。
- PdfDocument.FromFile 載入 PDF 文檔,RasterizeToImageFiles 將每一頁轉換為圖片檔案。
- 每個檔案都以 Bitmap 的形式讀入內存,添加到數組中,並使用 DisplayCurrentPage() 顯示第一頁。
運行程式後,點擊"載入 PDF"按鈕,即可透過彈出的對話方塊載入 PDF 檔案。
如何實作PDF導航控件?
導航功能允許使用者在多頁文件之間移動,從而提升使用者體驗。 透過以下方式為表單新增"上一頁"和"下一頁"按鈕:
' Next Page Button
Private Sub NextButton_Click(sender As Object, e As EventArgs) Handles NextButton.Click
If currentPage < pdfBitmaps.Length - 1 Then
currentPage += 1
DisplayCurrentPage()
End If
End Sub
' Previous Page Button
Private Sub PreviousButton_Click(sender As Object, e As EventArgs) Handles PreviousButton.Click
If currentPage > 0 Then
currentPage -= 1
DisplayCurrentPage()
End If
End Sub' Next Page Button
Private Sub NextButton_Click(sender As Object, e As EventArgs) Handles NextButton.Click
If currentPage < pdfBitmaps.Length - 1 Then
currentPage += 1
DisplayCurrentPage()
End If
End Sub
' Previous Page Button
Private Sub PreviousButton_Click(sender As Object, e As EventArgs) Handles PreviousButton.Click
If currentPage > 0 Then
currentPage -= 1
DisplayCurrentPage()
End If
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com這些私有子程式使用物件傳送器、事件參數等處理 PDF 頁面的導覽。 按鈕更新 currentPage 並呼叫 DisplayCurrentPage() 在 Windows 窗體中呈現 PDF 頁面。
' Update navigation controls and page label
Private Sub UpdateNavigationButtons()
PreviousButton.Enabled = currentPage > 0
NextButton.Enabled = currentPage < pdfBitmaps.Length - 1
PageLabel.Text = $"Page {currentPage + 1} of {pdfBitmaps.Length}"
End Sub' Update navigation controls and page label
Private Sub UpdateNavigationButtons()
PreviousButton.Enabled = currentPage > 0
NextButton.Enabled = currentPage < pdfBitmaps.Length - 1
PageLabel.Text = $"Page {currentPage + 1} of {pdfBitmaps.Length}"
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com這樣可以更新按鈕狀態,使用戶無法導覽到第一頁或最後一頁之外,同時標籤會顯示目前頁碼和總頁數。
輸出
如何從不同來源載入PDF文件?
IronPDF 支援從本機文件以外的各種來源載入 PDF 檔案。 這種靈活性使得它可以與資料庫、Web服務和記憶體流整合:
從 URL 載入
' Load PDF from URL
Private Sub LoadUrlButton_Click(sender As Object, e As EventArgs) Handles LoadUrlButton.Click
Dim url As String = UrlTextBox.Text.Trim()
If String.IsNullOrEmpty(url) Then
MessageBox.Show("Please enter a valid URL.")
Return
End If
Try
LoadFromUrl(url)
Catch ex As Exception
MessageBox.Show("Failed to load PDF: " & ex.Message)
End Try
End Sub' Load PDF from URL
Private Sub LoadUrlButton_Click(sender As Object, e As EventArgs) Handles LoadUrlButton.Click
Dim url As String = UrlTextBox.Text.Trim()
If String.IsNullOrEmpty(url) Then
MessageBox.Show("Please enter a valid URL.")
Return
End If
Try
LoadFromUrl(url)
Catch ex As Exception
MessageBox.Show("Failed to load PDF: " & ex.Message)
End Try
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com此私有子程式檢查 URL 輸入,如果無效則顯示警報,並呼叫 LoadFromUrl 動態渲染 PDF。
Private Sub LoadFromUrl(url As String)
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.CssMediaType = Rendering.PdfCssMediaType.Print
renderer.RenderingOptions.WaitFor.JavaScript(3000)
currentPdf = renderer.RenderUrlAsPdf(url)
LoadPdfBitmaps()
End SubPrivate Sub LoadFromUrl(url As String)
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.CssMediaType = Rendering.PdfCssMediaType.Print
renderer.RenderingOptions.WaitFor.JavaScript(3000)
currentPdf = renderer.RenderUrlAsPdf(url)
LoadPdfBitmaps()
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com它使用 ChromePdfRenderer 將網頁 URL 轉換為 PDF 文件。 啟用此選項後,JavaScript 執行和列印友善的 CSS 將以點陣圖形式載入 PDF 頁面。
輸出
如何使用 IronPDF 建立 VB.NET PDF 檢視器:完整教學課程:圖 3 - PDF 檢視器顯示的 PDF URL
從 HTML 內容載入
Private Sub LoadHtmlButton_Click(sender As Object, e As EventArgs) Handles LoadHtmlButton.Click
Dim htmlContent As String = "<html><body><h1>Hello PDF!</h1><p>This is a hardcoded HTML PDF test.</p></body></html>"
LoadFromHtml(htmlContent)
End Sub
Private Sub LoadFromHtml(htmlContent As String)
Dim renderer As New ChromePdfRenderer()
currentPdf = renderer.RenderHtmlAsPdf(htmlContent)
LoadPdfBitmaps()
End SubPrivate Sub LoadHtmlButton_Click(sender As Object, e As EventArgs) Handles LoadHtmlButton.Click
Dim htmlContent As String = "<html><body><h1>Hello PDF!</h1><p>This is a hardcoded HTML PDF test.</p></body></html>"
LoadFromHtml(htmlContent)
End Sub
Private Sub LoadFromHtml(htmlContent As String)
Dim renderer As New ChromePdfRenderer()
currentPdf = renderer.RenderHtmlAsPdf(htmlContent)
LoadPdfBitmaps()
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com本範例使用 RenderHtmlAsPdf 方法將HTML 內容轉換為 PDF。 此流程非常適合用於動態報表或範本。
輸出
如何使用 IronPDF 建立 VB.NET PDF 檢視器:完整教學課程:圖 4 - HTML 轉 PDF 在 PDF 檢視器中顯示
這些方法無需臨時檔案即可動態生成和查看 PDF,從而提高了效能和安全性。
如何新增縮放功能?
縮放功能可以提高詳細文件的可讀性。 使用圖像縮放實現縮放:
Private Sub ZoomInButton_Click(sender As Object, e As EventArgs) Handles ZoomInButton.Click
zoomLevel = Math.Min(zoomLevel + 0.25, 3.0)
DisplayCurrentPage()
End Sub
Private Sub ZoomOutButton_Click(sender As Object, e As EventArgs) Handles ZoomOutButton.Click
zoomLevel = Math.Max(zoomLevel - 0.25, 0.5)
DisplayCurrentPage()
End Sub
Private Sub ApplyZoom()
If pdfBitmaps IsNot Nothing AndAlso currentPage < pdfBitmaps.Length Then
Dim pageImage As Bitmap = pdfBitmaps(currentPage)
Dim newWidth As Integer = CInt(pageImage.Width * zoomLevel)
Dim newHeight As Integer = CInt(pageImage.Height * zoomLevel)
Dim zoomedImage As New Bitmap(pageImage, newWidth, newHeight)
PictureBox1.Image = zoomedImage
Else
PictureBox1.Image = Nothing
End If
End SubPrivate Sub ZoomInButton_Click(sender As Object, e As EventArgs) Handles ZoomInButton.Click
zoomLevel = Math.Min(zoomLevel + 0.25, 3.0)
DisplayCurrentPage()
End Sub
Private Sub ZoomOutButton_Click(sender As Object, e As EventArgs) Handles ZoomOutButton.Click
zoomLevel = Math.Max(zoomLevel - 0.25, 0.5)
DisplayCurrentPage()
End Sub
Private Sub ApplyZoom()
If pdfBitmaps IsNot Nothing AndAlso currentPage < pdfBitmaps.Length Then
Dim pageImage As Bitmap = pdfBitmaps(currentPage)
Dim newWidth As Integer = CInt(pageImage.Width * zoomLevel)
Dim newHeight As Integer = CInt(pageImage.Height * zoomLevel)
Dim zoomedImage As New Bitmap(pageImage, newWidth, newHeight)
PictureBox1.Image = zoomedImage
Else
PictureBox1.Image = Nothing
End If
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com這段程式碼逐步調整縮放級別,並呼叫 DisplayCurrentPage() 函數應用縮放比例,以提高桌面端的可讀性。
如何列印PDF文件?
列印功能完善了使用者的瀏覽體驗。 IronPDF 透過內建方法簡化了列印流程:
Private Sub PrintButton_Click(sender As Object, e As EventArgs) Handles PrintButton.Click
If currentPdf IsNot Nothing Then
' Simple print with default settings
currentPdf.Print()
' Or with custom settings
Dim printDoc As PrintDocument = currentPdf.GetPrintDocument()
Using printDialog As New PrintDialog()
printDialog.Document = printDoc
If printDialog.ShowDialog() = DialogResult.OK Then
printDoc.Print()
End If
End Using
End If
End SubPrivate Sub PrintButton_Click(sender As Object, e As EventArgs) Handles PrintButton.Click
If currentPdf IsNot Nothing Then
' Simple print with default settings
currentPdf.Print()
' Or with custom settings
Dim printDoc As PrintDocument = currentPdf.GetPrintDocument()
Using printDialog As New PrintDialog()
printDialog.Document = printDoc
If printDialog.ShowDialog() = DialogResult.OK Then
printDoc.Print()
End If
End Using
End If
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com此私有訂閱允許使用者使用預設或自訂印表機設定列印 PDF 文件。 GetPrintDocument() 傳回 PrintDocument 對象,用於與 Windows Forms PrintDialog 整合。
如何在WPF應用程式中實現PDF檢視功能?
雖然 Windows Forms 在桌面開發中佔據主導地位,但 WPF 應用程式也可以利用 IronPDF。 方法略有不同:
' In WPF Window code-behind
Private Sub LoadPdfInWpf(filePath As String)
Dim pdfDoc As PdfDocument = PdfDocument.FromFile(filePath)
Dim pageImage As Bitmap = pdfDoc.ToBitmap(0)
' Convert to WPF-compatible image
Dim bitmapImage As New BitmapImage()
Using memory As New MemoryStream()
pageImage.Save(memory, ImageFormat.Png)
memory.Position = 0
bitmapImage.BeginInit()
bitmapImage.StreamSource = memory
bitmapImage.CacheOption = BitmapCacheOption.OnLoad
bitmapImage.EndInit()
End Using
ImageControl.Source = bitmapImage
End Sub' In WPF Window code-behind
Private Sub LoadPdfInWpf(filePath As String)
Dim pdfDoc As PdfDocument = PdfDocument.FromFile(filePath)
Dim pageImage As Bitmap = pdfDoc.ToBitmap(0)
' Convert to WPF-compatible image
Dim bitmapImage As New BitmapImage()
Using memory As New MemoryStream()
pageImage.Save(memory, ImageFormat.Png)
memory.Position = 0
bitmapImage.BeginInit()
bitmapImage.StreamSource = memory
bitmapImage.CacheOption = BitmapCacheOption.OnLoad
bitmapImage.EndInit()
End Using
ImageControl.Source = bitmapImage
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com如何優化 PDF 檢視器的效能?
優化 PDF 查看體驗可確保流暢的使用者體驗:
記憶體管理
使用完畢後請務必刪除PDF文件:
Protected Overrides Sub OnFormClosed(e As FormClosedEventArgs)
If currentPdf IsNot Nothing Then
currentPdf.Dispose()
End If
MyBase.OnFormClosed(e)
End SubProtected Overrides Sub OnFormClosed(e As FormClosedEventArgs)
If currentPdf IsNot Nothing Then
currentPdf.Dispose()
End If
MyBase.OnFormClosed(e)
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com非同步載入
IronPDF 還支援非同步加載,這對於加載大型 PDF 文件而不會導致用戶介面凍結非常有用:
Private Async Sub LoadPdfAsync(filePath As String)
LoadingLabel.Visible = True
Await Task.Run(Sub()
currentPdf = PdfDocument.FromFile(filePath)
End Sub)
LoadingLabel.Visible = False
DisplayCurrentPage()
End SubPrivate Async Sub LoadPdfAsync(filePath As String)
LoadingLabel.Visible = True
Await Task.Run(Sub()
currentPdf = PdfDocument.FromFile(filePath)
End Sub)
LoadingLabel.Visible = False
DisplayCurrentPage()
End SubIRON VB CONVERTER ERROR developers@ironsoftware.com結論
使用IronPDF在 VB.NET 中建立 PDF 檢視器,可以消除傳統方法的複雜性,同時提供專業功能。 從基本的文件檢視到進階的 PDF 表單處理和列印,IronPDF 可以處理 Windows Forms 應用程式中 PDF 互動的各個方面。
無論是顯示報表、處理表單或實施文件管理系統,IronPDF 都能提供全面的 PDF 解決方案所需的工具、支援和授權選項。
使用IronPDF 的免費試用版開始您的 VB.NET PDF 檢視器項目,探索所有功能。 透過靈活的授權模式,可擴展至生產部署。 有關詳細的 API 文件和更多範例,請造訪IronPDF 文件並瀏覽全面的 VB.NET程式碼範例。
!{--010011000100100101000010010100100100000101010010010110010101111101001110010101010101010101010101010101010101010 0100010111110100100101001101010100010000010100110001001100010111110100001001001100010011110010101010
常見問題解答
如何在 VB.NET 中建立 PDF 檢視器?
您可以使用 IronPDF 在 VB.NET 中建立 PDF 檢視器。它可讓您在 .NET 應用程式中輕鬆開啟、檢視、縮放、瀏覽、列印及儲存 PDF 頁面。
開發人員在 VB.NET 中顯示 PDF 時會遇到哪些挑戰?
開發人員經常面臨挑戰,因為 .NET Framework 和 .NET Core 並未提供檢視 PDF 檔案的內建方法,導致許多人必須仰賴過時的 ActiveX 控制項或複雜的第三方工具。
IronPDF for .NET 可以同時使用 .NET Framework 和 .NET Core 嗎?
是的,IronPDF 與 .NET Framework 和 .NET Core 相容,使其成為在 VB.NET 中開發 PDF 檢視應用程式的多用途選擇。
IronPDF 提供哪些 PDF 檢視功能?
IronPDF for .NET 提供了打開、檢視、縮放、瀏覽、列印和儲存 PDF 頁面等功能,增強了在 VB.NET 應用程式中與 PDF 文件互動時的用戶體驗。
為什麼我應該避免在 VB.NET 中使用 ActiveX 控件來檢視 PDF?
ActiveX 控件通常已經過時,可能會導致實作雜亂無章。使用 IronPDF 之類的現代化函式庫,可為在 VB.NET 中檢視 PDF 提供更精簡、更可靠的解決方案。
是否可以在 VB.NET 中使用 IronPDF 列印 PDF 文件?
是的,IronPDF 允許您直接從 VB.NET 應用程式列印 PDF 文件,為需要文件硬複本的使用者提供無縫的體驗。
IronPDF 如何改善用戶的 PDF 檢視體驗?
IronPDF 提供易於使用的 PDF 互動功能,例如流暢的導覽、縮放功能,以及毫不費力地儲存和列印文件的能力,從而改善 PDF 的檢視體驗。
IronPDF 是否與適用於 VB.NET PDF 檢視器應用程式的 .NET 10 相容?
是 - IronPDF 與 .NET 10 完全相容。它支援在 .NET 10 上執行的 VB.NET 專案,以及更早期的版本,例如 .NET 9、.NET 8、.NET Core、.NET Standard 和 .NET Framework 4.6.2+。這可確保您能使用最新的平台建立 VB.NET PDF 檢視器應用程式。






