Cómo usar IronWord en iOS
.NET MAUI (Interfaz de Aplicaciones Multiplaforma) te permite construir aplicaciones nativas para Android, iOS, Windows y macOS usando una única base de código .NET. Con IronWord, los desarrolladores de .NET pueden crear, leer, editar y guardar documentos de Microsoft Word (.docx) fácilmente, totalmente multiplataforma y sin requerir Microsoft Office.
IronWord funciona perfectamente en iOS a través de la base de código compartida .NET MAUI usando el paquete NuGet estándar de IronWord — no se necesita una versión específica para la plataforma.
Instalar el paquete NuGet de IronWord
IronWord está disponible como un paquete NuGet multiplataforma estándar y soporta todos los principales objetivos de .NET MAUI, incluido iOS.
Install-Package IronWord
Crear un proyecto .NET MAUI
En Visual Studio:
- Ve a Archivo > Nuevo > Proyecto.
- Bajo Multiplataforma, selecciona Aplicación .NET MAUI.
- Nombra tu proyecto (por ejemplo, IronWordMauiIOS) y haz clic en Crear.
Añade IronWord a tu proyecto
Puedes añadir el paquete a través del Administrador de Paquetes NuGet o editando tu archivo .csproj:
<ItemGroup>
<PackageReference Include="IronWord" Version="2025.5.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="IronWord" Version="2025.5.0" />
</ItemGroup>
No necesitas condiciones de plataforma — IronWord funciona en todos los objetivos automáticamente.
Crear la interfaz de la aplicación en XAML
Añade una UI sencilla para cargar, editar y guardar documentos de Word. Para ello, comience agregando este código al código MainPage.xml:
<?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="IronWordMauiIOS.MainPage"
BackgroundColor="White">
<VerticalStackLayout Padding="20"
Spacing="15"
VerticalOptions="Center">
<Label Text="IronWord iOS Demo"
FontSize="24"
FontAttributes="Bold"
HorizontalOptions="Center"
TextColor="#222"/>
<Button Text=" Open Word Document"
Clicked="OpenDocx"
BackgroundColor="#007AFF"
TextColor="White"
CornerRadius="10"
HeightRequest="50"/>
<Editor x:Name="docEditor"
Placeholder="Start editing..."
AutoSize="TextChanges"
HeightRequest="250"
FontSize="16"
TextColor="#333"
BackgroundColor="#F9F9F9"
CornerRadius="10"
Margin="0,10,0,0"/>
<Button Text=" Save as .docx"
Clicked="SaveDocx"
BackgroundColor="#34C759"
TextColor="White"
CornerRadius="10"
HeightRequest="50"/>
<Label x:Name="statusLabel"
FontSize="14"
TextColor="Gray"
HorizontalOptions="Center"/>
</VerticalStackLayout>
</ContentPage>
<?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="IronWordMauiIOS.MainPage"
BackgroundColor="White">
<VerticalStackLayout Padding="20"
Spacing="15"
VerticalOptions="Center">
<Label Text="IronWord iOS Demo"
FontSize="24"
FontAttributes="Bold"
HorizontalOptions="Center"
TextColor="#222"/>
<Button Text=" Open Word Document"
Clicked="OpenDocx"
BackgroundColor="#007AFF"
TextColor="White"
CornerRadius="10"
HeightRequest="50"/>
<Editor x:Name="docEditor"
Placeholder="Start editing..."
AutoSize="TextChanges"
HeightRequest="250"
FontSize="16"
TextColor="#333"
BackgroundColor="#F9F9F9"
CornerRadius="10"
Margin="0,10,0,0"/>
<Button Text=" Save as .docx"
Clicked="SaveDocx"
BackgroundColor="#34C759"
TextColor="White"
CornerRadius="10"
HeightRequest="50"/>
<Label x:Name="statusLabel"
FontSize="14"
TextColor="Gray"
HorizontalOptions="Center"/>
</VerticalStackLayout>
</ContentPage>
Esto crea botones y una interfaz de edición para cargar/guardar contenido de Word.
Utilice IronWord en código compartido
En tu MainPage.xaml.cs, implementa la lectura y escritura de documentos DOCX usando IronWord:
using IronWord;
using IronWord.Models;
using Microsoft.Maui.Storage;
using System.Text;
namespace IronWordMauiIOS;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
License.LicenseKey = "YOUR-LICENSE-KEY";
}
private async void OpenDocx(object sender, EventArgs e)
{
try
{
var file = await FilePicker.PickAsync();
if (file == null) return;
var path = Path.Combine(FileSystem.CacheDirectory, file.FileName);
using (var source = await file.OpenReadAsync())
using (var target = File.Create(path))
await source.CopyToAsync(target);
var doc = new WordDocument(path);
docEditor.Text = ExtractText(doc);
statusLabel.Text = "Document loaded successfully.";
}
catch (Exception ex)
{
statusLabel.Text = $"Error: {ex.Message}";
}
}
private async void SaveDocx(object sender, EventArgs e)
{
try
{
var document = new WordDocument();
var paragraph = new Paragraph();
paragraph.Texts.Add(new TextContent(docEditor.Text));
document.Paragraphs.Add(paragraph);
var fileName = $"ExportedDoc_{DateTime.Now:yyyyMMddHHmmss}.docx";
var path = Path.Combine(FileSystem.AppDataDirectory, fileName);
document.SaveAs(path);
statusLabel.Text = $"Saved to: {fileName}";
}
catch (Exception ex)
{
statusLabel.Text = $"Save error: {ex.Message}";
}
}
private string ExtractText(WordDocument doc)
{
var sb = new StringBuilder();
foreach (var para in doc.Paragraphs)
{
foreach (var element in para.Texts)
{
if (element is TextContent text)
sb.AppendLine(text.Text);
}
}
return sb.ToString();
}
}
using IronWord;
using IronWord.Models;
using Microsoft.Maui.Storage;
using System.Text;
namespace IronWordMauiIOS;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
License.LicenseKey = "YOUR-LICENSE-KEY";
}
private async void OpenDocx(object sender, EventArgs e)
{
try
{
var file = await FilePicker.PickAsync();
if (file == null) return;
var path = Path.Combine(FileSystem.CacheDirectory, file.FileName);
using (var source = await file.OpenReadAsync())
using (var target = File.Create(path))
await source.CopyToAsync(target);
var doc = new WordDocument(path);
docEditor.Text = ExtractText(doc);
statusLabel.Text = "Document loaded successfully.";
}
catch (Exception ex)
{
statusLabel.Text = $"Error: {ex.Message}";
}
}
private async void SaveDocx(object sender, EventArgs e)
{
try
{
var document = new WordDocument();
var paragraph = new Paragraph();
paragraph.Texts.Add(new TextContent(docEditor.Text));
document.Paragraphs.Add(paragraph);
var fileName = $"ExportedDoc_{DateTime.Now:yyyyMMddHHmmss}.docx";
var path = Path.Combine(FileSystem.AppDataDirectory, fileName);
document.SaveAs(path);
statusLabel.Text = $"Saved to: {fileName}";
}
catch (Exception ex)
{
statusLabel.Text = $"Save error: {ex.Message}";
}
}
private string ExtractText(WordDocument doc)
{
var sb = new StringBuilder();
foreach (var para in doc.Paragraphs)
{
foreach (var element in para.Texts)
{
if (element is TextContent text)
sb.AppendLine(text.Text);
}
}
return sb.ToString();
}
}
Imports IronWord
Imports IronWord.Models
Imports Microsoft.Maui.Storage
Imports System.Text
Namespace IronWordMauiIOS
Partial Public Class MainPage
Inherits ContentPage
Public Sub New()
InitializeComponent()
License.LicenseKey = "YOUR-LICENSE-KEY"
End Sub
Private Async Sub OpenDocx(ByVal sender As Object, ByVal e As EventArgs)
Try
Dim file = Await FilePicker.PickAsync()
If file Is Nothing Then
Return
End If
Dim path As System.String = System.IO.Path.Combine(FileSystem.CacheDirectory, file.FileName)
Using source = Await file.OpenReadAsync()
Using target = System.IO.File.Create(path)
Await source.CopyToAsync(target)
End Using
End Using
Dim doc = New WordDocument(path)
docEditor.Text = ExtractText(doc)
statusLabel.Text = "Document loaded successfully."
Catch ex As Exception
statusLabel.Text = $"Error: {ex.Message}"
End Try
End Sub
Private Async Sub SaveDocx(ByVal sender As Object, ByVal e As EventArgs)
Try
Dim document = New WordDocument()
Dim paragraph As New Paragraph()
paragraph.Texts.Add(New TextContent(docEditor.Text))
document.Paragraphs.Add(paragraph)
Dim fileName = $"ExportedDoc_{DateTime.Now:yyyyMMddHHmmss}.docx"
Dim path As System.String = System.IO.Path.Combine(FileSystem.AppDataDirectory, fileName)
document.SaveAs(path)
statusLabel.Text = $"Saved to: {fileName}"
Catch ex As Exception
statusLabel.Text = $"Save error: {ex.Message}"
End Try
End Sub
Private Function ExtractText(ByVal doc As WordDocument) As String
Dim sb = New StringBuilder()
For Each para In doc.Paragraphs
For Each element In para.Texts
Dim tempVar As Boolean = TypeOf element Is TextContent
Dim text As TextContent = If(tempVar, CType(element, TextContent), Nothing)
If tempVar Then
sb.AppendLine(text.Text)
End If
Next element
Next para
Return sb.ToString()
End Function
End Class
End Namespace
Descripción general del archivo del proyecto
La estructura de tu proyecto ahora debería incluir:
IronWordMauiIOS/
│
├── MainPage.xaml ← Diseño de la IU
├── MainPage.xaml.cs ← Lógica para la IU (acciones del documento Word)
├── IronWordMauiIOS.csproj ← Referencias al paquete NuGet de IronWord
├── Platforms/ios/ ← Configuración específica de iOS (no se necesitan cambios aquí)
└── ...
Ejecutar el proyecto
- Establece el objetivo en el Simulador de iOS.
- Presiona Ejecutar.
- Prueba la lectura y escritura de documentos .docx directamente en tu dispositivo iOS simulado.
Notas finales
- Totalmente multiplataforma (iOS, Android, Windows, macOS)
- No necesita Microsoft Office o Interop
- 100% nativo de C# / .NET MAUI
- Funciona offline
- Excelente para construir editores, constructores de currículum, visores de documentos
Preguntas Frecuentes
¿Qué es IronWord y cómo se puede usar en iOS?
IronWord es una poderosa biblioteca diseñada para manejar documentos de Word en aplicaciones .NET, incluyendo iOS. Permite a los desarrolladores crear, manipular y convertir documentos de Word de manera fluida dentro de sus aplicaciones móviles.
¿Cómo integro IronWord en mi proyecto de iOS?
Para integrar IronWord en tu proyecto de iOS, necesitas agregar la biblioteca IronWord a tu solución .NET, configurar tu proyecto para referenciarla y usar las API proporcionadas para gestionar documentos de Word.
¿Cuáles son los requisitos del sistema para usar IronWord en iOS?
IronWord requiere un entorno .NET compatible en tu configuración de desarrollo iOS. Asegúrate de que tu entorno de desarrollo esté actualizado y soporte los marcos necesarios para una integración fluida.
¿Puede IronWord convertir documentos de Word a otros formatos en iOS?
Sí, IronWord puede convertir documentos de Word a varios formatos, como PDF, en tus aplicaciones iOS, permitiendo un manejo y compartición versátil de documentos.
¿IronWord soporta la manipulación de documentos en iOS?
Absolutamente, IronWord admite una amplia gama de manipulaciones de documentos, incluyendo la edición de texto, la inserción de imágenes y la gestión de propiedades de documentos directamente dentro de aplicaciones iOS.
¿Es posible crear documentos de Word desde cero usando IronWord en iOS?
Sí, IronWord permite crear nuevos documentos de Word desde cero en iOS, proporcionando un conjunto completo de herramientas para añadir contenido, formato y estilos de manera programática.
¿Cómo maneja IronWord la seguridad de los documentos de Word en aplicaciones iOS?
IronWord incluye funciones para gestionar la seguridad de los documentos, como la protección con contraseña y el cifrado, asegurando que tus documentos de Word permanezcan seguros en aplicaciones iOS.
¿Hay proyectos de muestra disponibles para utilizar IronWord en iOS?
Sí, Iron Software proporciona proyectos de muestra y documentación para ayudar a los desarrolladores a comenzar rápidamente con IronWord en iOS, mostrando varias características y casos de uso.
¿Requiere IronWord alguna licencia adicional para el despliegue en iOS?
IronWord requiere una licencia válida para el despliegue en entornos de producción, incluidas las aplicaciones iOS. Asegúrate de revisar los términos de la licencia para cumplir con las pautas de uso.

