Налаштування в .NET 6 або вище
Файл Startup.cs
У файлі Startup.cs .NET Core проєкту ці рядки коду визначають конфігурацію конвеєра проміжного програмного забезпечення за допомогою методу MapWhen. Наданий предикат перевіряє, чи закінчується шлях вхідного запиту на DocImage.axd. Усередині цього блоку викликається метод UseDoconut з об’єктом DoconutOptions як аргументом.
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());Додати простори імен Doconut
У вашому проєкті додайте наступні директиви using:
using Doconut;
using Doconut.Configs;
using Doconut.Clouds;Створити об’єкт Viewer
Цей рядок створює новий екземпляр класу Viewer, що дозволяє створити об’єкт переглядача у вашому коді.
// License is configured via AddDoconut; obtain the viewer from DI.
var docViewer = app.Services.GetRequiredService<Viewer>();Налаштувати об’єкт DocOptions
Приклад ініціалізації об’єкта 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
};
```Налаштувати об’єкт конфігурації
Ініціалізуйте новий об’єкт PdfConfig з певними налаштуваннями для обробки PDF‑документів:
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };Відкрити ваш документ
Цей рядок викликає метод OpenDocument об’єкта viewer, передаючи шлях до файлу документа, розташованого на сервері, та раніше налаштовані об’єкти PdfConfig і DocOptions як параметри.
var token = await viewer.OpenDocumentAsync(path, new PdfConfig
{
AllowSearch = true,
AllowCopy = true,
ImageResolution = 150
});Додати переглядач у ваш HTML
<div id="div_ctlDoc"></div>Додати файли CSS та JavaScript
Додайте наступні файли CSS та JavaScript на сторінку. Ці скрипти включені у ZIP‑файл з прикладами коду.
<!-- 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>Додати ліцензії у ваш проєкт
Автоматичне виявлення ліцензій
Щоб ініціалізувати docViewer з автоматичним виявленням ліцензій, використайте наступний рядок:
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 });
});Додати вручну типову ліцензію
Ви можете вручну вказати шлях до одного типового файлу ліцензії під час ініціалізації переглядача.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});Додати ліцензію за допомогою потоку
Цей метод використовує перевантаження Viewer.DoconutLicense(Stream licenseStream) для додавання ліцензії за допомогою потоку.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});Додати ліцензію за допомогою XML‑документа
Цей метод використовує перевантаження Viewer.DoconutLicense(XMLDocument licence) для додавання ліцензії за допомогою XML‑документа.
// 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") ?? "";
});Вручну типові кілька ліцензій плагінів
Якщо потрібно вказати кілька ліцензій, ви можете надати список шляхів до файлів під час ініціалізації переглядача.
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();Додати ліцензію плагіна за допомогою потоку
Цей метод використовує перевантаження Viewer.SetLicensePlugin(Stream pluginLicence) для додавання ліцензії плагіна за допомогою потоку.
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;
});Додати ліцензію плагіна за допомогою XML‑документа
Цей метод використовує перевантаження Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) для додавання ліцензії плагіна за допомогою XML‑документа.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});Необхідні пакети 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. Додайте анотацію до менеджера і завантажте її у переглядач документа для відображення.
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);У JavaScript
1. Переконайтеся, що YourController доступний. 2. Створіть нову ImageAnnotation, вказавши шлях до зображення за допомогою SetNote. 3. Додайте та намалюйте анотацію, щоб відобразити її в документі.
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‑документів, які залежать від шрифтів, не встановлених у стандартних каталогах системи.
var config = new WordConfig
{
FontFolders = new string[] { "C:\\CustomFonts", "D:\\SharedFonts" }
};Важливе оновлення для Doconut 25.2.0
Необхідно оновити пакет System.Text.Json до версії 8.0.5 у всіх ваших проєктах. Це оновлення є критичним для забезпечення сумісності з останніми функціями та вирішення важливих покращень безпеки.
Кодування електронної пошти
Властивість EmailEncoding у класі EmailConfig вказує бажане кодування для теми та тіла електронного листа.
var emailConfig = new EmailConfig {
EmailEncoding = Encoding.UTF8 // Set preferred email encoding
};Кодування теми та тіла
Властивості SubjectEncoding та BodyEncoding у класі EmailConfig визначають кодування, що використовується для теми та тіла електронного листа відповідно.
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. Це особливо корисно для мов зі специфічними вимогами до форматування.
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)