Páginas ASPX a PDF en ASP.NET

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

Este tutorial de ASPX a PDF le guiará paso a paso sobre cómo convertir ASPX a PDF. Guardar una página ASPX como PDF en aplicaciones web ASP.NET.

Los usuarios nunca deberían tener que abrir el archivo ASPX con la extensión de archivo .aspx en Google Chrome. Pedimos a nuestro equipo de ingeniería que convierta ASPX a PDF automáticamente utilizando código .NET. ¡Nunca necesitamos presionar CTRL P! Hay una manera basada en el servidor para convertir medios de internet ASPX y guardarlos como PDF.

Aplique ajustes que incluyan la configuración del comportamiento y los nombres de los archivos, la adición de encabezados y pies de página, el cambio de las opciones de impresión, la adición de saltos de página, la combinación de Async y Multithreading, etc.

Cómo convertir archivos ASPX a PDF

Las aplicaciones de formularios web de Microsoft para ASP.NET se utilizan habitualmente en el desarrollo de sofisticados sitios web, banca en línea, intranets y sistemas de contabilidad. Una característica común de los sitios web ASP.NET (ASPX) es la generación de archivos PDF dinámicos, como facturas, boletos o informes de gestión para que los usuarios los descarguen en formato PDF.

Este tutorial muestra cómo usar el componente de software IronPDF for .NET para convertir cualquier formulario web ASP.NET en un PDF (ASP.NET a PDF). El HTML, que normalmente se representa como una página web, se utilizará para representar un PDF para su descarga o visualización en un navegador web. El proyecto fuente adjunto le mostrará cómo convertir una página web a PDF en ASP.NET utilizando C#.

Logramos esta conversión de HTML a PDF (convertir ASPX a PDF) al renderizar páginas web utilizando IronPDF y su Clase AspxToPdf.

1. Instale el convertidor de archivos ASPX gratuito 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, haga clic con el botón derecho del ratón en el explorador de soluciones del proyecto y seleccione "Administrar 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

Descargar IronPDF de NuGet

Instalación mediante DLL

Alternativamente, la DLL de IronPDF se puede descargar e instalar manualmente en el proyecto o GAC desde Descargar paquete de IronPDF.

Recuerda agregar esta declaración en la parte superior de cualquier archivo de clase cs que utilice IronPDF:


utilizando IronPdf;

2. Convertir páginas web ASP.NET a PDF

Comenzamos con un "Formulario Web" ASPX normal, que se renderiza como HTML. Más tarde convertimos la página ASPX al formato de archivo PDF.

En el código fuente de ejemplo adjunto, representamos una factura comercial "Factura.aspx", una simple factura comercial HTML representada como una página ASP.NET.

La página HTML contiene hojas de estilo CSS3 y también puede incluir imágenes y javascript.

Para renderizar esta página web ASP.NET en un PDF en lugar de HTML, necesitamos abrir el código C# (o VB.NET) y agregar esto al evento Page_Load:

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-1.cs
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser);
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser)
$vbLabelText   $csharpLabel

Esto es todo lo que se necesita; el HTML se muestra ahora como un PDF. Se conservan los hipervínculos, las hojas de estilo, las imágenes e incluso los formularios HTML. Este resultado es muy similar al que se obtendría si el propio usuario imprimiera el HTML en un PDF en su navegador. IronPDF se basa en la tecnología de navegador web Chromium que impulsa Google Chrome.

El código C# completo se lee así en su totalidad: Convertir la página ASPX como PDF en Active Server Pages.

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-2.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using IronPdf;

namespace AspxToPdfTutorial
{
    public partial class Invoice : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports IronPdf

Namespace AspxToPdfTutorial
	Partial Public Class Invoice
		Inherits System.Web.UI.Page

		Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
			IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

3. Aplicar la configuración del convertidor de archivos ASPX a PDF

Hay muchas opciones que ajustar y perfeccionar cuando convertimos un archivo ASPX a PDF generado con .NET Web Forms.

Estas opciones están documentadas completamente en línea en la Referencia de API de IronPDF.

3.1. Establecer el comportamiento del archivo PDF

El comportamiento del archivo "InBrowser" intenta mostrar el PDF directamente en el navegador del usuario. Esto no siempre es posible en todos los navegadores web, pero suele ser una característica común de los navegadores modernos que cumplen los estándares.


IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser);

