IronPDF en Blazor Server App (Tutorial de HTML a PDF)
IronPDF es compatible con .NET 6 e incluye tipos de proyectos como Blazor. Utilizando Visual Studio, puede añadir IronPDF a su proyecto Blazor Server App y utilizarlo como se demuestra en el siguiente ejemplo:
Cómo ver archivos PDF en aplicaciones de servidor Blazor
- Instalar la librería HTML-to-PDF para aplicaciones Blazor
- Cree un nuevo proyecto Blazor en Visual Studio.
- Convertir las páginas web por URL en documentos PDF
- Renderizar las páginas web en el navegador del cliente
- Ver documentos PDF a partir de cadenas HTML
Crear un nuevo proyecto de servidor Blazor
Cree un nuevo proyecto y seleccione el tipo Blazor Server App.
Instale IronPDF en su proyecto Blazor
Una vez creado el proyecto, siga los pasos siguientes para instalar el programaBiblioteca IronPDF de NuGet en Visual Studio.
En la ventana del Explorador de soluciones de Visual Studio, haga clic con el botón derecho del ratón en "Referencias" y seleccione "Administrar paquetes NuGet".
Seleccione Examinar y busque
IronPdf
.Selecciona la última versión del paquete, marca la casilla correspondiente a tu proyecto y haz clic en instalar.
Alternativamente,
Install-Package IronPdf
Añadir nuevo componente Razor
Una vez instalado IronPDF en su proyecto Blazor, comience añadiendo un nuevo componente Razor. Para este tutorial, lo llamaremos "IronPdfComponent":
A continuación, actualiza el código de la siguiente manera:
@page "/IronPdf" @inject IJSRuntime JS
<h3>IronPdfComponent</h3>
<EditForm Model="@_InputMsgModel" id="inputText">
<div>
<InputTextArea @bind-Value="@_InputMsgModel.HTML" rows="20" />
</div>
<div>
<button onclick="@SubmitHTML">Render HTML</button>
</div>
</EditForm>
@page "/IronPdf" @inject IJSRuntime JS
<h3>IronPdfComponent</h3>
<EditForm Model="@_InputMsgModel" id="inputText">
<div>
<InputTextArea @bind-Value="@_InputMsgModel.HTML" rows="20" />
</div>
<div>
<button onclick="@SubmitHTML">Render HTML</button>
</div>
</EditForm>
@code {
InputHTMLModel _InputMsgModel = new InputHTMLModel();
private async Task SubmitHTML()
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var render = new IronPdf.ChromePdfRenderer();
var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
var fileName = "iron.pdf";
using var streamRef = new DotNetStreamReference(stream: doc.Stream);
await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
}
public class InputHTMLModel
{
public string HTML { get; set; } = "My new message";
}
}
@code {
InputHTMLModel _InputMsgModel = new InputHTMLModel();
private async Task SubmitHTML()
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var render = new IronPdf.ChromePdfRenderer();
var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
var fileName = "iron.pdf";
using var streamRef = new DotNetStreamReference(stream: doc.Stream);
await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
}
public class InputHTMLModel
{
public string HTML { get; set; } = "My new message";
}
}
code
If True Then
Dim _InputMsgModel As New InputHTMLModel()
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' private async Task SubmitHTML()
' {
' IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
' var render = New IronPdf.ChromePdfRenderer();
' var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
' var fileName = "iron.pdf";
' var streamRef = New DotNetStreamReference(stream: doc.Stream);
' await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
' }
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' public class InputHTMLModel
' {
' public string HTML
' {
' get;
' set;
' } = "My new message";
' }
End If
Añada este código JavaScript a _layout.cshtml
para permitir la descarga del PDF renderizado por IronPDF en la aplicación Blazor:
<script>
window.SubmitHTML = async (fileName, contentStreamReference) => {
const arrayBuffer = await contentStreamReference.arrayBuffer();
const blob = new Blob([arrayBuffer]);
const url = URL.createObjectURL(blob);
const anchorElement = document.createElement("a");
anchorElement.href = url;
anchorElement.download = fileName ?? "";
anchorElement.click();
anchorElement.remove();
URL.revokeObjectURL(url);
};
</script>
<script>
window.SubmitHTML = async (fileName, contentStreamReference) => {
const arrayBuffer = await contentStreamReference.arrayBuffer();
const blob = new Blob([arrayBuffer]);
const url = URL.createObjectURL(blob);
const anchorElement = document.createElement("a");
anchorElement.href = url;
anchorElement.download = fileName ?? "";
anchorElement.click();
anchorElement.remove();
URL.revokeObjectURL(url);
};
</script>
Edita el archivo NavMenu.razor en la carpeta Shared para incluir una pestaña de navegación a nuestro nuevo componente Razor. Añade el siguiente código:
<div class="nav-item px-3">
<NavLink class="nav-link" href="IronPdf">
<span class="oi oi-list-rich" aria-hidden="true"></span> IronPdf
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="IronPdf">
<span class="oi oi-list-rich" aria-hidden="true"></span> IronPdf
</NavLink>
</div>
Una vez aplicado todo esto, podemos ejecutar nuestra solución, y debería ver lo siguiente: