راهاندازی در .NET 6 یا بالاتر
فایل Startup.cs
در فایل Startup.cs یک پروژه .NET Core، این خطوط کد پیکربندی یک لولهکاری میانیافزار (middleware) را با استفاده از متد 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.Formats;
using Doconut.Clouds;ایجاد شیء Viewer
این خط یک نمونه جدید از کلاس Viewer را ایجاد میکند و به شما امکان میدهد یک شیء viewer را در کد خود ایجاد کنید.
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);راهاندازی یک شیء DocOptions
نمونهای از مقداردهی اولیه یک شیء DocOptions با پیکربندیهای خاص:
var documentOptions = new DocOptions
{
Password = "",
ImageResolution = 200,
TimeOut = 30
};راهاندازی یک شیء config
یک شیء جدید PdfConfig را با پیکربندیهای خاص برای پردازش اسناد PDF مقداردهی اولیه کنید:
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };باز کردن سند شما
این خط متد OpenDocument شیء viewer را فراخوانی میکند و مسیر فایل سند موجود بر روی سرور و اشیای PdfConfig و DocOptions که قبلاً پیکربندی شدهاند را به عنوان پارامترها میگذارد.
var token = docViewer.OpenDocument(pathToFile, config, documentOptions);افزودن viewer در 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 با تشخیص خودکار لایسنس، از خط زیر استفاده کنید:
var docViewer = new Viewer(_cache, _accessor);افزودن لایسنس پیشفرض دستی
شما میتوانید مسیر یک فایل لایسنس پیشفرض واحد را بهصورت دستی هنگام مقداردهی اولیه viewer مشخص کنید.
var licenseFilePath = Path.Combine(_hostingEnvironment.WebRootPath, "path/to/your/license");
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);افزودن لایسنس از طریق Stream
این متد از overload Viewer.DoconutLicense(Stream licenseStream) استفاده میکند تا لایسنس را با استفاده از یک stream اضافه کند.
using (var licenseStream = new FileStream("path/to/your/license", FileMode.Open))
{
Viewer.DoconutLicense(licenseStream);
}افزودن لایسنس از طریق سند XML
این متد از overload Viewer.DoconutLicense(XMLDocument licence) استفاده میکند تا لایسنس را با استفاده از یک سند XML اضافه کند.
var xmlDoc = new XmlDocument();
xmlDoc.Load("path/to/your/license.xml");
Viewer.DoconutLicense(xmlDoc);لایسنسهای پیشفرض متعدد افزونه بهصورت دستی
اگر نیاز به مشخص کردن چندین لایسنس دارید، میتوانید فهرستی از مسیرهای فایل را به مقداردهی اولیه viewer ارائه دهید.
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 اضافه کند.
using (var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open))
{
Viewer.SetLicensePlugin(pluginLicenseStream);
}افزودن لایسنس افزونه از طریق سند XML
این متد از overload Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) استفاده میکند تا لایسنس افزونه را با استفاده از یک سند XML اضافه کند.
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. حاشیهنویسی را به مدیر اضافه کنید و آن را در نمایشگر سند بارگذاری کنید تا نمایش داده شود.
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. حاشیهنویسی را اضافه و نقاشی کنید تا بر روی سند رندر شود.
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)