הגדרה ב-.NET 6 או גבוה יותר
קובץ Startup.cs
בתוך קובץ Startup.cs של פרויקט .NET Core, השורות הללו של קוד מגדירות תצורת צינור Middleware באמצעות השיטה MapWhen. הפרדיקט המסופק בודק אם נתיב הבקשה הנכנסת מסתיים ב-DocImage.axd. בתוך בלוק זה, השיטה UseDoconut נקראת עם אובייקט DoconutOptions כארגומנט.
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());הוסף מרחבי שמות Doconut
בפרויקט שלך, הוסף את הצהרות using הבאות:
using Doconut;
using Doconut.Configs;
using Doconut.Clouds;צור מופע של אובייקט Viewer
שורה זו יוצרת מופע חדש של המחלקה Viewer, ומאפשרת לך ליצור אובייקט viewer בקוד שלך.
// License is configured via AddDoconut; obtain the viewer from DI.
var docViewer = app.Services.GetRequiredService<Viewer>();הגדר אובייקט DocOptions
דוגמה לאתחול של אובייקט DocOptions עם תצורות ספציפיות:
```csharp
// Document opening options – password and session timeout
var docOptions = new DocOptions
{
Password = string.Empty,
TimeOut = 30
};
// Per‑format rendering options – set image resolution via the format‑specific config
var pdfConfig = new PdfConfig
{
ImageResolution = 200
};
```הגדר אובייקט config
אתחל אובייקט PdfConfig חדש עם תצורות ספציפיות לטיפול במסמכי PDF:
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };פתח את המסמך שלך
שורה זו קוראת לשיטת OpenDocument של אובייקט ה-viewer, ומעבירה את הנתיב של קובץ המסמך הממוקם בשרת ואת האובייקטים PdfConfig ו-DocOptions שהוגדרו מראש כפרמטרים.
var token = await viewer.OpenDocumentAsync(path, new PdfConfig
{
AllowSearch = true,
AllowCopy = true,
ImageResolution = 150
});הוסף את ה-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 עם זיהוי רישיון אוטומטי, השתמש בשורה הבאה:
app.MapPost("/api/open", async (Viewer viewer) =>
{
// The token is opaque — hand it to the widget, never log or persist it.
string token = await viewer.OpenDocumentAsync("wwwroot/files/Sample.pdf");
return Results.Ok(new { token });
});הוסף רישיון ברירת מחדל ידני
אתה יכול לציין ידנית את הנתיב לקובץ רישיון ברירת מחדל יחיד בעת אתחול ה-viewer.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});הוסף רישיון באמצעות זרם
שיטה זו משתמשת ב-Viewer.DoconutLicense(Stream licenseStream) overload כדי להוסיף רישיון באמצעות זרם.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});הוסף רישיון באמצעות מסמך XML
שיטה זו משתמשת ב-Viewer.DoconutLicense(XMLDocument licence) overload כדי להוסיף רישיון באמצעות מסמך XML.
// License XML from a database, environment variable, or secret manager —
// no file on disk. Beaten only by LicenseStream.
builder.Services.AddDoconut(options =>
{
options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
});רישיונות תוסף מרובים ברירת מחדל ידניים
אם אתה צריך לציין רישיונות מרובים, אתה יכול לספק רשימת נתיבי קבצים לאתחול ה-viewer.
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
});
builder.Services.AddDistributedMemoryCache(); // session state needs a cache (MVC/Razor Pages already add one)
builder.Services.AddSession(); // Doconut document security rides on ASP.NET session state
app.UseSession(); // call UseSession() before UseDoconut()
app.UseDoconutResources(); // must be registered before UseDoconut()
app.UseDoconut();הוסף רישיון תוסף באמצעות זרם
שיטה זו משתמשת ב-Viewer.SetLicensePlugin(Stream pluginLicence) overload כדי להוסיף רישיון תוסף באמצעות זרם.
using var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open);
builder.Services.AddDoconut(options =>
{
// The stream takes precedence over LicenseContent, LicensePath, and auto‑search.
options.LicenseStream = pluginLicenseStream;
});הוסף רישיון תוסף באמצעות מסמך XML
שיטה זו משתמשת ב-Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) overload כדי להוסיף רישיון תוסף באמצעות מסמך XML.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});חבילות 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 = await viewer.OpenDocumentAsync(pathToFile, config, documentOptions);
// The annotation manager is automatically bound to the opened document's page dimensions.
using var annMgr = viewer.GetAnnotationManager(token);
var imgAnn = new ImageAnnotation(
1,
new Rectangle(600, 700, 750, 300),
"img/sample.png"
);
annMgr.Add(imgAnn);
viewer.LoadAnnotationData(token, annMgr);ב-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
המאפיין DocumentCulture במחלקה WordConfig מאפשר לך להגדיר במפורש את התרבות עבור קבצי DOC ו‑DOCX. זה מבטיח שהתוכן המתורגם – כגון תאריכים, מטבעות ומספרים – יוצג בדיוק כפי שהוא במיקרוסופט 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)