ตั้งค่าใน .NET 6 หรือสูงกว่า

ไฟล์ Startup.cs

ภายในไฟล์ Startup.cs ของโครงการ .NET Core นี้ บรรทัดโค้ดเหล่านี้กำหนดการกำหนดค่าท่อกลางของ middleware โดยใช้เมธอด MapWhen. เงื่อนไขที่ให้มาตรวจสอบว่าพาธของคำขอที่เข้ามาจบด้วย DocImage.axd หรือไม่ ภายในบล็อกนี้ เมธอด UseDoconut จะถูกเรียกใช้พร้อมกับอ็อบเจ็กต์ DoconutOptions เป็นอาร์กิวเมนต์.

Startup.cs
app.MapWhen(
    ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
    branch => branch.UseDoconut());

เพิ่มเนมสเปซ Doconut

ในโครงการของคุณ ให้เพิ่มคำสั่ง using ดังต่อไปนี้:

เพิ่มเนมสเปซ Doconut
using Doconut;
using Doconut.Configs;
using Doconut.Clouds;

สร้างอ็อบเจ็กต์ Viewer

บรรทัดนี้จะสร้างอินสแตนซ์ใหม่ของคลาส Viewer ทำให้คุณสามารถสร้างอ็อบเจ็กต์ viewer ภายในโค้ดของคุณได้.

สร้างอ็อบเจ็กต์ Viewer
// License is configured via AddDoconut; obtain the viewer from DI.
var docViewer = app.Services.GetRequiredService<Viewer>();

ตั้งค่าอ็อบเจ็กต์ DocOptions

ตัวอย่างการเริ่มต้นอ็อบเจ็กต์ 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:

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

เปิดเอกสารของคุณ

บรรทัดนี้เรียกเมธอด OpenDocument ของอ็อบเจ็กต์ viewer โดยส่งพาธของไฟล์เอกสารที่อยู่บนเซิร์ฟเวอร์และอ็อบเจ็กต์ PdfConfig และ DocOptions ที่กำหนดค่าล่วงหน้าเป็นพารามิเตอร์.

OpenDocument
var token = await viewer.OpenDocumentAsync(path, new PdfConfig
{
    AllowSearch = true,
    AllowCopy   = true,
    ImageResolution = 150
});

เพิ่ม viewer ลงใน HTML ของคุณ

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

เพิ่มไฟล์ CSS และ JavaScript

เพิ่มไฟล์ CSS และ JavaScript ต่อไปนี้ในหน้าไฟล์ สคริปต์เหล่านี้รวมอยู่ในไฟล์ ZIP พร้อมตัวอย่างโค้ด.

เพิ่มไฟล์ CSS และ JavaScript
<!-- 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#
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 ได้.

C#
builder.Services.AddDoconut(options =>
{
    options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});

เพิ่มไลเซนส์โดยใช้ Stream

เมธอดนี้ใช้ Viewer.DoconutLicense(Stream licenseStream) overload เพื่อเพิ่มไลเซนส์โดยใช้สตรีม.

C#
builder.Services.AddDoconut(options =>
{
    options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});

เพิ่มไลเซนส์โดยใช้ XML Document

เมธอดนี้ใช้ Viewer.DoconutLicense(XMLDocument licence) overload เพื่อเพิ่มไลเซนส์โดยใช้เอกสาร XML.

C#
// 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 ได้.

C#
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();

เพิ่มไลเซนส์ปลั๊กอินโดยใช้ Stream

เมธอดนี้ใช้ Viewer.SetLicensePlugin(Stream pluginLicence) overload เพื่อเพิ่มไลเซนส์ปลั๊กอินโดยใช้สตรีม.

C#
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 Document

เมธอดนี้ใช้ Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) overload เพื่อเพิ่มไลเซนส์ปลั๊กอินโดยใช้เอกสาร XML.

C#
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 : ตัวเลือกนี้ให้การเรนเดอร์ที่เร็วขึ้นโดยเสียคุณภาพเล็กน้อย.

วิธีเพิ่ม Image Annotation

ใน C#

1. เปิดเอกสารและรับขนาดของหน้าที่หนึ่ง. 2. เริ่มต้น AnnotationManager ด้วยขนาดของหน้า. 3. สร้าง ImageAnnotation โดยกำหนดพาธของรูปภาพใน imgUrl และระบุตำแหน่งและขนาดภายใน Rectangle. 4. เพิ่ม annotation ไปยัง manager และโหลดใน document viewer เพื่อแสดงผล.

C#
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. เพิ่มและวาด annotation เพื่อเรนเดอร์บนเอกสาร.

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 ที่พึ่งพาแบบอักษรที่ไม่ได้ติดตั้งในไดเรกทอรีแบบอักษรเริ่มต้นของระบบ.

ฟอนต์แบบกำหนดเองในเอกสาร 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 Viewer

คุณสมบัติ DocumentCulture ในคลาส WordConfig ช่วยให้คุณกำหนดวัฒนธรรมสำหรับไฟล์ DOC และ DOCX อย่างชัดเจน ซึ่งทำให้เนื้อหาที่แปลเป็นท้องถิ่น เช่น วันที่ สกุลเงิน และตัวเลข แสดงผลได้ตรงกับที่แสดงใน Microsoft Word สิ่งนี้เป็นประโยชน์อย่างยิ่งสำหรับภาษาที่มีข้อกำหนดการจัดรูปแบบเฉพาะ

การสนับสนุนวัฒนธรรมของ Word Viewer
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)