الإعداد في .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، مما يتيح لك إنشاء كائن عارض داخل الشيفرة.
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 لكائن العارض، مع تمرير مسار ملف المستند الموجود على الخادم وكائنات 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);إضافة ترخيص عبر 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);ترخيصات إضافية متعددة يدويًا للقابس
إذا كنت بحاجة لتحديد تراخيص متعددة، يمكنك توفير قائمة بمسارات الملفات لتهيئة العارض.
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. أضف الملاحظة إلى المدير وحمّلها في عارض المستند لعرضها.
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 التي تعتمد على خطوط غير مثبتة في دلائل الخطوط الافتراضية للنظام's.
var config = new WordConfig
{
FontFolders = new string[] { "C:\\CustomFonts", "D:\\SharedFonts" }
};تحديث مهم لـ Doconut 25.2.0
من الضروري تحديث حزمة System.Text.Json إلى الإصدار 8.0.5 في جميع مشاريعك. هذا التحديث أساسي لضمان التوافق مع الميزات الأحدث وللتصدي لتحسينات الأمن الهامة.
ترميز البريد الإلكتروني
تحدد الخاصية EmailEncoding في فئة EmailConfig الترميز المفضل لكل من موضوع البريد الإلكتروني's ومحتواه.
var emailConfig = new EmailConfig {
EmailEncoding = Encoding.UTF8 // Set preferred email encoding
};ترميز الموضوع & النص
تحدد الخصائص SubjectEncoding و BodyEncoding في فئة EmailConfig الترميز المستخدم لموضوع البريد الإلكتروني's ومحتواه على التوالي.
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 يحتوي على جميع الملفات اللازمة باستخدام الرابط أدناه: