Настройка в .NET Standard / Core

Файл Startup.cs

В файле Startup.cs проекта .NET Core эти строки кода определяют конфигурацию конвейера посредников с использованием метода MapWhen. Предоставленное предикат проверяет, заканчивается ли путь входящего запроса на DocImage.axd. Внутри этого блока вызывается метод UseDoconut с объектом DoconutOptions в качестве аргумента.

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

Добавить пространства имён Doconut

В вашем проекте добавьте следующие директивы using:

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

Создать объект Viewer

Эта строка создаёт новый экземпляр класса Viewer, позволяя вам создать объект viewer в вашем коде.

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

Настроить объект DocOptions

Пример инициализации объекта DocOptions с конкретными настройками:

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

Создать объект конфигурации

Инициализировать новый объект PdfConfig с конкретными настройками для обработки PDF‑документов:

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

Открыть ваш документ

Эта строка вызывает метод OpenDocument объекта viewer, передавая путь к файлу документа, находящемуся на сервере, и ранее сконфигурированные объекты PdfConfig и DocOptions в качестве параметров.

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

Добавить viewer в ваш HTML

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

Добавить файлы CSS и JavaScript

Добавьте следующие файлы CSS и JavaScript на страницу. Эти скрипты включены в ZIP‑файл с образцами кода.

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>

Добавить лицензии в ваш проект

Автоматическое обнаружение лицензий

Чтобы инициализировать docViewer с автоматическим обнаружением лицензий, используйте следующую строку:

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

Добавить ручную стандартную лицензию

Вы можете вручную указать путь к единственному файлу стандартной лицензии при инициализации viewer.

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

Добавить лицензию через поток

Этот метод использует перегрузку Viewer.DoconutLicense(Stream licenseStream) для добавления лицензии через поток.

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

Добавить лицензию через XML‑документ

Этот метод использует перегрузку Viewer.DoconutLicense(XMLDocument licence) для добавления лицензии через XML‑документ.

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

Ручное добавление нескольких лицензий плагинов

Если нужно указать несколько лицензий, можно передать список путей к файлам при инициализации 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);

Добавить лицензию плагина через поток

Этот метод использует перегрузку Viewer.SetLicensePlugin(Stream pluginLicence) для добавления лицензии плагина через поток.

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

Добавить лицензию плагина через XML‑документ

Этот метод использует перегрузку Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) для добавления лицензии плагина через XML‑документ.

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

Необходимые пакеты NuGet

Чтобы ваш проект полностью поддерживал .NET Core Standard, необходимо включить следующие пакеты NuGet (в алфавитном порядке).

  • 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

Параметры конфигурации рендеринга

Вы можете настроить поведение рендеринга, используя следующие опции:

  • CadConfig: используется для файлов DWG, DXF и DGN.
  • EmailConfig: используется для файлов EML, EMLX и MSG.
  • EpubConfig: используется для файлов EPUB.
  • ExcelConfig: используется для файлов Excel и CSV.
  • MhtConfig: используется для файлов MHT.
  • PptConfig: используется для файлов PowerPoint.
  • ProjectConfig: используется для файлов MPP.
  • PsdConfig: используется для файлов PSD.
  • TxtConfig: используется для файлов TXT.
  • TiffConfig: используется для файлов TIFF.

Конфигурация параметров рендеринга

Параметры рендеринга настраиваются через свойство DefaultRender:

  • DefaultRender = true : Эта опция обеспечивает более высокое качество рендеринга, но использует больше памяти сервера и процессорного времени.
  • DefaultRender = false : Эта опция обеспечивает более быстрый рендеринг за счёт небольшого снижения качества.

Как добавить аннотацию‑изображение

На C#

1. Откройте документ и получите размеры первой страницы. 2. Инициализируйте AnnotationManager с размерами страницы. 3. Создайте ImageAnnotation, указав путь к изображению в imgUrl, и задайте позицию и размер в Rectangle. 4. Добавьте аннотацию в менеджер и отобразите её в просмотрщике документа.

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

На JavaScript

1. Убедитесь, что ваш контроллер доступен. 2. Создайте новый ImageAnnotation, указав путь к изображению через SetNote. 3. Добавьте и отрисуйте аннотацию, чтобы она отобразилась в документе.

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

Пользовательские шрифты в документах Word

Свойство FontFolders класса WordConfig задаёт пользовательские каталоги, в которых приложение будет искать шрифты. Это особенно полезно при обработке Word‑документов, требующих шрифтов, отсутствующих в системных каталогах.

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

Важное обновление для Doconut 25.2.0

Необходимо обновить пакет System.Text.Json до версии 8.0.5 во всех проектах. Это обновление критично для совместимости с новыми функциями и исправления важных уязвимостей.

Настройка EmailEncoding

Свойство EmailEncoding класса EmailConfig задаёт предпочтительную кодировку для темы и тела письма.

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

Subject & Body Encoding

Свойства SubjectEncoding и BodyEncoding класса EmailConfig определяют кодировку, используемую для темы и тела письма соответственно.

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

Поддержка культуры в Word Viewer

Свойство DocumentCulture класса WordConfig позволяет явно задать культуру для файлов DOC и DOCX. Это гарантирует, что локализованный контент (даты, валюты, числа) отображается так же, как в Microsoft Word, что особенно важно для языков со специфическими требованиями к форматированию.

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)

Скачать необходимые CSS и JS файлы

Для корректной работы Doconut необходимо включить определённые CSS и JS файлы в ваш проект. Все необходимые файлы можно скачать в виде ZIP‑архива по ссылке ниже: