How to Use IronWord on iOS

This article was translated from English: Does it need improvement?
Translated
View the article in English

.NET MAUI (Multi-platform App UI) enables you to build native applications across Android, iOS, Windows, and macOS using a single .NET codebase. With IronWord, .NET developers can easily create, read, edit, and save Microsoft Word (.docx) documents — fully cross-platform and without requiring Microsoft Office.

IronWord works seamlessly on iOS via the shared .NET MAUI codebase using the standard IronWord NuGet package — there is no platform-specific version needed.

Install the IronWord NuGet Package

IronWord is available as a standard cross-platform NuGet package and supports all major .NET MAUI targets, including iOS.

Install-Package IronWord

Create a .NET MAUI Project

In Visual Studio:

  1. Go to File > New > Project.
  2. Under Multiplatform, select .NET MAUI App.
  3. Name your project (e.g., IronWordMauiIOS) and click Create.

Add IronWord to Your Project

You can add the package via NuGet Package Manager or by editing your .csproj file:

<ItemGroup>
  <PackageReference Include="IronWord" Version="2025.5.0" />
</ItemGroup>
<ItemGroup>
  <PackageReference Include="IronWord" Version="2025.5.0" />
</ItemGroup>
XML

You don’t need platform conditions — IronWord works across all targets automatically.

Create the App Interface in XAML

Add a simple UI to load, edit, and save Word documents. To do this, start by adding this code to the MainPage.xml code:

<?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">

        <!-- Header -->
        <Label Text="IronWord iOS Demo"
               FontSize="24"
               FontAttributes="Bold"
               HorizontalOptions="Center"
               TextColor="#222"/>

        <!-- Open .docx -->
        <Button Text=" Open Word Document"
                Clicked="OpenDocx"
                BackgroundColor="#007AFF"
                TextColor="White"
                CornerRadius="10"
                HeightRequest="50"/>

        <!-- Editable content -->
        <Editor x:Name="docEditor"
                Placeholder="Start editing..."
                AutoSize="TextChanges"
                HeightRequest="250"
                FontSize="16"
                TextColor="#333"
                BackgroundColor="#F9F9F9"
                CornerRadius="10"
                Margin="0,10,0,0"/>

        <!-- Save Button -->
        <Button Text=" Save as .docx"
                Clicked="SaveDocx"
                BackgroundColor="#34C759"
                TextColor="White"
                CornerRadius="10"
                HeightRequest="50"/>

        <!-- Status message -->
        <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">

        <!-- Header -->
        <Label Text="IronWord iOS Demo"
               FontSize="24"
               FontAttributes="Bold"
               HorizontalOptions="Center"
               TextColor="#222"/>

        <!-- Open .docx -->
        <Button Text=" Open Word Document"
                Clicked="OpenDocx"
                BackgroundColor="#007AFF"
                TextColor="White"
                CornerRadius="10"
                HeightRequest="50"/>

        <!-- Editable content -->
        <Editor x:Name="docEditor"
                Placeholder="Start editing..."
                AutoSize="TextChanges"
                HeightRequest="250"
                FontSize="16"
                TextColor="#333"
                BackgroundColor="#F9F9F9"
                CornerRadius="10"
                Margin="0,10,0,0"/>

        <!-- Save Button -->
        <Button Text=" Save as .docx"
                Clicked="SaveDocx"
                BackgroundColor="#34C759"
                TextColor="White"
                CornerRadius="10"
                HeightRequest="50"/>

        <!-- Status message -->
        <Label x:Name="statusLabel"
               FontSize="14"
               TextColor="Gray"
               HorizontalOptions="Center"/>
    </VerticalStackLayout>
</ContentPage>
XML

This creates buttons and an editor UI for loading/saving Word content.

Use IronWord in Shared Code

In your MainPage.xaml.cs, implement reading and writing DOCX documents using 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
$vbLabelText   $csharpLabel

Project File Overview

Your project structure should now include:

IronWordMauiIOS/
│
├── MainPage.xaml              ← UI Layout
├── MainPage.xaml.cs          ← Logic for UI (Word document actions)
├── IronWordMauiIOS.csproj     ← References IronWord NuGet package
├── Platforms/ios/             ← iOS-specific config (no changes needed here)
└── ...

Run the Project

  1. Set the target to iOS Simulator.
  2. Press Run.
  3. Test reading and writing .docx documents directly on your simulated iOS device.

Final Notes

  • Fully cross-platform (iOS, Android, Windows, macOS)
  • No need for Microsoft Office or Interop
  • 100% C# / .NET MAUI-native
  • Works offline
  • Excellent for building editors, resume builders, document viewers

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.

Kye Stuart
Escritor Técnico

Kye Stuart fusiona la pasión por la codificación y la habilidad para escribir en Iron Software. Educado en Yoobee College en despliegue de software, ahora transforma conceptos tecnológicos complejos en contenido educativo claro. Kye valora el aprendizaje continuo y acepta nuevos desafíos tecnológicos.

<...
Leer más
¿Listo para empezar?
Nuget Descargas 25,807 | Versión: 2025.11 recién lanzado