راهاندازی در .NET Standard / Core
فایل 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
};راهاندازی یک شیء پیکربندی
یک شیء PdfConfig جدید را با پیکربندیهای خاص برای پردازش اسناد PDF مقداردهی اولیه کنید:
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };سند خود را باز کنید
این خط متد OpenDocument شیء viewer را فراخوانی میکند و مسیر فایل سند که در سرور قرار دارد و اشیاء PdfConfig و DocOptions که قبلاً پیکربندی شدهاند را به عنوان پارامترها میگذارد.
var token = docViewer.OpenDocument(pathToFile, config, documentOptions);نمایشگر را در 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 با تشخیص خودکار مجوز، از خط زیر استفاده کنید:
var docViewer = new Viewer(_cache, _accessor);افزودن مجوز پیشفرض دستی
میتوانید مسیر یک فایل مجوز پیشفرض تک را بهصورت دستی هنگام مقداردهی اولیه نمایشگر مشخص کنید.
var licenseFilePath = Path.Combine(_hostingEnvironment.WebRootPath, "path/to/your/license");
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);افزودن مجوز از طریق جریان
این روش از بارگذاری Viewer.DoconutLicense(Stream licenseStream) برای افزودن مجوز با استفاده از یک جریان استفاده میکند.
using (var licenseStream = new FileStream("path/to/your/license", FileMode.Open))
{
Viewer.DoconutLicense(licenseStream);
}افزودن مجوز از طریق سند XML
این روش از بارگذاری Viewer.DoconutLicense(XMLDocument licence) برای افزودن مجوز با استفاده از یک سند XML استفاده میکند.
var xmlDoc = new XmlDocument();
xmlDoc.Load("path/to/your/license.xml");
Viewer.DoconutLicense(xmlDoc);مجوزهای افزونه پیشفرض چندگانه بهصورت دستی
اگر نیاز به مشخص کردن چندین مجوز دارید، میتوانید فهرستی از مسیرهای فایل را به مقداردهی اولیه نمایشگر ارائه دهید.
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);افزودن مجوز افزونه از طریق جریان
این روش از بارگذاری Viewer.SetLicensePlugin(Stream pluginLicence) برای افزودن مجوز افزونه با استفاده از یک جریان استفاده میکند.
using (var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open))
{
Viewer.SetLicensePlugin(pluginLicenseStream);
}افزودن مجوز افزونه از طریق سند XML
این روش از بارگذاری 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 - نسخه 2.5.140
- Microsoft.Bcl.AsyncInterfaces - نسخه 8.0.0
- Microsoft.Extensions.Caching.Abstractions - نسخه 8.0.0
- Microsoft.Extensions.Configuration - نسخه 8.0.0
- Microsoft.Extensions.Configuration.Abstractions - نسخه 8.0.0
- Microsoft.Extensions.Configuration.FileExtensions - نسخه 8.0.0
- Microsoft.Extensions.Configuration.Json - نسخه 8.0.0
- Microsoft.Extensions.FileProviders.Abstractions - نسخه 8.0.0
- Microsoft.Extensions.FileProviders.Physical - نسخه 8.0.0
- Microsoft.Extensions.FileSystemGlobbing - نسخه 8.0.0
- Microsoft.Extensions.Primitives - نسخه 8.0.0
- System.Buffers - نسخه 4.5.1
- System.Formats.Asn1 - نسخه 8.0.0
- System.Numerics.Vectors - نسخه 4.5.0
- System.Security.Cryptography.Cng - نسخه 5.0.0
- System.Security.Cryptography.Pkcs - نسخه 8.0.0
- System.Text.Encoding.CodePages - نسخه 8.0.0
- System.Text.Encodings.Web - نسخه 8.0.0
- System.Text.Json - نسخه 8.0.3
- System.Threading.Tasks.Extensions - نسخه 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)