راهاندازی در .NET 6 یا بالاتر
فایل 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.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 همراه با نمونههای کد گنجانده شدهاند.
<!-- 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);افزودن مجوز پیشفرض دستی
شما میتوانید مسیر یک فایل مجوز پیشفرض واحد را بهصورت دستی هنگام مقداردهی اولیه نمایشگر مشخص کنید.
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 - 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();
}
}قلمهای سفارشی در اسناد ورد
ویژگی FontFolders در کلاس WordConfig مسیرهای سفارشی را مشخص میکند که برنامه در آنها به دنبال قلمها میگردد. این بهویژه برای پردازش اسناد ورد که به قلمهایی که در مسیرهای پیشفرض سیستم نصب نشدهاند، وابسته هستند، مفید است.
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
ویژگی 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)