
Como usar C# para converter PDF em Bitmap
Exibir documentos PDF diretamente em aplicativos VB .NET ainda pode ser complicado para muitos desenvolvedores. O .NET Framework e o .NET Core não oferecem maneiras integradas de visualizar arquivos PDF, então as pessoas geralmente dependem de controles ActiveX antigos ou ferramentas de terceiros complexas. Isso pode ser frustrante tanto para desenvolvedores quanto para usuários.
Se você estiver desenvolvendo um aplicativo Windows Forms ou WPF, precisará de uma solução confiável para visualização de PDFs. Sejam faturas, relatórios ou até mesmo documentos do Word convertidos para o formato PDF, o IronPDF simplifica esse processo, eliminando a necessidade de componentes externos e oferecendo opções poderosas para criar, editar e processar PDFs diretamente no seu projeto.
Neste tutorial, vou guiá-lo passo a passo na criação de um visualizador de PDF em VB .NET . Ao final, você saberá como gerar e exibir documentos PDF em seu aplicativo como um especialista. Além disso, você também verá como é fácil adicionar recursos como zoom, navegação e impressão. Experimentei essa abordagem em um projeto interno recente e ela acelerou significativamente o processo de revisão de relatórios da nossa equipe.
O que torna a visualização de PDFs em VB .NET um desafio?
A caixa de ferramentas do Visual Studio não possui um controle padrão para visualização de PDF. Os desenvolvedores costumam usar o Internet Explorer ou controles WebBrowser incorporados para exibir arquivos PDF, mas essas abordagens dependem do leitor de PDF padrão do usuário e podem gerar custos ocultos de implementação.
As soluções tradicionais também podem exigir a instalação de software externo ou configuração manual para o correto processamento, impressão ou renderização de formulários PDF, o que aumenta a complexidade e limita a capacidade de personalizar a exibição de PDFs em vários ambientes Windows.
Como o IronPDF simplifica a visualização de PDFs em VB .NET?
O IronPDF transforma o processamento de PDFs em aplicações VB .NET , fornecendo uma biblioteca independente que não requer o Adobe Reader ou outros visualizadores externos. Além da visualização básica, permite que os desenvolvedores criem, editem, manipulem e renderizem PDFs programaticamente usando padrões .NET familiares.
A arquitetura da biblioteca utiliza um mecanismo de renderização baseado no Chrome, garantindo a exibição perfeita de PDFs complexos em cada pixel, com suporte completo para recursos modernos como formulários, anotações e multimídia incorporada. Essa abordagem garante uma renderização consistente em todos os ambientes Windows.
As principais funcionalidades incluem
- Renderização direta de PDF sem necessidade de download ou dependência de navegador
- Conversão de documentos Word ou HTML para o formato PDF
- Edição, divisão e fusão de páginas PDF
- Preenchimento e extração de formulários em PDF
- Suporte integrado para impressão com configurações personalizáveis
- Suporte para modelos, imagens e arquivos PDF com várias páginas
Essas características fazem do IronPDF uma solução altamente personalizável para aplicações .NET , permitindo que os desenvolvedores manipulem documentos PDF complexos em um ambiente de aplicação desktop ou web.
Como instalar o IronPDF em seu projeto VB .NET ?
A configuração do IronPDF requer apenas alguns passos através do Gerenciador de Pacotes NuGet . Abra seu projeto VB .NET Windows Forms no Visual Studio e siga estes passos:
- Abra seu novo projeto no Visual Studio com a estrutura de destino ou .NET Core.
- Clique com o botão direito do mouse no seu projeto no Explorador de Soluções.
- Selecione "Gerenciar pacotes NuGet "
- Procure por "IronPDF" na aba Procurar.
- Clique em Instalar no pacote IronPDF.
Após a instalação, adicione esta declaração de importação aos seus arquivos VB .NET :
Imports IronPdfnetEsta declaração de importação concede ao seu projeto VB .NET acesso a todas as classes e métodos do IronPDF , permitindo que você carregue, renderize, imprima e manipule documentos PDF programaticamente.
Essa configuração inclui todos os componentes de tempo de execução necessários, eliminando a configuração manual e evitando custos ocultos.
Como criar um visualizador de PDF básico no Windows Forms?
A criação de um visualizador de PDF começa com a criação de um aplicativo Windows Forms e a implementação dos recursos de renderização do IronPDF. Aqui está uma abordagem simplificada para exibir PDFs em seu aplicativo:
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 Sub
End ClassExplicação do código:
- currentPdf armazena o documento PDF carregado.
- A pasta pdfBitmaps armazena imagens bitmap para cada página do PDF, permitindo que sejam exibidas em um controle PictureBox.
- O botão LoadPdfButton_Click utiliza uma caixa de diálogo OpenFileDialog padrão para permitir que os usuários selecionem um arquivo PDF.
- PdfDocument.FromFile carrega o documento PDF e RasterizeToImageFiles converte cada página em arquivos de imagem.
- Cada arquivo é lido na memória como um Bitmap, adicionado à matriz e a primeira página é exibida com DisplayCurrentPage().
Ao executar o programa, poderemos carregar um arquivo PDF através da janela pop-up que aparecerá ao clicar no botão "Carregar PDF".
Como implementar controles de navegação em PDF?
A navegação melhora a experiência do usuário, permitindo a movimentação por documentos com várias páginas. Adicione botões "Anterior" e "Próximo" ao seu formulário com esta implementação:
' 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 SubEsses procedimentos Sub privados lidam com a navegação pelas páginas do PDF usando Object sender, EventArgs e. Os botões atualizam a página atual e chamam o método DisplayCurrentPage() para renderizar a página PDF no formulário do Windows.
' 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 SubIsso atualiza os estados dos botões para que os usuários não possam navegar além da primeira ou da última página, enquanto o rótulo exibe o número da página atual e o número total de páginas.
Saída
Como carregar arquivos PDF de diferentes fontes?
O IronPDF suporta o carregamento de PDFs de diversas fontes além de arquivos locais. Essa flexibilidade permite a integração com bancos de dados, serviços web e fluxos de memória:
Carregando a partir de um 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 SubEsta Subprivada verifica a URL de entrada, exibe um alerta se for inválida e chama LoadFromUrl para renderizar o PDF dinamicamente.
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 SubEste programa utiliza o ChromePdfRenderer para converter um URL de página web em um documento PDF. As opções permitem a execução de JavaScript e CSS para impressão, e então as páginas em PDF são carregadas como bitmaps.
Saída

Carregando conteúdo 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 SubEste exemplo converte conteúdo HTML para PDF usando o método RenderHtmlAsPdf. Esse processo é ideal para relatórios ou modelos dinâmicos.
Saída

Esses métodos permitem a geração e visualização dinâmica de PDFs sem arquivos temporários, melhorando o desempenho e a segurança.
Como adicionar a funcionalidade de zoom?
Os controles de zoom melhoram a legibilidade de documentos detalhados. Implemente o zoom usando o dimensionamento da imagem:
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 SubEste código ajusta o nível de zoom em etapas e chama a função DisplayCurrentPage() para aplicar o zoom e melhorar a legibilidade na área de trabalho.
Como imprimir documentos em PDF?
A funcionalidade de impressão completa a experiência do usuário. O IronPDF simplifica a impressão com métodos integrados:
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 SubEsta conta privada permite que os usuários imprimam o documento PDF com configurações de impressora padrão ou personalizadas. GetPrintDocument() retorna um objeto PrintDocument para integração com o PrintDialog do Windows Forms.
Como implementar a visualização de PDFs em aplicações WPF?
Embora o Windows Forms domine o desenvolvimento para desktop, os aplicativos WPF também podem aproveitar o IronPDF. A abordagem difere ligeiramente:
' 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 SubImports System.IO
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Windows.Media.Imaging
' 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 SubQuais são as melhores práticas para otimizar o desempenho de um visualizador de PDF?
Otimizar a visualização de PDFs garante uma experiência de usuário tranquila:
Gerenciamento de memória
Exclua sempre os documentos PDF após o uso:
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 SubCarregamento assíncrono
O IronPDF também suporta carregamento assíncrono, útil para carregar PDFs grandes sem congelar a interface do usuário:
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 SubConclusão
Criar um visualizador de PDF em VB .NET com IronPDF elimina a complexidade das abordagens tradicionais, ao mesmo tempo que oferece recursos profissionais. Desde a visualização básica de arquivos até o processamento e impressão avançados de formulários PDF, o IronPDF lida com todos os aspectos da interação com PDFs em seus aplicativos Windows Forms.
Seja para exibir relatórios, processar formulários ou implementar sistemas de gerenciamento de documentos, o IronPDF oferece as ferramentas, o suporte e as opções de licenciamento necessárias para soluções completas em PDF.
Comece seu projeto de visualizador de PDF em VB .NET com a avaliação gratuita do IronPDF para explorar todos os recursos. Expanda para implantações em produção com licenciamento flexível. Para obter documentação detalhada da API e exemplos adicionais, visite a documentação do IronPDF e explore os exemplos de código VB .NET abrangentes.

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.
Artigos relacionados


