Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
.NET MAUI es la nueva generación de .NET que permite a los desarrolladores crear aplicaciones multiplataforma de escritorio, web y móviles, incluidas las de Xamarin.Forms, con una única base de código. Con .NET MAUIpuedes escribir tu aplicación una vez e implementarla en varias plataformas, como Windows, macOS, iOS, Android y tvOS, con el mismo nombre de proyecto. .NET MAUI también le permite aprovechar las últimas funciones de interfaz de usuario de cada plataforma, como el modo oscuro y la compatibilidad táctil en macOS, o el reconocimiento de voz en Windows 10.
Este artículo explicará cómo utilizar IronPDF en la aplicación .NET MAUI para crear documentos PDF con muchas ventajas.
IronPDF es una biblioteca .NET que permite generar y editar archivos PDF. Es perfecto para su uso en aplicaciones .NET MAUI, ya que ofrece una amplia gama de características que se pueden personalizar para adaptarse a sus necesidades específicas. Con su API fácil de usar, IronPDF simplifica la integración de la funcionalidad PDF en su proyecto .NET MAUI.
Hay algunos requisitos previos para crear PDF y Visor PDF en .NET MAUI usando IronPDF:
Una de las mejores maneras de instalar IronPDF en un nuevo proyecto es mediante el uso de NuGet Package Manager Console dentro de Visual Studio. Utilizar este método para instalar IronPDF tiene algunas ventajas.
En primer lugar, abra la consola del gestor de paquetes accediendo a Herramientas > Gestor de paquetes NuGet > Consola del gestor de paquetes.
Consola del Administrador de Paquetes
A continuación, escriba el siguiente comando:
Install-Package IronPdf
Esto instalará el paquete y todas sus dependencias como la carpeta assets
.
**Instalación de IronPDF
Ya puedes empezar a usar IronPDF en tu proyecto MAUI.
En primer lugar, cree un diseño para tres funcionalidades de IronPDF.
Para el diseño de URL a PDF, crea una etiqueta con el texto "Introducir URL para convertir a PDF" utilizando un control de etiqueta .NET MAUI. A continuación, aplique un diseño de pila horizontal para disponer el control Entrada y el botón horizontalmente. A continuación, coloque una línea después de los controles para dividir la siguiente sección de controles.
<Label
Text="Enter URL to Convert PDF"
SemanticProperties.HeadingLevel="Level1"
FontSize="18"
HorizontalOptions="Center"
/>
<HorizontalStackLayout
HorizontalOptions="Center">
<Border Stroke="White"
StrokeThickness="2"
StrokeShape="RoundRectangle 5,5,5,5"
HorizontalOptions="Center">
<Entry
x:Name="URL"
HeightRequest="50"
WidthRequest="300"
HorizontalOptions="Center"
/>
</Border>
<Button
x:Name="urlPDF"
Text="Convert URL to PDF"
Margin="30,0,0,0"
Clicked="UrlToPdf"
HorizontalOptions="Center" />
</HorizontalStackLayout>
<Line Stroke="White" X2="1500" />
Para el diseño de la sección HTML a PDF, cree un control Editor y un botón. El control Editor se utilizará para aceptar una cadena de contenido HTML del usuario. Además, añada una línea como separador.
<Label
Text="Enter HTML to Convert to PDF"
SemanticProperties.HeadingLevel="Level2"
FontSize="18"
HorizontalOptions="Center" />
<Border
Stroke="White"
StrokeThickness="2"
StrokeShape="RoundRectangle 5,5,5,5"
HorizontalOptions="Center">
<Editor
x:Name="HTML"
HeightRequest="200"
WidthRequest="300"
HorizontalOptions="Center"
/>
</Border>
<Button
x:Name="htmlPDF"
Text="Convert HTML to PDF"
Clicked="HtmlToPdf"
HorizontalOptions="Center" />
<Line Stroke="White" X2="1500" />
Para los archivos HTML a PDF, añada sólo un botón. Ese botón ayudará a convertir un archivo HTML en un documento PDF utilizando IronPDF.
<Label
Text="Convert HTML file to PDF"
SemanticProperties.HeadingLevel="Level2"
FontSize="18"
HorizontalOptions="Center" />
<Button
x:Name="htmlFilePDF"
Text="Convert HTML file to PDF"
Clicked="FileToPdf"
HorizontalOptions="Center" />
El código fuente completo de la interfaz .NET MAUI se muestra a continuación.
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="PDF_Viewer.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Label
Text="Enter URL to Convert PDF"
SemanticProperties.HeadingLevel="Level1"
FontSize="18"
HorizontalOptions="Center"
/>
<HorizontalStackLayout
HorizontalOptions="Center">
<Border Stroke="White"
StrokeThickness="2"
StrokeShape="RoundRectangle 5,5,5,5"
HorizontalOptions="Center">
<Entry
x:Name="URL"
HeightRequest="50"
WidthRequest="300"
HorizontalOptions="Center"
/>
</Border>
<Button
x:Name="urlPDF"
Text="Convert URL to PDF"
Margin="30,0,0,0"
Clicked="UrlToPdf"
HorizontalOptions="Center" />
</HorizontalStackLayout>
<Line Stroke="White" X2="1500" />
<Label
Text="Enter HTML to Convert to PDF"
SemanticProperties.HeadingLevel="Level2"
FontSize="18"
HorizontalOptions="Center" />
<Border
Stroke="White"
StrokeThickness="2"
StrokeShape="RoundRectangle 5,5,5,5"
HorizontalOptions="Center">
<Editor
x:Name="HTML"
HeightRequest="200"
WidthRequest="300"
HorizontalOptions="Center"
/>
</Border>
<Button
x:Name="htmlPDF"
Text="Convert HTML to PDF"
Clicked="HtmlToPdf"
HorizontalOptions="Center" />
<Line Stroke="White" X2="1500" />
<Label
Text="Convert HTML file to PDF"
SemanticProperties.HeadingLevel="Level2"
FontSize="18"
HorizontalOptions="Center" />
<Button
x:Name="htmlFilePDF"
Text="Convert HTML file to PDF"
Clicked="FileToPdf"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
.NET MAUI no tiene ninguna función pre-construida para guardar archivos en el almacenamiento local. Por lo tanto, es necesario escribir el código nosotros mismos. Para crear la funcionalidad de guardar y ver, se crea una clase parcial llamada SaveService
con una función parcial void llamada SaveAndView
con tres parámetros: el nombre del archivo, el tipo de contenido del archivo y el flujo de memoria para escribir el archivo.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDF_Viewer
{
public partial class SaveService
{
public partial void SaveAndView(string filename, string contentType, MemoryStream stream);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDF_Viewer
{
public partial class SaveService
{
public partial void SaveAndView(string filename, string contentType, MemoryStream stream);
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Las funciones de guardado y visualización deberán implementarse para cada plataforma que pretenda admitir (por ejemplo, para Android, macOS y/o Windows). Para la plataforma Windows, cree un archivo llamado "SaveWindows.cs" e implemente el método parcial SaveAndView
:
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.UI.Popups;
namespace PDF_Viewer
{
public partial class SaveService
{
public async partial void SaveAndView(string filename, string contentType, MemoryStream stream)
{
StorageFile stFile;
string extension = Path.GetExtension(filename);
//Gets process windows handle to open the dialog in application process.
IntPtr windowHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
//Creates file save picker to save a file.
FileSavePicker savePicker = new FileSavePicker();
savePicker.DefaultFileExtension = ".pdf";
savePicker.SuggestedFileName = filename;
//Saves the file as PDF file.
savePicker.FileTypeChoices.Add("PDF", new List<string>() { ".pdf" });
WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle);
stFile = await savePicker.PickSaveFileAsync();
}
else
{
StorageFolder local = ApplicationData.Current.LocalFolder;
stFile = await local.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
}
if (stFile != null)
{
using (IRandomAccessStream zipStream = await stFile.OpenAsync(FileAccessMode.ReadWrite))
{
//Writes compressed data from memory to file.
using Stream outstream = zipStream.AsStreamForWrite();
outstream.SetLength(0);
//Saves the stream as file.
byte [] buffer = stream.ToArray();
outstream.Write(buffer, 0, buffer.Length);
outstream.Flush();
}
//Create message dialog box.
MessageDialog msgDialog = new("Do you want to view the document?", "File has been created successfully");
UICommand yesCmd = new("Yes");
msgDialog.Commands.Add(yesCmd);
UICommand noCmd = new("No");
msgDialog.Commands.Add(noCmd);
WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle);
//Showing a dialog box.
IUICommand cmd = await msgDialog.ShowAsync();
if (cmd.Label == yesCmd.Label)
{
//Launch the saved file.
await Windows.System.Launcher.LaunchFileAsync(stFile);
}
}
}
}
}
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.UI.Popups;
namespace PDF_Viewer
{
public partial class SaveService
{
public async partial void SaveAndView(string filename, string contentType, MemoryStream stream)
{
StorageFile stFile;
string extension = Path.GetExtension(filename);
//Gets process windows handle to open the dialog in application process.
IntPtr windowHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
//Creates file save picker to save a file.
FileSavePicker savePicker = new FileSavePicker();
savePicker.DefaultFileExtension = ".pdf";
savePicker.SuggestedFileName = filename;
//Saves the file as PDF file.
savePicker.FileTypeChoices.Add("PDF", new List<string>() { ".pdf" });
WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle);
stFile = await savePicker.PickSaveFileAsync();
}
else
{
StorageFolder local = ApplicationData.Current.LocalFolder;
stFile = await local.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
}
if (stFile != null)
{
using (IRandomAccessStream zipStream = await stFile.OpenAsync(FileAccessMode.ReadWrite))
{
//Writes compressed data from memory to file.
using Stream outstream = zipStream.AsStreamForWrite();
outstream.SetLength(0);
//Saves the stream as file.
byte [] buffer = stream.ToArray();
outstream.Write(buffer, 0, buffer.Length);
outstream.Flush();
}
//Create message dialog box.
MessageDialog msgDialog = new("Do you want to view the document?", "File has been created successfully");
UICommand yesCmd = new("Yes");
msgDialog.Commands.Add(yesCmd);
UICommand noCmd = new("No");
msgDialog.Commands.Add(noCmd);
WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle);
//Showing a dialog box.
IUICommand cmd = await msgDialog.ShowAsync();
if (cmd.Label == yesCmd.Label)
{
//Launch the saved file.
await Windows.System.Launcher.LaunchFileAsync(stFile);
}
}
}
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Para Android y macOS, tienes que crear archivos separados con implementaciones SaveAndView
comparables. Puede obtener un ejemplo práctico en Repo GitHub.
Ahora, es el momento de escribir el código para las funcionalidades PDF. Empecemos por la funcionalidad de URL a PDF.
Crear una función UrlToPdf
para la funcionalidad de URL a PDF. Dentro de la función, instancie el Renderizador de PDF cromado y utilizar el objeto RenderUrlAsPdf
para convertir la URL en documentos PDF. La función RenderUrlAsPdf
obtiene los datos de la URL del servidor web y los procesa para convertirlos en un documento PDF. En los parámetros, pasar el texto en el control de entrada de URL, crear un objeto de la clase SaveService
y utilizar la función SaveAndView
. En los parámetros de la función SaveAndView
, introduzca el flujo del archivo PDF generado.
La función SaveAndView
ayuda a guardar archivos en cualquier ruta personalizada y da la opción de ver archivos PDF. Por último, muestre un cuadro de alerta con información sobre la creación del archivo PDF. Si un usuario intenta crear un archivo PDF con un control de entrada vacío, mostrará un cuadro de alerta con un mensaje de error y una advertencia.
private void UrlToPdf(object sender, EventArgs e)
{
if (URL.Text != null)
{
var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf(URL.Text.Trim());
SaveService saveService = new SaveService();
saveService.SaveAndView("URLtoPDF.pdf", "application/pdf", pdf.Stream);
DisplayAlert("Success", "PDF from URL Created!", "OK");
}
else
{
DisplayAlert("Error", "Field can't be empty! \nPlease enter URL!", "OK");
}
}
private void UrlToPdf(object sender, EventArgs e)
{
if (URL.Text != null)
{
var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf(URL.Text.Trim());
SaveService saveService = new SaveService();
saveService.SaveAndView("URLtoPDF.pdf", "application/pdf", pdf.Stream);
DisplayAlert("Success", "PDF from URL Created!", "OK");
}
else
{
DisplayAlert("Error", "Field can't be empty! \nPlease enter URL!", "OK");
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Para convertir HTML a PDF, cree la función HtmlToPdf
y utilice la función RenderHtmlAsPdf función. Utiliza el texto del control Editor y pásalo en los parámetros de la función RenderHtmlAsPdf
. De forma similar a la función anterior, utilice la función SaveAndView
para habilitar la funcionalidad de ver el archivo PDF después de guardarlo.
private void HtmlToPdf(object sender, EventArgs e)
{
if (HTML.Text != null)
{
var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(HTML.Text);
SaveService saveService = new SaveService();
saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", pdf.Stream);
DisplayAlert("Success", "PDF from HTML Created!", "OK");
}
else
{
DisplayAlert("Error", "Field can't be empty! \nPlease enter valid HTML!", "OK");
}
}
private void HtmlToPdf(object sender, EventArgs e)
{
if (HTML.Text != null)
{
var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(HTML.Text);
SaveService saveService = new SaveService();
saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", pdf.Stream);
DisplayAlert("Success", "PDF from HTML Created!", "OK");
}
else
{
DisplayAlert("Error", "Field can't be empty! \nPlease enter valid HTML!", "OK");
}
}
Imports Microsoft.VisualBasic
Private Sub HtmlToPdf(ByVal sender As Object, ByVal e As EventArgs)
If HTML.Text IsNot Nothing Then
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(HTML.Text)
Dim saveService As New SaveService()
saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", pdf.Stream)
DisplayAlert("Success", "PDF from HTML Created!", "OK")
Else
DisplayAlert("Error", "Field can't be empty! " & vbLf & "Please enter valid HTML!", "OK")
End If
End Sub
Cree la función FileToPdf
para convertir archivos HTML en archivos PDF, utilice la función RenderHtmlFileAsPdf
y pasar la ruta del archivo HTML como parámetro. Convierte todo el contenido HTML en PDF y guarda el archivo de salida.
private void FileToPdf(object sender, EventArgs e)
{
var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf(@"C:\Users\Administrator\Desktop\index.html");
SaveService saveService = new SaveService();
saveService.SaveAndView("HTML File to PDF.pdf", "application/pdf", pdf.Stream);
DisplayAlert("Success", "PDF from File Created!", "OK");
}
private void FileToPdf(object sender, EventArgs e)
{
var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf(@"C:\Users\Administrator\Desktop\index.html");
SaveService saveService = new SaveService();
saveService.SaveAndView("HTML File to PDF.pdf", "application/pdf", pdf.Stream);
DisplayAlert("Success", "PDF from File Created!", "OK");
}
Private Sub FileToPdf(ByVal sender As Object, ByVal e As EventArgs)
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("C:\Users\Administrator\Desktop\index.html")
Dim saveService As New SaveService()
saveService.SaveAndView("HTML File to PDF.pdf", "application/pdf", pdf.Stream)
DisplayAlert("Success", "PDF from File Created!", "OK")
End Sub
Después de ejecutar el proyecto, la salida tendrá este aspecto.
Salida
Ponga la URL del sitio web de Microsoft en esta sección y haga clic en el botón.
URL a PDF
Después de crear el archivo PDF, muestra un cuadro de diálogo para guardar el archivo en el destino personalizado.
Guardar archivo
Después de guardar el archivo, aparece esta ventana emergente y da la opción de seleccionar el visor de PDF para ver el archivo PDF.
**Ventana emergente del visor de PDF
IronPDF convierte la URL a PDF de forma sobresaliente. Conserva todos los colores e imágenes en su forma y formato originales.
**Ventana emergente del visor de PDF
Hay que seguir el mismo procedimiento con todas las demás funcionalidades. Mira esto blog para saber más sobre el trabajo de IronPDF en Blazor.
Aprende a convertir una página MAUI como XAML a un documento PDF visitando "Cómo convertir XAML a PDF en MAUI".
Este tutorial utiliza IronPDF en la aplicación .NET MAUI para crear un archivo PDF y un visor PDF. .NET MAUI es una gran herramienta para crear aplicaciones multiplataforma con una única base de código. IronPDF ayuda a crear y personalizar archivos PDF fácilmente en cualquier aplicación .NET. IronPDF es totalmente compatible con la plataforma .NET MAUI.
IronPDF es gratuito para el desarrollo. Puede obtener un clave de prueba gratuita para probar IronPDF en producción. Para más información, visite la página siguiente enlace.
9 productos API .NET para sus documentos de oficina