Configuration dans .NET 6 ou supérieur

Fichier Startup.cs

Dans le fichier Startup.cs d'un projet .NET Core, ces lignes de code définissent une configuration de pipeline middleware en utilisant la méthode MapWhen. Le prédicat fourni vérifie si le chemin de la requête entrante se termine par DocImage.axd. À l'intérieur de ce bloc, la méthode UseDoconut est appelée avec un objet DoconutOptions en argument.

Startup.cs
app.MapWhen(
    ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
    branch => branch.UseDoconut());

Ajouter les espaces de noms Doconut

Dans votre projet, ajoutez les instructions using suivantes :

Ajouter les espaces de noms Doconut
using Doconut;
using Doconut.Configs;
using Doconut.Clouds;

Instancier l'objet Viewer

Cette ligne crée une nouvelle instance de la classe Viewer, vous permettant de créer un objet viewer dans votre code.

Instancier l'objet Viewer
// License is configured via AddDoconut; obtain the viewer from DI.
var docViewer = app.Services.GetRequiredService<Viewer>();

Configurer un objet DocOptions

Exemple d'initialisation d'un objet DocOptions avec des configurations spécifiques :

DocOptions
```csharp
// Document opening options – password and session timeout
var docOptions = new DocOptions
{
    Password = string.Empty,
    TimeOut = 30
};

// Per‑format rendering options – set image resolution via the format‑specific config
var pdfConfig = new PdfConfig
{
    ImageResolution = 200
};
```

Configurer un objet config

Initialisez un nouvel objet PdfConfig avec des configurations spécifiques pour la gestion des documents PDF :

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

Ouvrir votre document

Cette ligne invoque la méthode OpenDocument de l'objet viewer, en passant le chemin du fichier document situé sur le serveur ainsi que les objets PdfConfig et DocOptions préalablement configurés en paramètres.

OpenDocument
var token = await viewer.OpenDocumentAsync(path, new PdfConfig
{
    AllowSearch = true,
    AllowCopy   = true,
    ImageResolution = 150
});

Ajouter le viewer dans votre HTML

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

Ajouter les fichiers CSS et JavaScript

Ajoutez les fichiers CSS et JavaScript suivants dans la page. Ces scripts sont inclus dans le fichier ZIP avec des exemples de code.

Ajouter les fichiers CSS et JavaScript
<!-- Main Viewer Related Scripts -->
<script src="scripts/splitter.js"></script>
<script src="scripts/docViewer.js"></script>
<script src="scripts/documentLinks.js"></script>

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

Ajouter des licences à votre projet

Détection automatique des licences

Pour initialiser le docViewer avec la détection automatique des licences, utilisez la ligne suivante :

C#
app.MapPost("/api/open", async (Viewer viewer) =>
{
    // The token is opaque — hand it to the widget, never log or persist it.
    string token = await viewer.OpenDocumentAsync("wwwroot/files/Sample.pdf");
    return Results.Ok(new { token });
});

Ajouter une licence par défaut manuelle

Vous pouvez spécifier manuellement le chemin d'un fichier de licence par défaut unique lors de l'initialisation du viewer.

C#
builder.Services.AddDoconut(options =>
{
    options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});

Ajouter une licence par flux

Cette méthode utilise la surcharge Viewer.DoconutLicense(Stream licenseStream) pour ajouter une licence à l'aide d'un flux.

C#
builder.Services.AddDoconut(options =>
{
    options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});

Ajouter une licence par document XML

Cette méthode utilise la surcharge Viewer.DoconutLicense(XMLDocument licence) pour ajouter une licence à l'aide d'un document XML.

C#
// License XML from a database, environment variable, or secret manager —
// no file on disk. Beaten only by LicenseStream.
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
});

Licences multiples de plugin par défaut manuelles

Si vous devez spécifier plusieurs licences, vous pouvez fournir une liste de chemins de fichiers lors de l'initialisation du viewer.

C#
builder.Services.AddDoconut(options =>
{
    options.LicensePath = "Doconut.Viewer.lic";
});
builder.Services.AddDistributedMemoryCache(); // session state needs a cache (MVC/Razor Pages already add one)
builder.Services.AddSession(); // Doconut document security rides on ASP.NET session state

app.UseSession();          // call UseSession() before UseDoconut()
app.UseDoconutResources(); // must be registered before UseDoconut()
app.UseDoconut();

Ajouter une licence de plugin par flux

Cette méthode utilise la surcharge Viewer.SetLicensePlugin(Stream pluginLicence) pour ajouter une licence de plugin à l'aide d'un flux.

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

builder.Services.AddDoconut(options =>
{
    // The stream takes precedence over LicenseContent, LicensePath, and auto‑search.
    options.LicenseStream = pluginLicenseStream;
});

Ajouter une licence de plugin par document XML

Cette méthode utilise la surcharge Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) pour ajouter une licence de plugin à l'aide d'un document XML.

