راه‌اندازی در .NET 6 یا بالاتر

فایل Startup.cs

در فایل Startup.cs یک پروژه .NET Core، این خطوط کد یک مسیر میانی (middleware) را با استفاده از متد 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
};

راه‌اندازی یک شی config

یک شی جدید 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
<!-- 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 با تشخیص خودکار لایسنس، از خط زیر استفاده کنید:

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

اضافه کردن لایسنس از طریق Stream

این متد از overload Viewer.DoconutLicense(Stream licenseStream) برای اضافه کردن لایسنس با یک جریان (stream) استفاده می‌کند.

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

اضافه کردن لایسنس از سند XML

این متد از overload 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);

اضافه کردن لایسنس افزونه از Stream

این متد از overload Viewer.SetLicensePlugin(Stream pluginLicence) برای اضافه کردن لایسنس افزونه با یک جریان (stream) استفاده می‌کند.

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

اضافه کردن لایسنس افزونه از XML

این متد از overload 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 : این گزینه رندر سریع‌تر اما با کمی کاهش کیفیت را فراهم می‌کند.

نحوه افزودن یک Image Annotation

در C#

1. سند را باز کنید و ابعاد صفحه اول را به‌دست آورید. 2. AnnotationManager را با ابعاد صفحه مقداردهی کنید. 3. یک ImageAnnotation ایجاد کنید، مسیر تصویر را در imgUrl تنظیم کنید و موقعیت و اندازه را داخل Rectangle مشخص کنید. 4. Annotation را به مدیر اضافه کنید و در viewer بارگذاری کنید تا نمایش داده شود.

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. اطمینان حاصل کنید که YourController در دسترس است. 2. یک ImageAnnotation جدید ایجاد کنید و مسیر تصویر را با SetNote تنظیم کنید. 3. Annotation را اضافه و رسم کنید تا روی سند نمایش داده شود.

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 مسیرهای سفارشی را مشخص می‌کند که برنامه برای جستجوی فونت‌ها در آنها بررسی می‌کند. این کار به‌ویژه برای اسنادی که به فونت‌های غیر پیش‌فرض نیاز دارند مفید است.

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 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 حاوی تمام فایل‌های لازم را از لینک زیر دانلود کنید: