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 canalización de middleware utilizando 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.
app.MapWhen(
context => context.Request.Path.ToString().EndsWith("DocImage.axd"),
appBranch =>
{
appBranch.UseDoconut(new DoconutOptions { UnSafeMode = false, ShowDoconutInfo = false });
}
);Agregar espacios de nombres de Doconut
En su proyecto, agregue las siguientes sentencias using:
using Doconut;
using Doconut.Configs;
using Doconut.Formats;
using Doconut.Clouds;Instanciar el objeto Viewer
Esta línea instancia una nueva instancia de la clase Viewer, lo que le permite crear un objeto de visor dentro de su código.
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);Configurar un objeto DocOptions
Ejemplo de inicialización de un objeto DocOptions con configuraciones específicas:
var documentOptions = new DocOptions
{
Password = "",
ImageResolution = 200,
TimeOut = 30
};Configurar un objeto config
Inicialice un nuevo objeto PdfConfig con configuraciones específicas para el manejo de documentos PDF:
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };Abra su documento
Esta línea invoca el método OpenDocument del objeto visor, pasando la ruta del archivo del documento ubicado en el servidor y los objetos PdfConfig y DocOptions previamente configurados como parámetros.
var token = docViewer.OpenDocument(pathToFile, config, documentOptions);Agregue el visor en su 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.
<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 licencia
Para inicializar docViewer con detección automática de licencia, use la siguiente línea:
var docViewer = new Viewer(_cache, _accessor);Agregar licencia predeterminada manual
Puede especificar manualmente la ruta a un único archivo de licencia predeterminado al inicializar el visor.
var licenseFilePath = Path.Combine(_hostingEnvironment.WebRootPath, "path/to/your/license");
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);Agregar licencia por Stream
Este método utiliza la sobrecarga Viewer.DoconutLicense(Stream licenseStream) para agregar una licencia mediante un flujo de datos.
using (var licenseStream = new FileStream("path/to/your/license", FileMode.Open))
{
Viewer.DoconutLicense(licenseStream);
}Agregar licencia por documento XML
Este método utiliza la sobrecarga Viewer.DoconutLicense(XMLDocument licence) para agregar una licencia mediante un documento XML.
var xmlDoc = new XmlDocument();
xmlDoc.Load("path/to/your/license.xml");
Viewer.DoconutLicense(xmlDoc);Múltiples licencias de complementos manuales por defecto
Si necesita especificar múltiples licencias, puede proporcionar una lista de rutas de archivos a la inicialización del visor.
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 por Stream
Este método utiliza la sobrecarga Viewer.SetLicensePlugin(Stream pluginLicence) para agregar una licencia de complemento mediante un flujo de datos.
using (var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open))
{
Viewer.SetLicensePlugin(pluginLicenseStream);
}Agregar licencia de complemento por documento XML
Este método utiliza la sobrecarga Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) para agregar una licencia de complemento mediante un documento XML.
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, listados en orden alfabético.
- MessagePack - Versión 2.5.140
- Microsoft.Bcl.AsyncInterfaces - Versión 8.0.0
- Microsoft.Extensions.Caching.Abstractions - Versión 8.0.0
- Microsoft.Extensions.Configuration - Versión 8.0.0
- Microsoft.Extensions.Configuration.Abstractions - Versión 8.0.0
- Microsoft.Extensions.Configuration.FileExtensions - Versión 8.0.0
- Microsoft.Extensions.Configuration.Json - Versión 8.0.0
- Microsoft.Extensions.FileProviders.Abstractions - Versión 8.0.0
- Microsoft.Extensions.FileProviders.Physical - Versión 8.0.0
- Microsoft.Extensions.FileSystemGlobbing - Versión 8.0.0
- Microsoft.Extensions.Primitives - Versión 8.0.0
- System.Buffers - Versión 4.5.1
- System.Formats.Asn1 - Versión 8.0.0
- System.Numerics.Vectors - Versión 4.5.0
- System.Security.Cryptography.Cng - Versión 5.0.0
- System.Security.Cryptography.Pkcs - Versión 8.0.0
- System.Text.Encoding.CodePages - Versión 8.0.0
- System.Text.Encodings.Web - Versión 8.0.0
- System.Text.Json - Versión 8.0.3
- System.Threading.Tasks.Extensions - Versión 4.5.4
Opciones de configuración de renderizado
Puede configurar el comportamiento de renderizado utilizando las siguientes opciones:
- CadConfig: Utilizado para archivos DWG, DXF y DGN.
- EmailConfig: Utilizado para archivos EML, EMLX y MSG.
- EpubConfig: Utilizado para archivos EPUB.
- ExcelConfig: Utilizado para archivos Excel y CSV.
- MhtConfig: Utilizado para archivos MHT.
- PptConfig: Utilizado para archivos PowerPoint.
- ProjectConfig: Utilizado para archivos MPP.
- PsdConfig: Utilizado para archivos PSD.
- TxtConfig: Utilizado para archivos TXT.
- TiffConfig: Utilizado para archivos TIFF.
Configuración de opciones de renderizado
Las opciones de renderizado se configuran utilizando la propiedad DefaultRender:
- DefaultRender = true : Esta opción ofrece una mayor calidad de renderizado pero utiliza más memoria del servidor y tiempo de procesamiento.
- DefaultRender = false : Esta opción proporciona un renderizado más rápido a expensas de una calidad ligeramente reducida.
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 una ImageAnnotation, configurando la ruta de la imagen en imgUrl, y especifique la posición y el tamaño dentro de Rectangle. 4. Agregue la anotación al administrador y cárguela en el visor de documentos para mostrarla.
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 una nueva ImageAnnotation, configurando la ruta de la imagen con SetNote. 3. Agregue y dibuje la anotación para renderizarla en el documento.
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 de Word
La propiedad FontFolders en la clase WordConfig especifica directorios personalizados donde la aplicación buscará fuentes. Esto es particularmente útil para procesar documentos de Word que dependen de fuentes no instaladas en los directorios de fuentes predeterminados del sistema.
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 funciones más recientes y para abordar mejoras de seguridad importantes.
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.
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.
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, debe incluir archivos CSS y JS específicos en su proyecto. Puede descargar un archivo ZIP que contiene todos los archivos necesarios utilizando el siguiente enlace: