Configuración en .NET Standard / Core

Archivo Startup.cs

Dentro del archivo Startup.cs de un proyecto .NET Core, estas líneas de código definen una configuración de la canalización de middleware usando el método MapWhen. El predicado proporcionado verifica si la ruta de la solicitud entrante termina con DocImage.axd. Dentro de este bloque, se llama al método UseDoconut con un objeto DoconutOptions como argumento.

Startup.cs
app.MapWhen(
    context => context.Request.Path.ToString().EndsWith("DocImage.axd"),
    appBranch =>
    {
        appBranch.UseDoconut(new DoconutOptions { UnSafeMode = false, ShowDoconutInfo = false });
    }
);

Agregar espacios de nombres Doconut

En su proyecto, agregue las siguientes sentencias using:

Usings
using Doconut;
using Doconut.Configs;
using Doconut.Formats;
using Doconut.Clouds;

Instanciar objeto Viewer

Esta línea crea una nueva instancia de la clase Viewer, permitiéndole crear un objeto viewer dentro de su código.

Instantiation
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);

Configurar un objeto DocOptions

Ejemplo de inicialización de un objeto DocOptions con configuraciones específicas:

DocOptions
var documentOptions = new DocOptions
{
    Password = "",
    ImageResolution = 200,
    TimeOut = 30
};

Configurar un objeto config

Inicializar un nuevo objeto PdfConfig con configuraciones específicas para manejar documentos PDF:

PdfConfig
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };

Abrir su documento

Esta línea invoca el método OpenDocument del objeto viewer, pasando la ruta del archivo del documento ubicado en el servidor y los objetos PdfConfig y DocOptions previamente configurados como parámetros.

OpenDocument
var token = docViewer.OpenDocument(pathToFile, config, documentOptions);

Agregar el viewer en su HTML

HTML
<div id="div_ctlDoc"></div>

Agregar archivos CSS y JavaScript

Agregue los siguientes archivos CSS y JavaScript en la página. Estos scripts están incluidos en el archivo ZIP con ejemplos de código.

HTML Headers
<link rel="stylesheet" href="css/viewer.css" />

<!-- Main Viewer Related Scripts -->
<script src="scripts/jquery.min.js"></script>
<script src="scripts/docViewer.js"></script>
<script src="scripts/splitter.js"></script>
<script src="scripts/search.js"></script>
<script src="scripts/documentLinks.js"></script>

<!-- Viewer functions -->
<script src="scripts/docViewer.UI.js?v=1"></script>

Agregar licencias a su proyecto

Detección automática de licencias

Para inicializar el docViewer con detección automática de licencias, use la siguiente línea:

C#
var docViewer = new Viewer(_cache, _accessor);

Agregar licencia predeterminada manual

Puede especificar manualmente la ruta a un único archivo de licencia predeterminada al inicializar el viewer.

C#
var licenseFilePath = Path.Combine(_hostingEnvironment.WebRootPath, "path/to/your/license");
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);

Agregar licencia mediante stream

Este método utiliza la sobrecarga Viewer.DoconutLicense(Stream licenseStream) para agregar una licencia usando un stream.

C#
using (var licenseStream = new FileStream("path/to/your/license", FileMode.Open))
{
    Viewer.DoconutLicense(licenseStream);
}

Agregar licencia mediante documento XML

Este método utiliza la sobrecarga Viewer.DoconutLicense(XMLDocument licence) para agregar una licencia usando un documento XML.

C#
var xmlDoc = new XmlDocument();
xmlDoc.Load("path/to/your/license.xml");
Viewer.DoconutLicense(xmlDoc);

Licencias de complementos múltiples predeterminadas manuales

Si necesita especificar múltiples licencias, puede proporcionar una lista de rutas de archivo a la inicialización del viewer.

C#
List<string> licenseFilePaths = new List<string>
{
    Path.Combine(_hostingEnvironment.WebRootPath, "Doconut.Viewer.lic"),
    Path.Combine(_hostingEnvironment.WebRootPath, "Doconut.Viewer.Annotation.lic"),
    Path.Combine(_hostingEnvironment.WebRootPath, "Doconut.Viewer.Search.lic")
};
var docViewer = new Viewer(_cache, _accessor, licenseFilePaths);

Agregar licencia de complemento mediante stream

Este método utiliza la sobrecarga Viewer.SetLicensePlugin(Stream pluginLicence) para agregar una licencia de complemento usando un stream.

C#
using (var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open))
{
    Viewer.SetLicensePlugin(pluginLicenseStream);
}

Agregar licencia de complemento mediante documento XML

Este método utiliza la sobrecarga Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) para agregar una licencia de complemento usando un documento XML.

C#
var pluginXmlDoc = new XmlDocument();
pluginXmlDoc.Load("path/to/your/plugin-license.xml");
Viewer.SetLicensePlugin(pluginXmlDoc);

Paquetes NuGet requeridos

