راهاندازی در .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
این متد از بارگذاری Viewer.DoconutLicense(Stream licenseStream) برای افزودن لایسنس با استفاده از یک جریان (stream) استفاده میکند.
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);دستی پیشفرض لایسنسهای چندین افزونه
اگر نیاز به تعیین چندین لایسنس دارید، میتوانید فهرستی از مسیرهای فایلها را به مقداردهی اولیه 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
این متد از بارگذاری Viewer.SetLicensePlugin(Stream pluginLicence) برای افزودن لایسنس افزونه با استفاده از یک جریان (stream) استفاده میکند.
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. حاشیهنویسی را به مدیر اضافه کنید و آن را در viewer سند بارگذاری کنید تا نمایش داده شود.
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
};بارگیری فایلهای CSS و JS مورد نیاز
برای اطمینان از عملکرد صحیح Doconut، باید فایلهای CSS و JS خاصی را در پروژه خود گنجانید. میتوانید با استفاده از لینک زیر یک فایل ZIP شامل تمام فایلهای لازم را بارگیری کنید: