Настройка в .NET Standard / Core
Файл Startup.cs
В файле Startup.cs проекта .NET Core эти строки кода определяют конфигурацию конвейера промежуточного ПО с использованием метода MapWhen. Предоставленное предикат проверяет, заканчивается ли путь входящего запроса на DocImage.axd. Внутри этого блока вызывается метод UseDoconut с объектом DoconutOptions в качестве аргумента.
app.MapWhen(
context => context.Request.Path.ToString().EndsWith("DocImage.axd"),
appBranch =>
{
appBranch.UseDoconut(new DoconutOptions { UnsafeMode = false, ShowDoconutInfo = false });
}
);Добавить пространства имен Doconut
В вашем проекте добавьте следующие директивы using:
using Doconut;
using Doconut.Configs;
using Doconut.Clouds;
// TODO: implement licence loading, viewer registration, document opening, conversion using current APIСоздать объект Viewer
Эта строка создает новый экземпляр класса Viewer, позволяя вам создать объект viewer в вашем коде.
// Viewer is injected; no explicit construction required in Doconut.NETStandard 26.9.0Настроить объект DocOptions
Пример инициализации объекта DocOptions с конкретными настройками:
var documentOptions = new DocOptions
{
Password = "",
// ImageResolution is obsolete; omitted.
TimeOut = 30
};Настроить объект config
Инициализировать новый объект PdfConfig с конкретными настройками для обработки PDF‑документов:
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };Открыть ваш документ
Эта строка вызывает метод OpenDocument объекта viewer, передавая путь к файлу документа, расположенного на сервере, а также ранее настроенные объекты PdfConfig и DocOptions в качестве параметров.
dynamic viewer = null;
var token = viewer.LoadDocument(path, null, null);Добавить viewer в ваш HTML
<div id="div_ctlDoc"></div>Добавить файлы CSS и JavaScript
Добавьте следующие файлы CSS и JavaScript на страницу. Эти скрипты включены в ZIP‑файл с примерами кода.
<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 с автоматическим обнаружением лицензий, используйте следующую строку:
```csharp
// Create a Viewer instance using the current API (no constructor arguments required).
var docViewer = new Viewer();
```Добавить стандартную лицензию вручную
Вы можете вручную указать путь к единственному файлу стандартной лицензии при инициализации viewer.
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) для добавления лицензии через поток.
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‑документ.
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)Вручную указать несколько стандартных лицензий плагинов
Если необходимо указать несколько лицензий, вы можете предоставить список путей к файлам при инициализации viewer.
```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) для добавления лицензии плагина через поток.
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‑документ.
// 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. Добавьте аннотацию в менеджер и загрузите её в просмотрщик документа для отображения.
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. Добавьте и отрисуйте аннотацию, чтобы отобразить её в документе.
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)