Налаштування в .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.Clouds;

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

Створити об’єкт Viewer

Цей рядок створює новий екземпляр класу Viewer, що дозволяє створити об’єкт переглядача у вашому коді.

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

Налаштування об’єкта DocOptions

Приклад ініціалізації об’єкта DocOptions з певними налаштуваннями:

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

Налаштування об’єкта конфігурації

Ініціалізуйте новий об’єкт PdfConfig з певними налаштуваннями для обробки PDF‑документів:

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

Відкрити ваш документ

Цей рядок викликає метод OpenDocument об’єкта переглядача, передаючи шлях до файлу документа, розташованого на сервері, та раніше налаштовані об’єкти PdfConfig і DocOptions як параметри.

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

Додати переглядач у ваш 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#
```csharp
// Create a Viewer instance using the current API (no constructor arguments required).
var docViewer = new Viewer();
```

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

Ви можете вручну вказати шлях до одного файлу стандартної ліцензії під час ініціалізації переглядача.

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

Додати ліцензію за допомогою потоку

Цей метод використовує перевантаження Viewer.DoconutLicense(Stream licenseStream) для додавання ліцензії за допомогою потоку.

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

Додати ліцензію за допомогою XML‑документа

Цей метод використовує перевантаження Viewer.DoconutLicense(XMLDocument licence) для додавання ліцензії за допомогою XML‑документа.

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)

Вручну стандартні кілька ліцензій плагінів

Якщо потрібно вказати кілька ліцензій, ви можете надати список шляхів до файлів під час ініціалізації переглядача.

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);
```

Додати ліцензію плагіна за допомогою потоку

Цей метод використовує перевантаження Viewer.SetLicensePlugin(Stream pluginLicence) для додавання ліцензії плагіна за допомогою потоку.

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.
}

Додати ліцензію плагіна за допомогою XML‑документа

Цей метод використовує перевантаження Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) для додавання ліцензії плагіна за допомогою XML‑документа.

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

Необхідні пакети 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#
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.

На JavaScript

1. Переконайтеся, що YourController доступний. 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 у класі EmailConfig вказує бажане кодування для теми та тіла електронного листа.

Usage
var emailConfig = new EmailConfig {
    EmailEncoding = Encoding.UTF8 // Set preferred email 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

Властивість 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)