Einrichtung in .NET Standard / Core

Startup.cs-Datei

Im Startup.cs der einer .NET Core-Projekts definieren diese Codezeilen eine Middleware-Pipeline-Konfiguration mithilfe der MapWhen-Methode. Das bereitgestellte Prädikat prüft, ob der eingehende Anforderungspfad mit DocImage.axd endet. Innerhalb dieses Blocks wird die UseDoconut-Methode mit einem DoconutOptions-Objekt als Argument aufgerufen.

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

Doconut-Namensräume hinzufügen

Fügen Sie in Ihrem Projekt die folgenden using-Anweisungen hinzu:

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

// TODO: implement licence loading, viewer registration, document opening, conversion using current API

Viewer-Objekt instanziieren

Diese Zeile erstellt eine neue Instanz der Viewer-Klasse, sodass Sie ein Viewer-Objekt in Ihrem Code erstellen können.

Instantiation
// Viewer is injected; no explicit construction required in Doconut.NETStandard 26.9.0

Ein DocOptions-Objekt einrichten

Beispielhafte Initialisierung eines DocOptions-Objekts mit spezifischen Konfigurationen:

DocOptions
var documentOptions = new DocOptions
{
    Password = "",
    // ImageResolution is obsolete; omitted.
    TimeOut = 30
};

Ein Konfigurationsobjekt einrichten

Initialisieren Sie ein neues PdfConfig-Objekt mit spezifischen Konfigurationen für die Verarbeitung von PDF-Dokumenten:

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

Dokument öffnen

Diese Zeile ruft die OpenDocument-Methode des Viewer-Objekts auf und übergibt den Pfad der auf dem Server befindlichen Dokumentdatei sowie die zuvor konfigurierten PdfConfig- und DocOptions-Objekte als Parameter.

OpenDocument
dynamic viewer = null;
var token = viewer.LoadDocument(path, null, null);

Viewer in Ihr HTML einfügen

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

CSS- und JavaScript-Dateien hinzufügen

Fügen Sie die folgenden CSS- und JavaScript-Dateien auf der Seite hinzu. Diese Skripte sind in der ZIP-Datei mit Codebeispielen enthalten.

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>

Lizenzen zu Ihrem Projekt hinzufügen

Automatische Lizenzenerkennung

Um den docViewer mit automatischer Lizenzenerkennung zu initialisieren, verwenden Sie die folgende Zeile:

C#
```csharp
// Create a Viewer instance using the current API (no constructor arguments required).
var docViewer = new Viewer();
```

Manuelle Standardlizenz hinzufügen

Sie können beim Initialisieren des Viewers den Pfad zu einer einzelnen Standardlizenzdatei manuell angeben.

C#
using System.IO;
using Microsoft.Extensions.DependencyInjection;
using Doconut;

var licenseFilePath = Path.Combine(builder.Environment.WebRootPath, "path/to/your/license");
var docViewer = app.Services.GetRequiredService<Viewer>();

Lizenz per Stream hinzufügen

Diese Methode verwendet die Viewer.DoconutLicense(Stream licenseStream)-Überladung, um eine Lizenz über einen Stream hinzuzufügen.

C#
using System.IO;
using Doconut.Infrastructure.Licensing;

using (var licenseStream = new FileStream("path/to/your/license", FileMode.Open, FileAccess.Read))
{
    var license = new DoconutLicense { DocBytes = new BinaryReader(licenseStream).ReadBytes((int)licenseStream.Length) };
}

Lizenz per XML-Dokument hinzufügen

Diese Methode verwendet die Viewer.DoconutLicense(XMLDocument licence)-Überladung, um eine Lizenz über ein XML-Dokument hinzuzufügen.

C#
using System.Xml;
using Doconut.Infrastructure.Licensing;

var xmlDoc = new XmlDocument(); // load the license XML
xmlDoc.Load("path/to/your/license.xml");
var license = new DoconutLicense(); // instantiate license object (populate properties as needed)

Manuelle Standard-Multiple-Plugin-Lizenzen

Wenn Sie mehrere Lizenzen angeben müssen, können Sie eine Liste von Dateipfaden zur Viewer-Initialisierung bereitstellen.

C#
```csharp
// Prepare the paths to the viewer licence files (kept for reference; the current API loads them automatically)
var 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")
};

// The Viewer class no longer requires the licences in its constructor.
// Create an instance with the default constructor.
var docViewer = new Viewer();

// Open a document (e.g., a PDF) and obtain a token that represents the opened file.
string token = await docViewer.OpenDocumentAsync(
    filePath: Path.Combine(_hostingEnvironment.WebRootPath, "sample.pdf"),
    options: new DocOptions(),
    ct: CancellationToken.None);
```

Plugin-Lizenz per Stream hinzufügen

Diese Methode verwendet die Viewer.SetLicensePlugin(Stream pluginLicence)-Überladung, um eine Plugin-Lizenz über einen Stream hinzuzufügen.

C#
using (var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open))
{
    // In Doconut.NETStandard 26.9.0 the license is supplied via the configuration
    // passed to OpenDocumentAsync (BaseConfig), so the explicit SetLicensePlugin call
    // is no longer required. Keep the license file accessible to the viewer or
    // include it in your BaseConfig as shown in other samples.
}

Plugin-Lizenz per XML-Dokument hinzufügen

Diese Methode verwendet die Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence)-Überladung, um eine Plugin-Lizenz über ein XML-Dokument hinzuzufügen.

C#
// The license XML is discovered automatically by the viewer in Doconut.NETStandard 26.9.0.
// No explicit API call is required to register it.

string token = await Viewer.OpenDocumentAsync(
    "path/to/your/document.pdf",
    null, // DocOptions – use default settings
    CancellationToken.None);

Erforderliche NuGet-Pakete

Um sicherzustellen, dass Ihr Projekt vollständig mit .NET Core Standard kompatibel ist, müssen die folgenden NuGet-Pakete, alphabetisch sortiert, eingebunden werden.

  • 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

Render-Konfigurationsoptionen

Sie können das Renderverhalten mit den folgenden Optionen konfigurieren:

  • CadConfig: Wird für DWG-, DXF- und DGN-Dateien verwendet.
  • EmailConfig: Wird für EML-, EMLX- und MSG-Dateien verwendet.
  • EpubConfig: Wird für EPUB-Dateien verwendet.
  • ExcelConfig: Wird für Excel- und CSV-Dateien verwendet.
  • MhtConfig: Wird für MHT-Dateien verwendet.
  • PptConfig: Wird für PowerPoint-Dateien verwendet.
  • ProjectConfig: Wird für MPP-Dateien verwendet.
  • PsdConfig: Wird für PSD-Dateien verwendet.
  • TxtConfig: Wird für TXT-Dateien verwendet.
  • TiffConfig: Wird für TIFF-Dateien verwendet.

Render-Optionen-Konfiguration

Die Renderoptionen werden über die Eigenschaft DefaultRender konfiguriert:

  • DefaultRender = true : Diese Option bietet eine höhere Rendering-Qualität, verbraucht jedoch mehr Server‑Speicher und Verarbeitungszeit.
  • DefaultRender = false : Diese Option ermöglicht schnelleres Rendering auf Kosten einer leicht reduzierten Qualität.

So fügen Sie eine Bildannotation hinzu

In C#

1. Öffnen Sie das Dokument und ermitteln Sie die Abmessungen der ersten Seite. 2. Initialisieren Sie den AnnotationManager mit den Seitenabmessungen. 3. Erstellen Sie eine ImageAnnotation, setzen Sie den Bildpfad in imgUrl und geben Sie Position und Größe im Rectangle an. 4. Fügen Sie die Annotation dem Manager hinzu und laden Sie sie im Dokumenten‑Viewer, um sie anzuzeigen.

C#
using Doconut.Annotations;
using System.Drawing;

// Placeholder: open the document and obtain page dimensions using the current Doconut.NETStandard API.
// Placeholder: create an annotation manager for the page size.

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

// Placeholder: add the annotation to the manager and load the annotation XML back into the viewer using the current API.

In JavaScript

1. Stellen Sie sicher, dass YourController verfügbar ist. 2. Erstellen Sie eine neue ImageAnnotation und setzen Sie den Bildpfad mit SetNote. 3. Fügen Sie die Annotation hinzu und malen Sie sie, um sie im Dokument zu rendern.

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

Benutzerdefinierte Schriftarten in Word-Dokumenten

Die FontFolders‑Eigenschaft in der WordConfig‑Klasse gibt benutzerdefinierte Verzeichnisse an, in denen die Anwendung nach Schriftarten sucht. Dies ist besonders nützlich bei der Verarbeitung von Word-Dokumenten, die auf Schriftarten angewiesen sind, die nicht in den standardmäßigen Schriftartenverzeichnissen des Systems installiert sind.

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

Wichtige Aktualisierung für Doconut 25.2.0

Es ist unerlässlich, das System.Text.Json-Paket in allen Ihren Projekten auf Version 8.0.5 zu aktualisieren. Dieses Update ist entscheidend, um die Kompatibilität mit den neuesten Funktionen sicherzustellen und wichtige Sicherheitsverbesserungen zu adressieren.

E‑Mail‑Kodierung

Die EmailEncoding‑Eigenschaft in der EmailConfig‑Klasse gibt die bevorzugte Kodierung für Betreff und Text der E‑Mail an.

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

Betreff‑ und Textkodierung

Die Eigenschaften SubjectEncoding und BodyEncoding in der EmailConfig‑Klasse definieren die für den Betreff bzw. den Text einer E‑Mail verwendete Kodierung.

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

Word Viewer Kulturunterstützung

Die DocumentCulture-Eigenschaft in der WordConfig-Klasse ermöglicht es Ihnen, die Kultur für DOC- und DOCX-Dateien explizit festzulegen. Dadurch wird sichergestellt, dass lokalisierte Inhalte – wie Datumsangaben, Währungen und Zahlen – genau so dargestellt werden wie in Microsoft Word. Dies ist besonders nützlich für Sprachen mit spezifischen Formatierungsanforderungen.

Usage
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)