Para garantizar que su proyecto sea totalmente compatible con .NET Core Standard, se deben incluir los siguientes paquetes NuGet, enumerados en orden alfabético.

  • MessagePack - Version 2.5.140
  • Microsoft.Bcl.AsyncInterfaces - Version 8.0.0
  • Microsoft.Extensions.Caching.Abstractions - Version 8.0.0
  • Microsoft.Extensions.Configuration - Version 8.0.0
  • Microsoft.Extensions.Configuration.Abstractions - Version 8.0.0
  • Microsoft.Extensions.Configuration.FileExtensions - Version 8.0.0
  • Microsoft.Extensions.Configuration.Json - Version 8.0.0
  • Microsoft.Extensions.FileProviders.Abstractions - Version 8.0.0
  • Microsoft.Extensions.FileProviders.Physical - Version 8.0.0
  • Microsoft.Extensions.FileSystemGlobbing - Version 8.0.0
  • Microsoft.Extensions.Primitives - Version 8.0.0
  • System.Buffers - Version 4.5.1
  • System.Formats.Asn1 - Version 8.0.0
  • System.Numerics.Vectors - Version 4.5.0
  • System.Security.Cryptography.Cng - Version 5.0.0
  • System.Security.Cryptography.Pkcs - Version 8.0.0
  • System.Text.Encoding.CodePages - Version 8.0.0
  • System.Text.Encodings.Web - Version 8.0.0
  • System.Text.Json - Version 8.0.3
  • System.Threading.Tasks.Extensions - Version 4.5.4

Opciones de configuración de renderizado

Puede configurar el comportamiento de renderizado usando las siguientes opciones:

  • CadConfig: Se usa para archivos DWG, DXF y DGN.
  • EmailConfig: Se usa para archivos EML, EMLX y MSG.
  • EpubConfig: Se usa para archivos EPUB.
  • ExcelConfig: Se usa para archivos Excel y CSV.
  • MhtConfig: Se usa para archivos MHT.
  • PptConfig: Se usa para archivos PowerPoint.
  • ProjectConfig: Se usa para archivos MPP.
  • PsdConfig: Se usa para archivos PSD.
  • TxtConfig: Se usa para archivos TXT.
  • TiffConfig: Se usa para archivos TIFF.

Configuración de opciones de renderizado

Las opciones de renderizado se configuran usando la propiedad DefaultRender:

  • DefaultRender = true : Esta opción ofrece renderizado de mayor calidad pero utiliza más memoria del servidor y tiempo de procesamiento.
  • DefaultRender = false : Esta opción proporciona renderizado más rápido a costa de una ligera reducción de calidad.

Cómo agregar una anotación de imagen

En C#

1. Abra el documento y obtenga las dimensiones de la primera página. 2. Inicialice el AnnotationManager con las dimensiones de la página. 3. Cree un ImageAnnotation, estableciendo la ruta de la imagen en imgUrl, y especifique la posición y el tamaño dentro del Rectangle. 4. Añada la anotación al manager y cárguela en el visualizador de documentos para mostrarla.

C#
var token = docViewer.OpenDocument(pathToFile, config, documentOptions);

var firstPage = docViewer.GetThumbnailDimensions(1, 0, 100, false);
var pageWidth = firstPage.Width;
var pageHeight = firstPage.Height;

using (var annMgr = docViewer.GetAnnotationManager(pageWidth, pageHeight))
{
    string imgUrl = "img/sample.png";
    var imgAnn = new ImageAnnotation(
        1,
        new Rectangle(600, 700, 750, 300),
        imgUrl
    );

    annMgr.Add(imgAnn);
    docViewer.LoadAnnotationXML(annMgr.GetAnnotationXml());
}

En JavaScript

1. Asegúrese de que YourController esté disponible. 2. Cree un nuevo ImageAnnotation, estableciendo la ruta de la imagen con SetNote. 3. Añada y dibuje la anotación para renderizarla en el documento.

JavaScript
function ImageStamp() {
    if (null != objctlDoc.YourController()) {
        var objStampImage = new ImageAnnotation({ left: 200, top: 200, width: 260, height: 55 });
        objctlDoc.YourController().AddAnnotation(null, objStampImage, null);

        objStampImage.SetNote('/images/Approved_Stamp.png');
        objStampImage.Paint();
    }
}

Fuentes personalizadas en documentos Word

La propiedad FontFolders en la clase WordConfig especifica directorios personalizados donde la aplicación buscará fuentes. Esto es particularmente útil para procesar documentos Word que dependen de fuentes que no están instaladas en los directorios de fuentes predeterminados del sistema.

Usage
var config = new WordConfig
{
    FontFolders = new string[] { "C:\\CustomFonts", "D:\\SharedFonts" }
};

Actualización importante para Doconut 25.2.0

Es esencial actualizar el paquete System.Text.Json a la versión 8.0.5 en todos sus proyectos. Esta actualización es crucial para garantizar la compatibilidad con las últimas funciones y abordar importantes mejoras de seguridad.

Codificación de correo electrónico

La propiedad EmailEncoding en la clase EmailConfig especifica la codificación preferida tanto para el asunto como para el cuerpo del correo electrónico.

Usage
var emailConfig = new EmailConfig {
    EmailEncoding = Encoding.UTF8 // Set preferred email encoding
};

Codificación de asunto y cuerpo

Las propiedades SubjectEncoding y BodyEncoding en la clase EmailConfig definen la codificación utilizada para el asunto y el cuerpo de un correo electrónico, respectivamente.

Usage
var emailConfig = new EmailConfig {
    SubjectEncoding = Encoding.UTF8, // Set encoding for the subject
    BodyEncoding = Encoding.UTF8     // Set encoding for the body
};

Descargar archivos CSS y JS requeridos

Para garantizar que Doconut funcione correctamente, necesita incluir archivos CSS y JS específicos en su proyecto. Puede descargar un archivo ZIP que contiene todos los archivos necesarios usando el enlace a continuación: