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 thông qua tiêm constructor — không bao giờ tạo nó trực tiếp.
Thư viện .NET Standard trước đây đã công khai một constructor công cộng nhận bộ nhớ cache, bộ truy cập ngữ cảnh HTTP, và một hoặc nhiều đường dẫn giấy phép. Constructor đó đã bị loại bỏ; đồ thị dịch vụ cung cấp các phụ thuộc đó.
Viewer không giữ trạng thái per-request và cố ý không triển khai 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ể đóng 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).
Mở tài liệu bất đồng bộ (OpenDocumentAsync)
Mở một tài liệu và trả về token phiên mà widget client sử dụng cho tất cả các yêu cầu tiếp theo. Mỗi lần mở đều bất đồng bộ — không có OpenDocument đồng bộ.
| Overload | Khi nào sử dụng |
|---|---|
Task<string> OpenDocumentAsync(string filePath, DocOptions? options = null, CancellationToken ct = default) | Mở từ đĩa với phát hiện định dạng tự độ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 theo đị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à tệp trên đĩa (tải lên, cơ sở dữ liệu, blob). fileInfo phải chứa phần mở rộng đúng — nó quyết định việc phát hiện định dạng |
// Simple open
string token = await viewer.OpenDocumentAsync(path);
// With per-format config and options
token = await viewer.OpenDocumentAsync(
path,
new PdfConfig { AllowSearch = true, AllowCopy = true },
new DocOptions { TimeOut = 30 });
// From an upload
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.— Định dạng tài liệu '' không được hỗ trợ. 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ó.
Đóng tài liệu (CloseDocument)
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 việc dọn dẹp — nhưng được khuyến nghị cho tài liệu lớn.
Lấy số trang (GetPageCount)
int GetPageCount(string token)Tổng số trang của phiên đang mở. Ném ngoại lệ nếu token không tồn tại hoặc đã hết hạn.
Cờ khả năng
| Thành viên | Ý nghĩa |
|---|---|
bool IsSearchEnabled | Giấy phép hiện tại cấp quyền Search |
bool IsAnnotationEnabled | Giấy phép hiện tại cấp quyền Annotation |
Sử dụng chúng trong Razor view để hiển thị Ribbon có giấy phép chỉ khi máy chủ thực sự phục vụ nó — xem Bắt đầu nhanh.
Tùy chọn tài liệu (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ểu | Thuộc tính | Mặc định | Mô tả |
|---|---|---|---|
string | Password | "" | Mật khẩu cho tài liệu được bảo vệ (được sao chép vào cấu hình định dạng tự động). |
int | ImageResolution | 0 | Lỗi thời. Chỉ giữ lại để tương thích — thay vào đó đặt ImageResolution trên cấu hình định dạng. |
string | Watermark | "" | 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". |
int | TimeOut | 60 | Thời gian hết hạn trượt của phiên tính bằng phút. |
bool | IsSecured | true | Hiện không được thực thi — dành riêng. Ràng buộc token được kiểm soát toàn cục bởi DoconutOptions.UnsafeMode (xem Khái niệm cốt lõi → Phiên & Bảo mật). |
Lớp này cũng cung cấp các thuộc tính chuyên biệt nằm ngoài luồng xem bình thường trên một máy chủ duy nhất:
| Kiểu | Thuộc tính | Mặc định | Mô tả |
|---|---|---|---|
bool | IsWebFarm | false | Đánh dấu thao tác mở như một kịch bản lưu trữ chia sẻ. Lưu ý cách viết — thư viện trước đây viết là IsWebfarm. |
string | WebFarmPath | "" | Đường dẫn chia sẻ được sử dụng trong quy trình đó. Trước đây viết là WebfarmPath. Trống trong trình xem bình thường trên một máy chủ, và không cần trên đường xuất bản được mô tả trong Triển khai phân tán. |
bool | EditMode | false | Dành riêng cho quy trình chỉnh sửa được phân phối riêng; để 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 được ngăn cách bằng dấu ~. Một dấu ^ đầu tùy chọn yêu cầu bố cục ở mọi góc:
^Text~Color~FontSize~FontName~Opacity~Anglestring token = await viewer.OpenDocumentAsync(
path,
new PdfConfig(),
new DocOptions
{
Watermark = "^Confidential~Red~24~Verdana~80~-45",
TimeOut = 30
});| Trường | Ví dụ | Ý nghĩa |
|---|---|---|
Dấu đầu ^ | ^ | Bố cục tùy chọn ở mọi góc. Nếu không có, sẽ dùng vị trí dấu nước tiêu chuẩn. |
| Văn bản | Confidential | Văn bản được hiển thị trên mỗi trang. Không được để trống. |
| Màu | Red | Màu được đặt tên mà lớp vẽ hiểu được. |
| Kích thước phông | 24 | Kích thước phông; nếu nhập số không hợp lệ sẽ quay lại giá trị mặc định của bộ vẽ. |
| Tên phông | Verdana | 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ốt | 80 | Giá trị byte từ 0 đến 255. Phải phân tích thành công. |
| Góc | -45 | Góc quay tính bằng độ; nếu nhập số không hợp lệ sẽ quay lại giá trị mặc định. |
Bộ phân tích cú pháp yêu cầu đúng sáu trường sau dấu ^ tùy chọn. Định nghĩa không hợp lệ sẽ bị thay thế bằng giá trị dự phòng Invalid Watermark của SDK thay vì biến mất một cách âm thầm.
Quyết định giấy phép
| Trạng thái giấy phép | Giá trị tùy chỉnh được cung cấp | Kết quả hiển thị |
|---|---|---|
| Giấy phép xem trả phí hợp lệ | Không | Trang sạch |
| Giấy phép xem trả phí hợp lệ | Có | Dấu nước tùy chỉnh |
| Trình xem cơ bản tạm thời/Demo đang hoạt động | Không | Trang trình xem cơ bản sạch |
| Trình xem cơ bản tạm thời/Demo đang hoạt động | Có | Dấu nước tùy chỉnh khi đường dẫn trình xem cơ bản sạch được áp dụng |
| Giấy phép bị 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 đó, dấu nước tùy chỉnh là một tính nă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 Guides → Annotations; phần tổng quan như sau:
| Thành viên | Mụ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 đang mở |
AnnotationManager GetAnnotationManager(string token, int pageWidth, int pageHeight) | Trình quản lý với kích thước trang được chỉ định 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 các chú thích được xây dựng bằng C# vào phiên |
void LoadAnnotationData(string token, string annotationData) | Tải các chú thích từ envelope trang/Base64 đã mã hoá được trả về bởi AnnotationManager.GetAnnotationData() |
void LoadAnnotationXML(string token, XmlDocument annotationXml) | Tải các chú thích từ XML |
XmlDocument GetAnnotationXML(string token) | Xuất các 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ó các chú thích được nhúng |
Task<int> ExportAnnotationsToPngAsync(…) | Các tệp PNG có các chú thích được nhúng |
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default) | ZIP chứa các PNG theo trang có các chú thích được nhúng |
Mỗi phương thức trong số này đều nhận token phiên. Hình thức GetAnnotationManager(pageWidth, pageHeight) không cần phiên của thư viện trước vẫn tồn tại để xây dựng chú thích ngoài một phiên, nhưng việc tải chúng vẫn yêu cầu token.
siêu dữ liệu DICOM
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)Phương thức này tồn tại để đồng bộ API, nhưng gói này không thể cung cấp các thẻ DICOM kỹ thuật: bộ đọc siêu dữ liệu chỉ có bản dựng .NET 8. Nó trả về null cho các phiên DICOM và không DICOM; trong 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 render 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 thứ tự phụ thuộc đúng. 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úp giao diện người dùng phía client nhất quán với hành vi phía server.
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + viewer + search + annotation
string ReferenceScripts(ScriptConfig? config = null)Các cờ CssConfig: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (search-gated), IncludeAnnotationCss (annotation-gated).
Các cờ ScriptConfig: IncludeJQuery (cần thiết cho tất cả các cờ khác), IncludeBootstrap, IncludeViewerScripts (cốt lõi: docViewer.js + splitter + links), IncludeSearchScripts và IncludeSearchBar (search-gated), IncludeAnnotationScripts và IncludeAnnotationBar (annotation-gated).
@inject Doconut.Viewer Viewer
@Html.Raw(Viewer.ReferenceCss(new CssConfig { IncludeBootstrapCss = true, IncludeViewerCss = true }))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig { IncludeJQuery = true, IncludeViewerScripts = true }))Các trợ giúp này là cách được hỗ trợ để cung cấp các tài nguyên cho trình duyệt. Các ứng dụng đã sao chép docViewer.js, documentLinks.js và docViewer.UI.js vào wwwroot nên xóa các bản sao đó sau khi trang được render từ các thẻ đã phát ra.
Trang này có hữu ích không?