C#
builder.Services.AddDoconut(options =>
{
    options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});

Packages NuGet requis

Pour garantir que votre projet soit entièrement compatible avec .NET Core Standard, les packages NuGet suivants doivent être inclus, listés par ordre alphabétique.

  • 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

Options de configuration du rendu

Vous pouvez configurer le comportement de rendu à l'aide des options suivantes :

  • CadConfig : Utilisé pour les fichiers DWG, DXF et DGN.
  • EmailConfig : Utilisé pour les fichiers EML, EMLX et MSG.
  • EpubConfig : Utilisé pour les fichiers EPUB.
  • ExcelConfig : Utilisé pour les fichiers Excel et CSV.
  • MhtConfig : Utilisé pour les fichiers MHT.
  • PptConfig : Utilisé pour les fichiers PowerPoint.
  • ProjectConfig : Utilisé pour les fichiers MPP.
  • PsdConfig : Utilisé pour les fichiers PSD.
  • TxtConfig : Utilisé pour les fichiers TXT.
  • TiffConfig : Utilisé pour les fichiers TIFF.

Configuration des options de rendu

Les options de rendu sont configurées à l'aide de la propriété DefaultRender :

  • DefaultRender = true : Cette option offre un rendu de meilleure qualité mais utilise plus de mémoire serveur et de temps de traitement.
  • DefaultRender = false : Cette option offre un rendu plus rapide au prix d'une légère réduction de la qualité.

Comment ajouter une annotation d'image

En C#

1. Ouvrez le document et obtenez les dimensions de la première page. 2. Initialisez l'AnnotationManager avec les dimensions de la page. 3. Créez une ImageAnnotation, en définissant le chemin de l'image dans imgUrl, et spécifiez la position et la taille dans Rectangle. 4. Ajoutez l'annotation au gestionnaire et chargez‑la dans le visualiseur de documents pour l'afficher.

C#
var token = await viewer.OpenDocumentAsync(pathToFile, config, documentOptions);

// The annotation manager is automatically bound to the opened document's page dimensions.
using var annMgr = viewer.GetAnnotationManager(token);

var imgAnn = new ImageAnnotation(
    1,
    new Rectangle(600, 700, 750, 300),
    "img/sample.png"
);

annMgr.Add(imgAnn);
viewer.LoadAnnotationData(token, annMgr);

En JavaScript

1. Assurez‑vous que YourController est disponible. 2. Créez une nouvelle ImageAnnotation, en définissant le chemin de l'image avec SetNote. 3. Ajoutez et peignez l'annotation pour la rendre sur le document.

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();
    }
}

Polices personnalisées dans les documents Word

La propriété FontFolders de la classe WordConfig spécifie des répertoires personnalisés où l'application recherchera les polices. Ceci est particulièrement utile pour le traitement des documents Word qui dépendent de polices non installées dans les répertoires de polices par défaut du système.

Polices personnalisées dans les documents Word
var config = new WordConfig
{
    FontFolders = new string[] { "C:\\CustomFonts", "D:\\SharedFonts" }
};

Mise à jour importante pour Doconut 25.2.0

Il est essentiel de mettre à jour le package System.Text.Json vers la version 8.0.5 dans tous vos projets. Cette mise à jour est cruciale pour garantir la compatibilité avec les dernières fonctionnalités et pour répondre aux importantes améliorations de sécurité.

Encodage des e‑mails

La propriété EmailEncoding de la classe EmailConfig spécifie l'encodage préféré pour le sujet et le corps de l'e‑mail.

Encodage des e‑mails
var emailConfig = new EmailConfig {
    EmailEncoding = Encoding.UTF8 // Set preferred email encoding
};

Encodage du sujet et du corps

Les propriétés SubjectEncoding et BodyEncoding de la classe EmailConfig définissent l'encodage utilisé respectivement pour le sujet et le corps d'un e‑mail.

Encodage du sujet et du corps
var emailConfig = new EmailConfig {
    SubjectEncoding = Encoding.UTF8, // Set encoding for the subject
    BodyEncoding = Encoding.UTF8     // Set encoding for the body
};

Prise en charge de la culture du visualiseur Word

La propriété DocumentCulture de la classe WordConfig vous permet de définir explicitement la culture pour les fichiers DOC et DOCX. Cela garantit que le contenu localisé — tel que les dates, les devises et les nombres — s'affiche exactement comme dans Microsoft Word. Ceci est particulièrement utile pour les langues ayant des exigences de formatage spécifiques.

Prise en charge de la culture du visualiseur Word
var config = new WordConfig { DocumentCulture = "he-IL" }; // Hebrew (Israel)
var config = new WordConfig { DocumentCulture = "ar-SA" }; // Arabic (Saudi Arabia)
var config = new WordConfig { DocumentCulture = "th-TH" }; // Thai (Thailand)
var config = new WordConfig { DocumentCulture = "ja-JP" }; // Japanese (Japan)