EditorOnline.Sdk 1.0.4

dotnet add package EditorOnline.Sdk --version 1.0.4
                    
NuGet\Install-Package EditorOnline.Sdk -Version 1.0.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EditorOnline.Sdk" Version="1.0.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="EditorOnline.Sdk" Version="1.0.4" />
                    
Directory.Packages.props
<PackageReference Include="EditorOnline.Sdk" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add EditorOnline.Sdk --version 1.0.4
                    
#r "nuget: EditorOnline.Sdk, 1.0.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package EditorOnline.Sdk@1.0.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=EditorOnline.Sdk&version=1.0.4
                    
Install as a Cake Addin
#tool nuget:?package=EditorOnline.Sdk&version=1.0.4
                    
Install as a Cake Tool

EditorOnline

Edite documentos de Office dentro de su aplicación .NET. Word, Excel, PowerPoint, PDF y formularios rellenables, en el navegador, sin instalar nada en la máquina del usuario. Al guardar, el archivo llega a su endpoint.

dotnet add package EditorOnline.Sdk

.NET 8, 9 y 10. Sin dependencias externas.

En marcha

Levante el contenedor del editor. Es la única infraestructura que hace falta.

docker run -d --name editoronline -p 8099:80 LA-IMAGEN-DEL-EDITOR

Registre el SDK:

using EditorOnline;

builder.Services.AddEditorOnline(clave, o =>
{
    o.ServidorUrl = "https://editor.miempresa.cr";   // el contenedor, visto por el navegador
});

var app = builder.Build();
app.MapEditorOnline();      // publica el componente desde su propio dominio

Cargue el componente una vez, en el layout:

@inject EditorOnline.IEditorOnline Editor
@Html.Raw(Editor.ObtenerEtiquetaScript())

Y abra un documento desde cualquier página:

EditorOnline.Open({
  urlGetDocumento: '/api/expedientes/482/documento',  // su backend lo entrega
  saveUrl: '/api/expedientes/482/documento',          // y lo recibe al guardar
  saveFields: { idExpediente: '482' },
  onSave: r => console.log(r.fileName, r.response)
});

El endpoint que lo recibe es un formulario normal:

app.MapPost("/api/expedientes/{id}/documento", async (int id, HttpRequest req) =>
{
    var form = await req.ReadFormAsync();
    var archivo = form.Files["file"]!;
    // guárdelo donde corresponda
    return Results.Ok(new { ok = true });
});

Qué abre

El tipo sale de la extensión. No hay que indicarlo.

Formato Se abre con
docx, doc, odt, rtf, txt Editor de documentos
xlsx, xls, ods, csv Hoja de cálculo
pptx, ppt, odp Presentaciones
pdf Editor de PDF
pdf con campos Formularios

Si el nombre no trae extensión, dígalo con typeFile: 'xlsx'.

De dónde sale el documento

urlGetDocumento es lo habitual: el archivo lo entrega su backend y nunca pasa por el navegador del usuario. Acepta dos respuestas, binaria o { nombre, tipo, base64 }, y deduce el nombre de la cabecera, de la URL o del tipo de contenido.

También sirve file (un input), base64, arrayBuffer o url.

Guardar

Guardar no cierra el editor. Fuerza el guardado, recoge el archivo, se lo pasa a onSave y lo sube a saveUrl. Al cerrar con cambios pendientes, pregunta.

saveUrl se decide al abrir cada documento. La opción UrlDeGuardado es solo el valor por defecto, para cuando todo va al mismo sitio.

Si el editor no responde

No hace falta comprobarlo antes. Intente abrir y, si no hay nadie, el componente avisa:

EditorOnline.Open({ file, onUnavailable: e => mostrarAviso(e.servidor) });

Open rechaza la promesa con e.codigo === 'no-disponible'.

La API

AddEditorOnline(clave, opciones) Valida la clave al arrancar. Si no sirve, no registra nada y explica por qué
TryAddEditorOnline(clave, opciones) Igual, pero devuelve false en vez de lanzar
MapEditorOnline() Publica el JavaScript, embebido en el paquete. Sin CDN ni CORS
ObtenerEtiquetaScript() La etiqueta <script> lista, con la configuración resuelta
ObtenerConfiguracion() Las mismas URLs, si prefiere montar la etiqueta usted

Opciones

Opción Por defecto
ServidorUrl http://127.0.0.1:8099 El contenedor, visto por el navegador. Casi siempre lo único que hay que poner
UrlDeGuardado vacío Endpoint por defecto. El saveUrl de Open manda sobre este
Idioma es Interfaz del editor
AutoGuardado true El editor transmite los cambios al contenedor mientras se escribe, por si se cierra la pestaña
RutaScript /editoronline/EditorOnline.js Dónde se publica el .js

Su aplicación no necesita ser alcanzable

El contenedor lleva dentro la pieza que recibe el documento, se lo sirve al editor y devuelve cada versión guardada. Se busca a sí mismo, así que no hay URL pública que declarar, ni carpeta temporal, ni almacén de sesiones.

Por eso su aplicación escala sin estado: el documento en edición vive en el contenedor, nunca en ella. El contenedor del editor, en cambio, conviene que sea uno solo o con sesiones pegajosas.

Un detalle que ahorra un rato: ServidorUrl es la dirección vista por el navegador. Si su aplicación corre en Docker junto al editor, no ponga http://editoronline, que solo existe dentro de la red de Docker.

La clave de activación

AddEditorOnline la exige. El paquete compara hashes SHA-256, nunca la clave en claro. Trátela como una credencial:

dotnet user-secrets set "EditorOnline:Clave" "su-clave"

En producción, variable de entorno EditorOnline__Clave o el gestor de secretos de su nube. Nunca en appsettings.json ni en el código.

Para solicitar la suya: andreyclemen@gmail.com

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.4 104 8/25/2026
1.0.3 93 8/25/2026
1.0.2 99 8/25/2026
1.0.1 88 8/25/2026
1.0.0 94 8/25/2026