El comportamiento del archivo "Attachment" provoca que el PDF se descargue.


IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment);

3.2. Establecer nombre de archivo PDF

También podemos establecer el nombre de archivo del documento PDF añadiendo un parámetro adicional. Esto significa que podemos controlar el nombre del archivo cuando el usuario decide descargarlo o guardarlo. Cuando guardemos la página ASPX como PDF, se dará este nombre al documento PDF.


IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf");

3.3. Cambiar las opciones de impresión de PDF

Podemos controlar la salida del PDF añadiendo una instancia de la clase IronPdf.ChromePdfRenderer. Referencia de la API ChromePdfRenderer

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-3.cs
var AspxToPdfOptions = new IronPdf.ChromePdfRenderOptions()
{
    EnableJavaScript = false,
    //.. many more options available
};
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf", AspxToPdfOptions);
Dim AspxToPdfOptions = New IronPdf.ChromePdfRenderOptions() With {.EnableJavaScript = False}
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf", AspxToPdfOptions)
$vbLabelText   $csharpLabel

Las opciones de representación de PDF disponibles incluyen:

  • CreatePdfFormsFromHtml convierte elementos de formularios ASPX en formularios PDF editables.
  • CssMediaType Screen o Print Estilos CSS y Hojas de Estilo. Vea nuestro tutorial completo en profundidad con imágenes comparativas.
  • CustomCssUrl Permite aplicar una hoja de estilo CSS personalizada al HTML antes de renderizarlo. Puede ser una ruta de archivo local o una URL remota.
  • EnableMathematicalLaTex habilita o deshabilita la representación de elementos matemáticos LaTeX.
  • EnableJavaScript Permite que JavaScript y JSON se ejecuten antes de que la página se renderice. Ideal para imprimir desde aplicaciones Ajax / Angular. Vea también la guía práctica de WaitFor.
  • Javascript Especifica una cadena de JavaScript personalizada para ejecutarse después de que todo el HTML haya cargado pero antes del renderizado del PDF.
  • JavascriptMessageListener Un método de devolución de llamada que se invoca cada vez que un mensaje de la consola de JavaScript del navegador está disponible.
  • FirstPageNumber Primer número de página para el encabezado y el pie de página. El valor por defecto es 1.
  • TableOfContents Genera una tabla de contenidos en la ubicación del documento HTML donde se encuentra un elemento con el id "ironpdf-toc".
  • TextHeader Establece el contenido del pie de página para cada página PDF como texto. Admite 'mail-merge' y convierte automáticamente las URL en hipervínculos.
  • TextFooter establece el contenido del encabezado para cada página PDF como texto. Admite 'mail-merge' y convierte automáticamente las URL en hipervínculos.
  • HtmlHeader Establece el contenido del encabezado para cada página PDF utilizando cadenas de contenido o incluso HTML.
  • HtmlFooter establece el contenido del pie de página para cada página PDF utilizando cadenas de contenido o incluso HTML.
  • MarginBottom Margen inferior del papel PDF en milímetros. Póngalo a cero para un pdf sin bordes.
  • MarginLeft Margen izquierdo del papel PDF en milímetros. Póngalo a cero para un pdf sin bordes.
  • MarginRight Margen derecho del papel PDF en milímetros. Póngalo a cero para un pdf sin bordes.
  • MarginTop Margen superior del papel PDF en milímetros. Póngalo a cero para un pdf sin bordes.
  • UseMarginsOnHeaderAndFooter Specifies whether to use margin values from the main document when rendering headers and footers.
  • PaperFit: Un gestor para configurar diseños de papel virtual, controlando cómo se dispondrá el contenido en las páginas "papel" de PDF. Incluye opciones para el comportamiento predeterminado de Chrome, con zoom, diseños CSS3 adaptables, configuraciones de página PDF de estilo Scale-To-Page y Continuous Feed.
  • PaperOrientation La orientación del papel en el PDF. Horizontal o Vertical.
  • PageRotation Rotación de página de un documento existente. Explicación completa y ejemplo de código adjunto.
  • PaperSize Establezca un tamaño de papel de salida para las páginas PDF utilizando System.Drawing.Printing.PaperKind.
  • SetCustomPaperSizeinCentimeters Establece el tamaño del papel en centímetros.
  • SetCustomPaperSizeInInches Establece el tamaño del papel en pulgadas.
  • SetCustomPaperSizeinMilimeters Establece el tamaño del papel en milímetros.
  • SetCustomPaperSizeinPixelsOrPoints Establece el tamaño del papel en píxeles de pantalla o puntos de impresora.
  • ForcePaperSize Especifica si se debe forzar que los tamaños de página sean exactamente lo que se especifica a través de PaperSize redimensionando la página después de generar un PDF a partir de HTML.
  • PrintHtmlBackgrounds Imprime los fondos de imagen HTML.
  • Escala de Grises Genera un PDF en escala de grises en lugar de a todo color.
  • WaitFor Un objeto contenedor que mantiene la configuración para el mecanismo de espera. Esto puede resultar útil a la hora de considerar la renderización de JavaScript, Ajax o animaciones.

    • PageLoad: Renderizado predeterminado sin espera.

    • RenderDelay: Estableciendo un tiempo de espera arbitrario.

    • Fuentes: Espera hasta que todas las fuentes se hayan cargado.

    • JavaScript: Activar el renderizado con una función de JavaScript.

    • Elementos HTML: Espera elementos HTML específicos, como IDs de elementos, nombres, nombres de etiquetas y selectores de consultas para dirigirse a elementos.
  • NetworkIdle: Esperando a que la red esté inactiva (0, 2, o una cantidad personalizada).
  • Título Metadatos 'Título' del documento PDF.
  • InputEncoding La codificación de caracteres de entrada como una cadena. UTF-8 es el predeterminado para ASP.NET.
  • RequestContext Especifica el contexto de la solicitud para el renderizado.
  • Timeout. Tiempo de espera en segundos.

