الإعداد في .NET 6 أو أعلى

ملف Startup.cs

داخل ملف Startup.cs لمشروع .NET Core، تُعرّف هذه الأسطر من الشيفرة تكوين خط أنابيب الوسيط باستخدام طريقة MapWhen. يتحقق الشرط المقدم مما إذا كان مسار الطلب الوارد ينتهي بـ DocImage.axd. داخل هذا القسم، يتم استدعاء طريقة UseDoconut مع كائن DoconutOptions كمعامل.

Startup.cs
app.MapWhen(
    context => context.Request.Path.ToString().EndsWith("DocImage.axd"),
    appBranch =>
    {
        appBranch.UseDoconut(new DoconutOptions { UnSafeMode = false, ShowDoconutInfo = false });
    }
);

إضافة مساحات أسماء Doconut

في مشروعك، أضف عبارات using التالية:

Usings
using Doconut;
using Doconut.Configs;
using Doconut.Formats;
using Doconut.Clouds;

إنشاء كائن Viewer

هذا السطر ينشئ نسخة جديدة من فئة Viewer، مما يتيح لك إنشاء كائن عارض داخل الكود الخاص بك.

Instantiation
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);

إعداد كائن DocOptions

مثال على تهيئة كائن DocOptions بإعدادات محددة:

DocOptions
var documentOptions = new DocOptions
{
    Password = "",
    ImageResolution = 200,
    TimeOut = 30
};

إعداد كائن التكوين

إنشاء كائن PdfConfig جديد مع تكوينات محددة لمعالجة مستندات PDF:

PdfConfig
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };

افتح مستندك

يقوم هذا السطر باستدعاء طريقة OpenDocument لكائن العارض، مع تمرير مسار ملف المستند الموجود على الخادم وكائنات PdfConfig و DocOptions التي تم تكوينها مسبقًا كمعلمات.

OpenDocument
var token = docViewer.OpenDocument(pathToFile, config, documentOptions);

أضف العارض في HTML الخاص بك

HTML
<div id="div_ctlDoc"></div>

إضافة ملفات CSS و JavaScript

أضف ملفات CSS و JavaScript التالية في الصفحة. تم تضمين هذه البرامج النصية في ملف ZIP مع عينات الشيفرة.

HTML Headers
<!-- 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 مع اكتشاف الترخيص التلقائي، استخدم السطر التالي:

C#
var docViewer = new Viewer(_cache, _accessor);

إضافة ترخيص افتراضي يدوي

يمكنك تحديد مسار ملف ترخيص افتراضي واحد يدويًا عند تهيئة العارض.

C#
var licenseFilePath = Path.Combine(_hostingEnvironment.WebRootPath, "path/to/your/license");
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);

إضافة ترخيص عبر تدفق

تستخدم هذه الطريقة التحميل الزائد Viewer.DoconutLicense(Stream licenseStream) لإضافة ترخيص باستخدام تدفق.

C#
using (var licenseStream = new FileStream("path/to/your/license", FileMode.Open))
{
    Viewer.DoconutLicense(licenseStream);
}

إضافة ترخيص عبر مستند XML

تستخدم هذه الطريقة التحميل الزائد Viewer.DoconutLicense(XMLDocument licence) لإضافة ترخيص باستخدام مستند XML.

C#
var xmlDoc = new XmlDocument();
xmlDoc.Load("path/to/your/license.xml");
Viewer.DoconutLicense(xmlDoc);

تراخيص إضافية متعددة افتراضية يدوية

إذا كنت بحاجة إلى تحديد تراخيص متعددة، يمكنك تقديم قائمة بمسارات الملفات لتهيئة العارض.

C#
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) لإضافة ترخيص مكوّن إضافي باستخدام تدفق.

C#
using (var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open))
{
    Viewer.SetLicensePlugin(pluginLicenseStream);
}

إضافة ترخيص مكوّن إضافي عبر مستند XML

تستخدم هذه الطريقة التحميل الزائد Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) لإضافة ترخيص مكوّن إضافي باستخدام مستند XML.

C#
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. أضف التوضيح إلى المدير وحمّله في عارض المستند لعرضه.

C#
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. أضف ورسم التوضيح لتظهره على المستند.

JavaScript
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 التي تعتمد على خطوط غير مثبتة في أدلة الخطوط الافتراضية للنظام.

Usage
var config = new WordConfig
{
    FontFolders = new string[] { "C:\\CustomFonts", "D:\\SharedFonts" }
};

تحديث مهم لـ Doconut 25.2.0

من الضروري تحديث حزمة System.Text.Json إلى الإصدار 8.0.5 في جميع مشاريعك. هذا التحديث حاسم لضمان التوافق مع أحدث الميزات ومعالجة التحسينات الأمنية المهمة.

ترميز البريد الإلكتروني

خاصية EmailEncoding في فئة EmailConfig تحدد الترميز المفضل لكل من موضوع البريد الإلكتروني ومحتواه.

Usage
var emailConfig = new EmailConfig {
    EmailEncoding = Encoding.UTF8 // Set preferred email encoding
};

ترميز العنوان والمحتوى

تحدد خصائص SubjectEncoding و BodyEncoding في فئة EmailConfig الترميز المستخدم للعنوان ومحتوى البريد الإلكتروني على التوالي.

Usage
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. وهذا مفيد بشكل خاص للغات التي لديها متطلبات تنسيق محددة.

Usage
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)