Cómo Crear un Visor de PDF en VB.NET con IronPDF: Un Tutorial Completo
Mostrar documentos PDF directamente dentro de aplicaciones VB.NET puede seguir siendo complicado para muchos desarrolladores. El .NET Framework y .NET Core no proporcionan formas integradas de ver archivos PDF, por lo que las personas a menudo dependen de antiguos controles ActiveX o de herramientas de terceros desordenadas. Eso puede ser frustrante tanto para los desarrolladores como para los usuarios.
Si estás construyendo una aplicación de Windows Forms o WPF, quieres algo confiable para la visualización de PDF. Ya sean facturas, informes o incluso documentos de Word convertidos a formato PDF, IronPDF simplifica este proceso al eliminar la necesidad de componentes externos y proporcionar potentes opciones para crear, editar y procesar PDFs directamente dentro de tu proyecto.
En este tutorial, te guiaré paso a paso a través de la construcción de un visor de PDF en VB.NET. Al final, sabrás cómo generar y mostrar documentos PDF en tu aplicación como un experto. Además, también verás lo fácil que es añadir funciones como zoom, navegación e impresión. He probado este enfoque en un proyecto interno reciente, y aceleró significativamente el proceso de revisión de informes de nuestro equipo.
¿Qué hace que la visualización de PDF en VB.NET sea un reto?
El cuadro de herramientas de Visual Studio carece de un control estándar de visor de PDF. Los desarrolladores a menudo dependen de Internet Explorer o de controles WebBrowser integrados para mostrar archivos PDF, pero estos enfoques dependen del lector de PDF predeterminado del usuario y pueden introducir costes ocultos para el despliegue.
Las soluciones tradicionales también pueden requerir la instalación de software externo o configuración manual para un manejo adecuado de formularios PDF, impresión o renderización, lo que aumenta la complejidad y limita la capacidad de personalizar la visualización de PDF en múltiples entornos Windows.
¿Cómo simplifica IronPDF la visualización de PDF en VB.NET?
IronPDF transforma el manejo de PDF en aplicaciones VB.NET al proporcionar una biblioteca autocontenida que no requiere Adobe Reader u otros visores externos. Más allá de la visualización básica, permite a los desarrolladores crear, editar, manipular y renderizar PDFs de manera programática utilizando patrones familiares de .NET.
La arquitectura de la biblioteca aprovecha un motor de renderizado basado en Chrome, asegurando una visualización perfecta de PDFs complejos con soporte completo para características modernas como formularios, anotaciones y multimedia integrada. Este enfoque garantiza una renderización consistente en todos los entornos Windows.
Capacidades clave
- Renderización directa de PDF sin descarga o dependencias de navegador
- Conversión de documentos Word o HTML a formato PDF
- Edición, división y combinación de páginas PDF
- Llenado y extracción de formularios PDF
- Soporte de impresión integrado con configuraciones personalizables
- Soporte para plantillas, imágenes y archivos PDF de múltiples páginas
Estas características hacen de IronPDF una solución altamente personalizable para aplicaciones .NET, permitiendo a los desarrolladores manejar documentos PDF complejos en un entorno de aplicación de escritorio o web.
¿Cómo instalar IronPDF en su proyecto VB.NET?
Configurar IronPDF requiere solo unos pocos pasos a través del Administrador de Paquetes NuGet. Abre tu proyecto de Windows Forms en VB.NET en Visual Studio y sigue estos pasos:
- Abre tu nuevo proyecto en Visual Studio con tu marco de trabajo objetivo o .NET Core.
- Haz clic derecho en tu proyecto en el Explorador de Soluciones
- Selecciona "Gestionar Paquetes NuGet"
- Busca "IronPDF" en la pestaña Examinar
- Haz clic en Instalar en el paquete IronPDF
Después de la instalación, añade esta declaración de importación a tus archivos VB.NET:
Imports IronPdfImports IronPdfIRON VB CONVERTER ERROR developers@ironsoftware.comEsta declaración de importación otorga a tu proyecto VB.NET acceso a todas las clases y métodos de IronPDF, permitiéndote cargar, renderizar, imprimir y manipular documentos PDF de manera programática.
Esta configuración incluye todos los componentes de tiempo de ejecución necesarios, eliminando la configuración manual y evitando costes ocultos.
¿Cómo crear un visor de PDF básico en Windows Forms?
Construir un visor de PDF comienza creando una aplicación de Windows Forms e implementando las capacidades de renderizado de IronPDF. Aquí tienes un enfoque simplificado para mostrar PDFs en tu aplicación:
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.comExplicación del Código:
- currentPdf almacena el documento PDF cargado.
- pdfBitmaps contiene imágenes bitmap para cada página del PDF para que puedan mostrarse en un control PictureBox.
- LoadPdfButton_Click utiliza un diálogo de archivo abierto estándar para permitir a los usuarios seleccionar un archivo PDF.
- PdfDocument.FromFile carga el documento PDF, y RasterizeToImageFiles convierte cada página en archivos de imagen.
- Cada archivo se lee en memoria como un Bitmap, se añade al array, y la primera página se muestra con DisplayCurrentPage().
Cuando ejecutemos el programa, podremos cargar un archivo PDF a través del cuadro de diálogo emergente al hacer clic en el botón "Cargar PDF".
¿Cómo implementar controles de navegación en PDF?
La navegación mejora la experiencia del usuario al permitir el movimiento a través de documentos de múltiples páginas. Añade botones de Anterior y Siguiente a tu formulario con esta implementación:
' 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.comEstos procedimientos Private Sub manejan la navegación a través de las páginas PDF utilizando Object sender, EventArgs e. Los botones actualizan currentPage y llaman a DisplayCurrentPage() para renderizar la página PDF en el Formulario de 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 SubIRON VB CONVERTER ERROR developers@ironsoftware.comEsto actualiza los estados de los botones para que los usuarios no puedan navegar más allá de la primera o última página, mientras la etiqueta muestra el número de página actual y el total de páginas.
Resultado
¿Cómo cargar archivos PDF de diferentes fuentes?
IronPDF admite la carga de PDFs desde varias fuentes más allá de los archivos locales. Esta flexibilidad permite la integración con bases de datos, servicios web y flujos de memoria:
Carga desde 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.comEsta Private Sub verifica la entrada de URL, muestra una alerta si es inválida, y llama a LoadFromUrl para renderizar el PDF dinámicamente.
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.comEsto utiliza ChromePdfRenderer para convertir una URL de página web en un documento PDF. Las opciones permiten la ejecución de JavaScript y CSS apto para impresión, luego las páginas PDF se cargan como bitmaps.
Resultado
Carga desde contenido 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.comEste ejemplo convierte contenido HTML a PDF utilizando el método RenderHtmlAsPdf. Este proceso es ideal para informes dinámicos o plantillas.
Resultado
Estos métodos permiten la generación y visualización dinámica de PDFs sin archivos temporales, mejorando el rendimiento y la seguridad.
¿Cómo añadir la función de zoom?
Los controles de zoom mejoran la legibilidad para documentos detallados. Implementa el zoom usando escalado de imagen:
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.comEste código ajusta el nivel de zoom en pasos y llama a DisplayCurrentPage() para aplicar escalado de zoom para una mejor legibilidad en el escritorio
¿Cómo imprimir documentos PDF?
La funcionalidad de impresión completa la experiencia del visor. IronPDF simplifica la impresión con 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 SubIRON VB CONVERTER ERROR developers@ironsoftware.comEste Private Sub permite a los usuarios imprimir el documento PDF con configuraciones de impresora predeterminadas o personalizadas. GetPrintDocument() devuelve un objeto PrintDocument para la integración con PrintDialog de Windows Forms.
¿Cómo implementar la visualización de PDF en aplicaciones WPF?
Aunque Windows Forms domina el desarrollo de escritorio, las aplicaciones WPF también pueden aprovechar IronPDF. El enfoque difiere ligeramente:
' 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¿Cuáles son las mejores prácticas para el rendimiento del visor de PDF?
Optimizar la visualización de PDF asegura una experiencia de usuario fluida:
Gestión de la memoria
Siempre elimina los documentos PDF cuando termines:
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.comCarga asíncrona
IronPDF apoya adicionalmente la carga asincrónica, útil para cargar grandes PDFs sin congelar la interfaz de usuario:
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.comConclusión
Construir un visor de PDF en VB.NET con IronPDF elimina la complejidad de los enfoques tradicionales mientras proporciona características profesionales. Desde la visualización básica de archivos hasta el procesamiento y la impresión avanzada de formularios PDF, IronPDF maneja todos los aspectos de la interacción con PDFs dentro de tus aplicaciones Windows Forms.
Ya sea mostrando informes, procesando formularios o implementando sistemas de gestión documental, IronPDF proporciona las herramientas, el soporte y las opciones de licencia necesarias para soluciones completas de PDF.
Comienza tu proyecto de visor de PDF en VB.NET con la prueba gratuita de IronPDF para explorar todas las características. Escala para despliegues de producción con licencias flexibles. Para la documentación detallada de la API y ejemplos adicionales, visita la documentación de IronPDF y explora los ejemplos de código en VB.NET.
Preguntas Frecuentes
¿Cómo puedo crear un visor de PDF en VB.NET?
Puedes crear un visor de PDF en VB.NET usando IronPDF. Te permite abrir, ver, ampliar, navegar, imprimir y guardar páginas PDF fácilmente dentro de tus aplicaciones .NET.
¿Qué desafíos enfrentan los desarrolladores al mostrar PDFs en VB.NET?
Los desarrolladores a menudo enfrentan desafíos porque tanto .NET Framework como .NET Core no proporcionan métodos integrados para visualizar archivos PDF, lo que lleva a muchos a depender de controles ActiveX obsoletos o herramientas de terceros complejas.
¿Puede IronPDF usarse con .NET Framework y .NET Core?
Sí, IronPDF es compatible tanto con .NET Framework como con .NET Core, lo que lo convierte en una opción versátil para desarrollar aplicaciones de visualización de PDF en VB.NET.
¿Qué características ofrece IronPDF para la visualización de PDFs?
IronPDF ofrece características como abrir, ver, ampliar, navegar, imprimir y guardar páginas PDF, mejorando la experiencia del usuario al interactuar con documentos PDF en aplicaciones VB.NET.
¿Por qué debería evitar usar controles ActiveX para visualizar PDFs en VB.NET?
Los controles ActiveX suelen estar desactualizados y pueden llevar a implementaciones desordenadas. Usar bibliotecas modernas como IronPDF proporciona una solución más simplificada y confiable para visualizar PDF en VB.NET.
¿Es posible imprimir documentos PDF usando IronPDF en VB.NET?
Sí, IronPDF te permite imprimir documentos PDF directamente desde tu aplicación VB.NET, proporcionando una experiencia fluida para los usuarios que necesitan copias impresas de sus documentos.
¿Cómo mejora IronPDF la experiencia de visualización de PDFs para los usuarios?
IronPDF mejora la experiencia de visualización de PDFs al proporcionar características fáciles de usar para interactuar con PDFs, como navegación fluida, capacidades de ampliación y la capacidad de guardar e imprimir documentos sin esfuerzo.
¿IronPDF es compatible con .NET 10 para aplicaciones de visualización de PDF VB.NET?
Sí, IronPDF es totalmente compatible con .NET 10. Admite proyectos VB.NET que se ejecutan en .NET 10, así como en versiones anteriores como .NET 9, .NET 8, .NET Core, .NET Standard y .NET Framework 4.6.2+. Esto garantiza que pueda crear aplicaciones de visor de PDF en VB.NET con la plataforma más reciente.