4. Añadir encabezados y pies de página a PDF ASPX

Con IronPDF se pueden añadir encabezados y pies de página al PDF.

La forma más simple de hacer esto es con la clase TextHeaderFooter, que admite un diseño básico que puede agregar fácilmente datos dinámicos como la hora actual y la numeración de páginas.

4.1. Ejemplo de encabezado y pie de página de ASPX a PDF

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-4.cs
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace AspxToPdfTutorial
{
    public partial class Invoice : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var AspxToPdfOptions = new IronPdf.ChromePdfRenderOptions()
            {
                TextHeader = new IronPdf.TextHeaderFooter()
                {
                    CenterText = "Invoice",
                    DrawDividerLine = false,
                    Font = FontTypes.Arial,
                    FontSize = 12
                },
                TextFooter = new IronPdf.TextHeaderFooter()
                {
                    LeftText = "{date} - {time}",
                    RightText = "Page {page} of {total-pages}",
                    Font = IronSoftware.Drawing.FontTypes.Arial,
                    FontSize = 12,
                },
            };
            IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf", AspxToPdfOptions);
        }
    }
}
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace AspxToPdfTutorial
	Partial Public Class Invoice
		Inherits System.Web.UI.Page

		Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
			Dim AspxToPdfOptions = New IronPdf.ChromePdfRenderOptions() With {
				.TextHeader = New IronPdf.TextHeaderFooter() With {
					.CenterText = "Invoice",
					.DrawDividerLine = False,
					.Font = FontTypes.Arial,
					.FontSize = 12
				},
				.TextFooter = New IronPdf.TextHeaderFooter() With {
					.LeftText = "{date} - {time}",
					.RightText = "Page {page} of {total-pages}",
					.Font = IronSoftware.Drawing.FontTypes.Arial,
					.FontSize = 12
				}
			}
			IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf", AspxToPdfOptions)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Como alternativa, podemos generar encabezados y pies de página HTML utilizando la clase HtmlHeaderFooter, que también admite CSS, imágenes e hipervínculos.

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-5.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace AspxToPdfTutorial
{
    public partial class Invoice : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var AspxToPdfOptions = new IronPdf.ChromePdfRenderOptions()
            {
                MarginTop = 50, // make sufficiant space for an HTML header
                HtmlHeader = new IronPdf.HtmlHeaderFooter()
                {
                    HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
                }
            };
            IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "MyDocument.pdf", AspxToPdfOptions);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace AspxToPdfTutorial
	Partial Public Class Invoice
		Inherits System.Web.UI.Page

		Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
			Dim AspxToPdfOptions = New IronPdf.ChromePdfRenderOptions() With {
				.MarginTop = 50,
				.HtmlHeader = New IronPdf.HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}
			}
			IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "MyDocument.pdf", AspxToPdfOptions)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Como se ve en nuestros ejemplos, podemos "fusionar" texto dinámico o HTML en encabezados / pies de página utilizando marcadores de posición:

  • {page}: para el número de página actual del PDF.
  • {total-pages}: como el número total de páginas dentro del PDF.
  • {url}: URL web desde la cual se generó el documento PDF.
  • {date}: para la fecha de hoy en un formato adecuado al entorno del sistema del servidor.
  • {time}: para la hora en horas:segundos utilizando un reloj de 24 horas.
  • {html-title}: inserta el título de la etiqueta head del formulario web ASPX.
  • {pdf-title}: para el nombre del archivo del documento.

5. Trucos para aplicar archivos ASPX a PDF: Saltos de Página

Mientras que el HTML suele "fluir" en una página larga, los PDF simulan el papel digital y se dividen en páginas coherentes. Si añade el siguiente código a su página ASPX, se creará automáticamente un salto de página en el PDF generado por .NET.

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

6. Combinar Async y Multithreading para mejorar el rendimiento

IronPDF se ha creado para .NET Framework 4.6.2, o .NET Core 2 o superior. En proyectos de Framework 4.6.2 o superiores, se pueden utilizar las capacidades ASYNC para mejorar el rendimiento al trabajar con múltiples documentos.

La combinación de Async con CPU multihilo y el comando Parallel.ForEach mejorará significativamente el procesamiento masivo de formatos PDF.

7. Descargar como código fuente ASP.NET

El Código Fuente del Convertidor de Archivo ASPX a PDF completo para este tutorial está disponible para ser descargado como un proyecto de aplicación web de Visual Studio comprimido.

Descargue este tutorial como un proyecto de Visual Studio ASP.NET

La descarga gratuita contiene ejemplos de código de trabajo para un proyecto C# ASP.NET Web Forms que muestra una página web renderizada como PDF con la configuración aplicada. Esperamos que este tutorial le haya ayudado a aprender cómo guardar un archivo ASPX como PDF.

Hacia adelante

Por lo general, la mejor forma de aprender cualquier técnica de programación es experimentando con sus propios proyectos ASP.NET. Esto incluye probar el convertidor ASPX a PDF de IronPDF.

Los desarrolladores también pueden estar interesados en la Referencia de la Clase IronPdf.AspxToPdf.

8. Ver el vídeo tutorial de ASPX a PDF


Acceso rápido a tutoriales

Brand Visual Studio related to Acceso rápido a tutoriales

Descargar este tutorial como código fuente

The full ASPX File to PDF Converter Source Code for this tutorial is available as a zipped Visual Studio Web Application project. La descarga gratuita contiene ejemplos de código funcionando para un proyecto de C# ASP.NET Web Forms, mostrando una página web renderizada como un PDF con configuraciones aplicadas. Descargar

Explore este tutorial en GitHub

El código para este proyecto C# ASPX-To-PDF está disponible en C# y VB.NET en GitHub como un proyecto de sitio web ASP.NET. No dudes en hacer un fork en GitHub para obtener más ayuda usando IronPDF. Siéntete libre de compartir esto con cualquiera que pueda estar preguntando: '¿Cómo convierto ASPX a PDF?'

Proyecto de sitio web C# ASPX a PDF Ejemplos avanzados de ASP.NET para crear PDFs en C# Ejemplos de ASP.NET PDF en VB.NET para crear PDFs
Github Icon related to Acceso rápido a tutoriales
Html To Pdf Icon related to Acceso rápido a tutoriales

Descargar la guía de inicio rápido de C# PDF

Para facilitar el desarrollo de archivos PDF en sus aplicaciones .NET, hemos recopilado una guía rápida en un documento PDF. Esta "Cheat-Sheet" proporciona acceso rápido a funciones y ejemplos comunes para generar y editar PDFs en C# y VB.NET, y le ayudará a ahorrar tiempo al empezar a utilizar IronPDF en su proyecto .NET.

Descargar

Ver la referencia de la API

Explore la Referencia de API para IronPDF, que describe los detalles de todas las características, espacios de nombres, clases, métodos, campos y enums de IronPDF.

Ver la Referencia de la API de IronPDF
Documentation related to Acceso rápido a tutoriales
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.