Trình xem

Lớp trình xem tài liệu chính

Viewer (namespace Doconut) là điểm vào công cộng để mở tài liệu từ các trang Razor, bộ điều khiển MVC, thành phần Blazor, hoặc API tối thiểu. Nó được sealed, đăng ký như một dịch vụ transient bởi AddDoconut(), và được giải quyết qua tiêm vào constructor — không bao giờ tạo trực tiếp.

Viewer không giữ trạng thái per-request và cố ý không thực hiện IDisposable: các phiên tài liệu tồn tại độc lập trong bộ nhớ cache phiên, vì vậy việc giải phóng dịch vụ không bao giờ có thể hủy một tài liệu đang mở (xem Khái niệm Cốt lõi → Cách hoạt động của Viewer).

OpenDocumentAsync

Mở một tài liệu và trả về token phiên mà widget khách hàng sử dụng cho tất cả các yêu cầu tiếp theo.

Quá tảiKhi nào sử dụng
Task<string> OpenDocumentAsync(string filePath, DocOptions? options = null, CancellationToken ct = default)Mở từ đĩa với việc tự động phát hiện định dạng và cấu hình mặc định của định dạng
Task<string> OpenDocumentAsync(string filePath, BaseConfig? config, DocOptions? options = null, CancellationToken ct = default)Bạn cần các tùy chọn render cho mỗi định dạng (PdfConfig, WordConfig, …)
Task<string> OpenDocumentAsync(Stream stream, FileInfo fileInfo, BaseConfig? config = null, DocOptions? options = null, CancellationToken ct = default)Tài liệu không phải là một tệp trên đĩa (tải lên, cơ sở dữ liệu, blob). fileInfo phải mang phần mở rộng đúng — nó quyết định việc phát hiện định dạng
csharp
// Mở đơn giản
string token = await viewer.OpenDocumentAsync(path);

// Với cấu hình và tùy chọn cho mỗi định dạng
token = await viewer.OpenDocumentAsync(
    path,
    new PdfConfig { AllowSearch = true, AllowCopy = true },
    new DocOptions { TimeOut = 30 });

// Từ một lần tải lên
await using var ms = new MemoryStream();
await file.CopyToAsync(ms);
ms.Position = 0;
token = await viewer.OpenDocumentAsync(ms, new FileInfo(file.FileName));

Các ngoại lệ cần xử lý:

  • LicenseException — một giấy phép được tìm thấy bị từ chối (tin nhắn chứa lý do từ chối), hoặc định dạng cần một khả năng plugin không còn được cấp. Hết hạn lịch mà không có tin nhắn từ chối sẽ chuyển sang render có watermark thay vì ném ngoại lệ.
  • FormatNotSupportedException — Document format '<extension>' is not supported.
  • InvalidDataException — nội dung tệp bị hỏng hoặc không khớp với phần mở rộng của nó.

CloseDocument

text
void CloseDocument(string token)

Xóa phiên khỏi bộ nhớ cache (giải phóng engine tài liệu ngay lập tức), xóa dấu bảo mật, và thu hồi quyền truy cập. Tùy chọn — thời gian hết hạn trượt thực hiện cùng một quá trình dọn dẹp — nhưng được khuyến nghị cho tài liệu lớn.

GetPageCount

text
int GetPageCount(string token)

Tổng số trang của phiên đang mở. Ném ngoại lệ nếu token không xác định hoặc đã hết hạn.

DocOptions

Các tùy chọn không phụ thuộc vào định dạng, áp dụng cho mỗi lần mở (namespace Doconut):

