VB.NET PDF Creator (Tutorial de ejemplo de código)

Chaknith Bin
Chaknith Bin
28 de agosto, 2018
Actualizado 10 de diciembre, 2024
Compartir:
This article was translated from English: Does it need improvement?
Translated
View the article in English

Este tutorial le guiará paso a paso en la creación y edición de archivos PDF en VB.NET. Esta técnica es igualmente válida para su uso en aplicaciones web ASP.NET así como en aplicaciones de consola, servicios de Windows y programas de escritorio. Utilizaremos VB.NET para crear proyectos PDF orientados a .NET Framework 4.6.2 o .NET Core 2. Todo lo que necesita es un entorno de desarrollo Visual Basic .NET, como Microsoft Visual Studio Community.

Para ver cómo usar IronPDF con C# consulte esta guía.

Para ver cómo usar IronPDF con F#, consulte esta guía.


Visión general

Códigos VB .NET para la creación y edición de PDF con IronPDF

Convierta HTML en PDF con VB.NET, aplique estilos, utilice contenido dinámico y edite sus archivos fácilmente. Crear PDFs es sencillo y compatible con .NET Framework 4.6.2, .NET Core 3.1, .NET 8, 7, 6 & 5. Y no hay necesidad de formatos de archivo propietarios o tirando de diferentes API.

Este tutorial proporciona la documentación para guiarte a través de cada tarea paso a paso, todo utilizando el software IronPDF gratuito para desarrolladores, preferido por los desarrolladores. Los ejemplos de código VB.NET son específicos de sus casos de uso para que pueda ver los pasos fácilmente en un entorno familiar. Esta biblioteca PDF de VB .NET cuenta con completas funciones de creación y configuración para cualquier proyecto, ya sea en aplicaciones ASP.NET, de consola o de escritorio.

Incluido con IronPDF:

  • Ticket support direct from our .NET PDF Library development team (real humans!)
  • Works with HTML, ASPX forms, MVC views, images, and all the document formats you already use
  • Microsoft Visual Studio installation gets you up and running fast
  • Unlimited free development, and licenses to go live starting at $749

    Primer paso

1. Descargue GRATIS la biblioteca PDF VB .NET de IronPDF

Comience a usar IronPDF en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer

Instalación mediante NuGet

En Visual Studio, haz clic con el botón derecho del ratón en el explorador de soluciones de tu proyecto y selecciona "Gestionar paquetes NuGet...". A partir de ahí, sólo tienes que buscar IronPDF e instalar la última versión... haga clic en Aceptar en los cuadros de diálogo que aparezcan.

Esto funcionará en cualquier proyecto C# .NET Framework desde Framework 4.6.2 y superior, o .NET Core 2 y superior. También funcionará igual de bien en proyectos VB.NET.

Install-Package IronPdf

https://www.nuget.org/packages/IronPdf

Instalación mediante DLL

Alternativamente, la DLL de IronPDF puede descargarse e instalarse manualmente en el proyecto o GAC desde https://ironpdf.com/packages/IronPdf.zip

Recuerde agregar esta declaración al principio de cualquier archivo de clase vb que utilice IronPDF:


Importa IronPdf;

Tutoriales

2. Crear un PDF con VB.NET

Usar Visual Basic ASP.NET para crear un archivo PDF por primera vez es sorprendentemente fácil utilizando IronPDF, en comparación con bibliotecas con API de diseño propietario como iTextSharp.

Podemos usar HTML (con un motor de renderizado de píxel perfecto basado en Google Chromium) para definir el contenido de nuestro PDF y simplemente renderizarlo a un archivo.

Aquí está nuestro código más simple para crear un PDF en VB.NET:

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-1.cs
Module Module1
    Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim document = renderer.RenderHtmlAsPdf("<h1> My First PDF in VB.NET</h1>")
        document.SaveAs("MyFirst.pdf")
    End Sub
End Module
VB.NET

Esto producirá un archivo PDF generado por .NET que contendrá su texto exacto, aunque carente de diseño en este punto.

Podemos mejorar este código añadiendo la línea de encabezado Imports IronPdf.

Al agregar la última línea de código System.Diagnostics.Process.Start, abrimos el PDF en el visor de PDF predeterminado del sistema operativo para que el proyecto sea más significativo.

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-2.cs
Imports IronPdf

Module Module1
    Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim document = renderer.RenderHtmlAsPdf("<h1> My First PDF in VB.NET</h1>")
        document.SaveAs("MyFirst.pdf")
        System.Diagnostics.Process.Start("MyFirst.pdf")
    End Sub
End Module
VB.NET

Un método alternativo sería convertir cualquier página web existente desde una URL a un PDF utilizando el elegante método "RenderUrlAsPdf" de IronPDF.

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-3.cs
Imports IronPdf

Module Module1
    Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim document = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")
        document.SaveAs("UrlToPdf.pdf")
        System.Diagnostics.Process.Start("UrlToPdf.pdf")
    End Sub
End Module
VB.NET

3. Aplicar estilo a PDF VB.NET

Para estilizar nuestro contenido PDF en VB.NET, podemos hacer pleno uso de CSS, JavaScript e imágenes. Podemos enlazar a activos locales, o incluso a activos remotos o basados en CDN, como Google Fonts. Incluso podemos usar DataURIs para incrustar imágenes y recursos como una cadena en tu HTML.

Para un diseño avanzado, podemos utilizar un proceso de 2 fases:

  1. Primero desarrollamos y diseñamos nuestro HTML a la perfección. En esta tarea puede participar personal interno de diseño, dividiendo la carga de trabajo.

  2. Renderiza ese archivo como PDF utilizando VB.NET y nuestra biblioteca PDF

    El código VB.NET para renderizar el archivo HTML como un PDF:

    Este método renderiza un documento HTML como si se abriera como un archivo (protocolo file://).

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-4.cs
Imports IronPdf

Module Module1
    Sub Main()
        Dim renderer = New ChromePdfRenderer()
        renderer.RenderingOptions.CssMediaType = Rendering.PdfCssMediaType.Print
        renderer.RenderingOptions.PrintHtmlBackgrounds = False
        renderer.RenderingOptions.PaperOrientation = Rendering.PdfPaperOrientation.Landscape
        renderer.RenderingOptions.WaitFor.RenderDelay(150)
        Dim document = renderer.RenderHtmlFileAsPdf("C:\Users\jacob\Dropbox\Visual Studio\Tutorials\VB.Net.Pdf.Tutorial\VB.Net.Pdf.Tutorial\slideshow\index.html")
        document.SaveAs("Html5.pdf")
        System.Diagnostics.Process.Start("Html5.pdf")
    End Sub
End Module
VB.NET

También podríamos acortar esa URL añadiendo una ruta de archivo relativa al proyecto como:

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-5.cs
Dim document = renderer.RenderHtmlFileAsPdf("..\..\slideshow\index.html")
VB.NET

Puede ver que el renderizador ChromePdfRenderer tiene una propiedad RenderingOptions que podemos usar en este ejemplo para:

  • Establece el tipo de medio CSS a 'print' para que no veamos estilos CSS3 sólo para pantalla
  • Ignorar fondos HTML
  • Poner el papel virtual del PDF en orientación Horizontal
  • Añade un pequeño retraso en la renderización para que el JavaScript termine de procesarse

    Nuestro archivo HTML de ejemplo utiliza JavaScript, CSS3 e imágenes. Este HTML crea un pase de diapositivas dinámico y compatible con dispositivos móviles y se encuentra en https://leemark.github.io/better-simple-slideshow/

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-6.cs
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>A simple DIY responsive slideshow made with HTML5, CSS3, and JavaScript</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href='http://fonts.googleapis.com/css?family=Open+Sans|Open+Sans+Condensed:700' rel='stylesheet' type='text/css'>
        <link rel="stylesheet" href="demo/css/demostyles.css">
        <link rel="stylesheet" href="css/simple-slideshow-styles.css">
    </head>
    <body>
        <!--[if lt IE 8]>
            <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
        <![endif]-->
        <header>
            <h1>A Better Simple Slideshow</h1>
            <p><span class="desc">A simple DIY responsive JavaScript slideshow.</span> [<a href="https://github.com/leemark/better-simple-slideshow">GitHub<span> repo</span></a>]</p>
        </header>
        <div class="bss-slides num1" tabindex="1" autofocus="autofocus">
            <figure>
              <img src="demo/img/medium.jpg" width="100%" /><figcaption>"Medium" by <a href="https://www.flickr.com/photos/thomashawk/14586158819/">Thomas Hawk</a>.</figcaption>
            </figure>
            <figure>
              <img src="demo/img/colorado.jpg" width="100%" /><figcaption>"Colorado" by <a href="https://www.flickr.com/photos/stuckincustoms/88370744">Trey Ratcliff</a>.</figcaption>
            </figure>
            <figure>
              <img src="demo/img/monte-vista.jpg" width="100%" /><figcaption>"Early Morning at the Monte Vista Wildlife Refuge, Colorado" by <a href="https://www.flickr.com/photos/davesoldano/8572429635">Dave Soldano</a>.</figcaption>
            </figure>
            <figure>
              <img src="demo/img/sunrise.jpg" width="100%" /><figcaption>"Sunrise in Eastern Colorado" by <a href="https://www.flickr.com/photos/35528040@N04/6673031153">Pam Morris</a>.</figcaption>
            </figure>
            <figure>
              <img src="demo/img/colorado-colors.jpg" width="100%" /><figcaption>"colorado colors" by <a href="https://www.flickr.com/photos/cptspock/2857543585">Jasen Miller</a>.</figcaption>
            </figure>
        </div> <!-- // bss-slides -->
<div class="content">
<h2>What is it?</h2>
<p>It's a fairly basic slideshow, written in javascript. This is a dual-purpose project, it's meant to be something you can drop right into your page and use if you so choose, but it's also meant as an example/tutorial script showing how to build a simple DIY slideshow from scratch on your own. <a href="http://themarklee.com/2014/10/05/better-simple-slideshow/">Here is a tutorial/walkthrough</a>.</p>
<h2>Features</h2>
<ul>
    <li>fully responsive</li>
    <li>option for auto-advancing slides, or manually advancing by user</li>
    <li>multiple slideshows per-page</li>
    <li>supports arrow-key navigation</li>
    <li>full-screen toggle using HTML5 fullscreen api</li>
    <li>swipe events supported on touch devices (requires <a href="https://github.com/hammerjs/hammer.js">hammer.js</a>)</li>
    <li>written in vanilla JS--this means no jQuery dependency (much &hearts; for <a href="https://github.com/jquery/jquery">jQuery</a> though!)</li>
</ul>
<h2>Getting Started</h2>
<ol>
<li><p>HTML markup for the slideshow should look basically like this, with a container element wrapping the whole thing (doesn't have to be a <span class="code">&lt;div&gt;</span>) and each slide is a <span class="code">&lt;figure&gt;</span>.</p>
<script src="https://gist.github.com/leemark/83571d9f8f0e3ad853a8.js"></script> </li>
<li>Include the script: <span class="code">js/better-simple-slideshow.min.js</span> or <span class="code">js/better-simple-slideshow.js</span></li>
<li>Include the stylesheet <span class="code">css/simple-slideshow-styles.css</span></li>
<li>Initialize the slideshow:
<script src="https://gist.github.com/leemark/479d4ecc4df38fba500c.js"></script>
</li>
</ol>
<h2>Options</h2>
To customize functionality, create an options object, then pass it into <span class="code">makeBSS()</span> as the second argument, as seen below:
<script src="https://gist.github.com/leemark/c6e0f5c47acb7bf9be16.js"></script>
<h2>Demo/Examples</h2>
    <h3>Example #1 (slideshow at top of this page)</h3>
    <p>HTML markup:</p>
    <script src="https://gist.github.com/leemark/19bafdb1abf8f6b4e147.js"></script>
    <p>JavaScript code:</p>
    <script src="https://gist.github.com/leemark/a09d2726b5bfc92ea68c.js"></script>
    <h3>Example #2 (below)</h3>
        <div class="bss-slides num2" tabindex="2">
           <figure>
              <img src="http://themarklee.com/wp-content/uploads/2013/12/snowying.jpg" width="100%" /><figcaption>"Snowying" by <a href="http://www.flickr.com/photos/fiddleoak/8511209344/">fiddleoak</a>.</figcaption>
           </figure>
            <figure>
                <img src="http://themarklee.com/wp-content/uploads/2013/12/starlight.jpg" width="100%" /><figcaption>"Starlight" by <a href="http://www.flickr.com/photos/chaoticmind75/10738494123/in/set-72157626146319517">ChaoticMind75</a>.</figcaption>
           </figure>
           <figure>
              <img src="http://themarklee.com/wp-content/uploads/2013/12/snowstorm.jpg" width="100%" /><figcaption>"Snowstorm" by <a href="http://www.flickr.com/photos/tylerbeaulawrence/8539457508/">Beaulawrence</a>.</figcaption>
           </figure>
            <figure>
              <img src="http://themarklee.com/wp-content/uploads/2013/12/misty-winter-afternoon.jpg" width="100%" /><figcaption>"Misty winter afternoon" by <a href="http://www.flickr.com/photos/22746515@N02/5277611659/">Bert Kaufmann</a>.</figcaption>
           </figure>
            <figure>
              <img src="http://themarklee.com/wp-content/uploads/2013/12/good-morning.jpg" width="100%" /><figcaption>"Good Morning!" by <a href="http://www.flickr.com/photos/frank_wuestefeld/4306107546/">Frank Wuestefeld</a>.</figcaption>
           </figure>
        </div> <!-- // bss-slides -->
<p>HTML markup:</p>
<script src="https://gist.github.com/leemark/de90c78cb73673650a5a.js"></script>
<p>JavaScript code:</p>
<script src="https://gist.github.com/leemark/046103061c89cdf07e4a.js"></script>
</div> <!-- // content -->
<footer>Example photos are property of their respective owners, all code is <a href="https://github.com/leemark/better-simple-slideshow/blob/gh-pages/LICENSE">freely licensed for your use</a>. <br>Made especially for you by <a href="http://themarklee.com">Mark Lee</a> aka <a href="http://twitter.com/@therealmarklee">@therealmarklee</a> <br><span>&#9774; + &hearts;</span></footer>
<script src="demo/js/hammer.min.js"></script><!-- for swipe support on touch interfaces -->
<script src="js/better-simple-slideshow.min.js"></script>
<script>
var opts = {
    auto : {
        speed : 3500,
        pauseOnHover : true
    },
    fullScreen : false,
    swipe : true
};
makeBSS('.num1', opts);
var opts2 = {
    auto : false,
    fullScreen : true,
    swipe : true
};
makeBSS('.num2', opts2);
</script>
</body>
</html>
HTML

Como puede ver, en este ejemplo se utilizan todas las funciones de una página web HTML. IronPDF realiza la renderización internamente utilizando el motor HTML Chromium y el motor javascript v8 de Google. No es necesario instalarlos en su sistema, todo el paquete se añade automáticamente a su proyecto cuando utiliza IronPDF.

3.1. Añadir encabezados y pies de página

Como ya tenemos un bonito PDF renderizado, es posible que ahora queramos añadir atractivos encabezados y pies de página.

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-7.cs
Imports IronPdf
Imports IronSoftware.Drawing

Module Module1
    Sub Main()
        Dim renderer = New ChromePdfRenderer()
        renderer.RenderingOptions.CssMediaType = Rendering.PdfCssMediaType.Print
        renderer.RenderingOptions.PrintHtmlBackgrounds = False
        renderer.RenderingOptions.PaperOrientation = Rendering.PdfPaperOrientation.Landscape
        renderer.RenderingOptions.WaitFor.RenderDelay(150)
        renderer.RenderingOptions.TextHeader.CenterText = "VB.NET PDF Slideshow"
        renderer.RenderingOptions.TextHeader.DrawDividerLine = True
        renderer.RenderingOptions.TextHeader.FontSize = "13"
        renderer.RenderingOptions.TextFooter.RightText = "page {page} of {total-pages}"
        renderer.RenderingOptions.TextFooter.Font = FontTypes.Arial
        renderer.RenderingOptions.TextFooter.FontSize = "9"
        Dim document = renderer.RenderHtmlFileAsPdf("..\..\slideshow\index.html")
        document.SaveAs("Html5WithHeader.pdf")
        System.Diagnostics.Process.Start("Html5WithHeader.pdf")
    End Sub
End Module
VB.NET

Admite encabezados y pies de página lógicos, como se muestra en la imagen. También puede agregar encabezados y pies de página basados en HTML como se describe en la referencia de la API para desarrolladores de PDF en VB.NET en línea.

Puedes descargar y explorar el código fuente de este proyecto "VB.NET HTML a PDF" como un proyecto de VB.NET en Visual Studio.


4. Crear PDF con contenido dinámico : 2 métodos

Históricamente, la "creación de plantillas" de PDF ha sido una tarea abrumadora para los ingenieros de software. Estampar contenido en plantillas PDF rara vez funciona. Esto se debe a que cada caso o informe tendrá un contenido de distinto tipo y extensión. Afortunadamente, HTML es excepcionalmente bueno en el manejo de Datos Dinámicos.

Para ello tenemos 2 vías:

  1. Plantilla de cadenas HTML y conversión a PDF mediante .NET

  2. Renderización del contenido como página web ASP.NET y posterior renderización de la página como PDF

4.1. Método 1 - ASP.NET - ASPX a PDF utilizando formularios web VB.NET

Afortunadamente, esta solución es sorprendentemente sencilla. Cualquier tipo de formulario web de .NET (incluido Razor) puede renderizarse en un documento PDF usando este código VB.NET en la subrutina Page_Load en el código detrás de VB.NET.

El documento PDF puede configurarse con una disposición de contenido para que se muestre en el navegador o para que actúe como descarga de archivos.

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-8.cs
Imports IronPdf

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
    Dim PdfOptions = New IronPdf.ChromePdfRenderOptions()
    IronPdf.AspxToPdf.RenderThisPageAsPDF(AspxToPdf.FileBehavior.Attachment, "MyPdf.pdf", PdfOptions)
End Sub
VB.NET

4.2. Método 2 - HTML a PDF con plantillas de cadenas

Para crear documentos PDF dinámicos que incluyan datos específicos de una instancia, basta con crear una cadena HTML que coincida con los datos que deseamos representar como PDF.

Ésta es probablemente la mayor ventaja de la solución HTML a PDF en VB.NET: la posibilidad de crear fácil e intuitivamente documentos e informes PDF dinámicos mediante la creación de HTML 'sobre la marcha'.

La versión más simple de esto es el método String.Format de VB.NET

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-9.cs
Imports IronPdf

Module Module1
    Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim Html = "Hello {0}"
        String.Format(Html, "World")
        Dim document = renderer.RenderHtmlAsPdf(Html)
        document.SaveAs("HtmlTemplate.pdf")
        System.Diagnostics.Process.Start("HtmlTemplate.pdf")
    End Sub
End Module
VB.NET

A medida que los PDF se complican, la cadena se complica. Podríamos considerar el uso de un String Builder, o incluso un marco de plantillas como HandleBars.Net o Razor

https://github.com/rexm/Handlebars.Net


5. Editar archivos PDF con VB.NET

IronPDF para VB.NET también permite editar documentos PDF, cifrarlos, ponerles marcas de agua o incluso convertirlos en texto sin formato:

5.1. Fusión de varios archivos PDF en un solo documento en VB

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-10.cs
Dim pdfs = New List(Of PdfDocument)
pdfs.Add(PdfDocument.FromFile("A.pdf"))
pdfs.Add(PdfDocument.FromFile("B.pdf"))
pdfs.Add(PdfDocument.FromFile("C.pdf"))
Dim mergedPdf As PdfDocument = PdfDocument.Merge(pdfs)
mergedPdf.SaveAs("merged.pdf")
mergedPdf.Dispose()
For Each pdf As PdfDocument In pdfs
    pdf.Dispose()
Next
VB.NET

5.2. Añadir una portada al PDF

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-11.cs
pdf.PrependPdf(renderer.RenderHtmlAsPdf("<h1>Cover Page</h1><hr>"))
VB.NET

5.3. Eliminar la última página del PDF

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-12.cs
pdf.RemovePage((pdf.PageCount - 1))
VB.NET

5.4. Cifrar un PDF con cifrado de 128 bits

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-13.cs
// Save with a strong encryption password.
pdf.Password = "my.secure.password";
pdf.SaveAs("secured.pdf")
VB.NET

5.5. Estampar contenido HTML adicional en una página en VB

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-14.cs
Imports IronPdf
Imports IronPdf.Editing

Module Module1
    Sub Main()
        Dim renderer = New ChromePdfRenderer
        Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
        Dim stamp = New HtmlStamper()
        stamp.Html = "<h2>Completed</h2>"
        stamp.Opacity = 50
        stamp.Rotation = -45
        stamp.VerticalAlignment = VerticalAlignment.Top
        stamp.VerticalOffset = New Length(10)
        pdf.ApplyStamp(stamp)
        pdf.SaveAs("C:\Path\To\Stamped.pdf")
    End Sub
End Module
VB.NET

5.6. Añadir salto de página a PDF usando HTML

La forma más sencilla de hacerlo es con HTML y CSS

:path=/static-assets/pdf/content-code-examples/how-to/vb-net-pdf-15.cs
<div style='page-break-after: always;'>&nbsp;</div>
HTML

6. Más tutoriales .NET sobre PDF

También le puede interesar:

Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.