KiểuThuộc tínhMặc địnhMô tả
stringPassword""Mật khẩu cho tài liệu được bảo vệ (tự động sao chép vào cấu hình định dạng).
intImageResolution0Lỗi thời. Được giữ chỉ để tương thích — thay vào đó đặt ImageResolution trên cấu hình định dạng.
stringWatermark""Văn bản watermark tùy chỉnh được vẽ trên các trang đã render. Chuỗi định dạng: "^Text~Color~FontSize~FontName~Opacity~Angle", ví dụ "^Sample Copy~Red~24~Verdana~80~-45".
intTimeOut60Thời gian hết hạn trượt của phiên tính bằng phút.
boolIsSecuredtrueHiện không được thực thi — dự trữ. Ràng buộc token được kiểm soát toàn cầu bởi DoconutOptions.UnsafeMode (xem Khái niệm Cốt lõi → Phiên & Bảo mật).

Lớp cũng cung cấp các thuộc tính chuyên biệt được cố ý nằm ngoài luồng xem đơn máy chủ bình thường:

KiểuThuộc tínhMặc địnhMô tả
boolIsWebFarmfalseĐánh dấu thao tác mở như một kịch bản web-farm. Chỉ sử dụng với kiến trúc lưu trữ/phiên chia sẻ tương ứng.
stringWebFarmPath""Đường dẫn chia sẻ được sử dụng bởi quy trình web-farm chuyên biệt. Trống trong trình xem đơn máy chủ bình thường.
boolEditModefalseDành riêng cho quy trình Editor được phân phối riêng; để lại false cho trình xem tiêu chuẩn.

Đánh dấu tùy chỉnh

DocOptions.Watermark sử dụng sáu trường ngăn cách bằng dấu ~. Một ^ tùy chọn ở đầu yêu cầu bố cục toàn góc:

text
^Text~Color~FontSize~FontName~Opacity~Angle
csharp
string token = await viewer.OpenDocumentAsync(
    path,
    new PdfConfig(),
    new DocOptions
    {
        Watermark = "^Confidential~Red~24~Verdana~80~-45",
        TimeOut = 30
    });
TrườngVí dụÝ nghĩa
Tiền tố ^^Bố cục toàn góc tùy chọn. Nếu không có, sẽ sử dụng vị trí dấu nước tiêu chuẩn.
Văn bảnConfidentialVăn bản được hiển thị trên mỗi trang. Nó không được để trống.
MàuRedMàu được đặt tên mà lớp vẽ hiểu.
FontSize24Kích thước phông chữ; đầu vào số không hợp lệ sẽ quay lại mặc định của bộ vẽ.
FontNameVerdanaHọ phông chữ được yêu cầu. Đảm bảo nó đã được cài đặt trong môi trường triển khai.
Độ trong suốt80Giá trị byte từ 0 đến 255. Nó phải được phân tích thành công.
Góc-45Góc quay tính bằng độ; đầu vào số không hợp lệ sẽ quay lại mặc định.

Bộ phân tích cú pháp yêu cầu chính xác sáu trường sau ^ tùy chọn. Định nghĩa không hợp lệ sẽ được thay thế bằng giá trị dự phòng Invalid Watermark có thể nhìn thấy của SDK thay vì biến mất im lặng.

Quyết định giấy phép

Trạng thái giấy phépGiá trị tùy chỉnh được cung cấpKết quả hiển thị
Giấy phép xem trả phí hợp lệKhôngTrang sạch
Giấy phép xem trả phí hợp lệCóĐánh dấu tùy chỉnh
Trình xem cơ bản tạm thời/đánh giá đang hoạt độngKhôngTrang trình xem cơ bản sạch
Trình xem cơ bản tạm thời/đánh giá đang hoạt độngCóĐánh dấu tùy chỉnh khi đường dẫn trình xem cơ bản sạch được áp dụng
Giấy phép thiếu, bị từ chối, hết hạn, phiên bản sai, hoặc miền không hợp lệBất kỳDấu nước thực thi/đánh giá; giá trị tùy chỉnh không ghi đè lên nó
Kết xuất plugin theo quy tắc đánh giáBất kỳDấu nước đánh giá

Quyết định tương tự được áp dụng cho các hình ảnh trang được phục vụ và xuất chú thích. Đầu ra GIF hoạt hình được dán dấu từng khung. Do đó, đánh dấu tùy chỉnh là một tính năng ứng dụng có giấy phép, không phải cách để thay thế hoặc ẩn dấu nước đánh giá.

API Chú thích

Tải và xuất chú thích phía máy chủ. Hướng dẫn đầy đủ nằm trong Hướng dẫn → Chú thích; giao diện là:

Thành viênMục đích
AnnotationManager GetAnnotationManager(string token)Trình quản lý liên kết với kích thước trang của phiên mở
AnnotationManager GetAnnotationManager(string token, int pageWidth, int pageHeight)Trình quản lý với kích thước trang rõ ràng
AnnotationManager GetAnnotationManager(int pageWidth, int pageHeight)Trình quản lý không phụ thuộc vào phiên
void LoadAnnotationData(string token, AnnotationManager manager)Tải chú thích được xây dựng bằng C# vào phiên
void LoadAnnotationData(string token, string annotationData)Tải chú thích từ trang được mã hoá/bao bì Base64 trả về bởi AnnotationManager.GetAnnotationData()
void LoadAnnotationXML(string token, XmlDocument annotationXml)Tải chú thích từ XML
XmlDocument GetAnnotationXML(string token)Xuất chú thích của phiên dưới dạng XML
Task<byte[]> ExportAnnotationsToPdfAsync(string token, int zoom = 100, CancellationToken ct = default)PDF có chú thích được nhúng
Task<int> ExportAnnotationsToPngAsync(…)Tệp PNG có chú thích được nhúng
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default)ZIP các PNG theo trang có chú thích được nhúng

siêu dữ liệu DICOM

text
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)

Phương thức này tồn tại để đồng bộ API, nhưng trình xem DICOM .NET 6 không thể cung cấp các thẻ kỹ thuật. Nó trả về null cho các phiên DICOM và không DICOM; trên một phiên DICOM nó cũng ghi một cảnh báo một lần giải thích giới hạn nền tảng. Việc kết xuất trang, khung và hoạt hình vẫn được hỗ trợ.

Trợ giúp tài nguyên — ReferenceCss / ReferenceScripts

Phát ra các thẻ <link>/<script> cho các tài nguyên nhúng được phục vụ bởi UseDoconutResources(), theo đúng thứ tự phụ thuộc. Các gói cho các tính năng có giấy phép như tìm kiếm và chú thích chỉ được phát ra khi giấy phép cho phép, giữ giao diện người dùng phía khách nhất quán với hành vi của máy chủ.

text
string ReferenceCss(CssConfig? config = null)      // null → Bootstrap + trình xem + tìm kiếm + chú thích
string ReferenceScripts(ScriptConfig? config = null)

CssConfig flags: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (được kiểm soát bởi tìm kiếm), IncludeAnnotationCss (được kiểm soát bởi chú thích).

ScriptConfig flags: IncludeJQuery (được yêu cầu bởi tất cả các flag khác), IncludeBootstrap, IncludeViewerScripts (cốt lõi: docViewer.js + bộ chia + liên kết), IncludeSearchScripts và IncludeSearchBar (được kiểm soát bởi tìm kiếm), IncludeAnnotationScripts và IncludeAnnotationBar (được kiểm soát bởi chú thích).

html
@inject Doconut.Viewer Viewer

@Html.Raw(Viewer.ReferenceCss(new CssConfig { IncludeBootstrapCss = true, IncludeViewerCss = true }))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig { IncludeJQuery = true, IncludeViewerScripts = true }))

GetWorksheetNames

text
IReadOnlyList<string> GetWorksheetNames(string token)

Trả về tên các worksheet của một bảng tính đang mở, theo thứ tự workbook, hoặc một danh sách rỗng khi tài liệu mở không phải là bảng tính.

Được thêm trong 26.9.0.

Trang này có hữu ích không?