Konfiguracja w .NET 6 lub wyższym
Plik Startup.cs
W pliku Startup.cs projektu .NET Core te linie kodu definiują konfigurację potoku middleware przy użyciu metody MapWhen. Podany predykat sprawdza, czy ścieżka przychodzącego żądania kończy się na DocImage.axd. Wewnątrz tego bloku wywoływana jest metoda UseDoconut z obiektem DoconutOptions jako argumentem.
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());Dodaj przestrzenie nazw Doconut
W swoim projekcie dodaj następujące instrukcje using:
using Doconut;
using Doconut.Configs;
using Doconut.Clouds;Utwórz obiekt Viewer
Ta linia tworzy nową instancję klasy Viewer, umożliwiając stworzenie obiektu viewer w Twoim kodzie.
// License is configured via AddDoconut; obtain the viewer from DI.
var docViewer = app.Services.GetRequiredService<Viewer>();Skonfiguruj obiekt DocOptions
Przykładowa inicjalizacja obiektu DocOptions z określonymi konfiguracjami:
```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
};
```Skonfiguruj obiekt config
Zainicjalizuj nowy obiekt PdfConfig z określonymi konfiguracjami do obsługi dokumentów PDF:
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };Otwórz swój dokument
Ta linia wywołuje metodę OpenDocument obiektu viewer, przekazując ścieżkę do pliku dokumentu znajdującego się na serwerze oraz wcześniej skonfigurowane obiekty PdfConfig i DocOptions jako parametry.
var token = await viewer.OpenDocumentAsync(path, new PdfConfig
{
AllowSearch = true,
AllowCopy = true,
ImageResolution = 150
});Dodaj viewer w swoim HTML
<div id="div_ctlDoc"></div>Dodaj pliki CSS i JavaScript
Dodaj następujące pliki CSS i JavaScript na stronie. Skrypty te są zawarte w pliku ZIP z przykładami kodu.
<!-- 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>Dodaj licencje do swojego projektu
Automatyczne wykrywanie licencji
Aby zainicjować docViewer z automatycznym wykrywaniem licencji, użyj następującej linii:
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 });
});Dodaj domyślną licencję ręcznie
Możesz ręcznie określić ścieżkę do pojedynczego domyślnego pliku licencji podczas inicjalizacji viewer.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});Dodaj licencję za pomocą strumienia
Ta metoda używa przeciążenia Viewer.DoconutLicense(Stream licenseStream) do dodania licencji przy użyciu strumienia.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});Dodaj licencję za pomocą dokumentu XML
Ta metoda używa przeciążenia Viewer.DoconutLicense(XMLDocument licence) do dodania licencji przy użyciu dokumentu 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") ?? "";
});Ręczne domyślne licencje wielu wtyczek
Jeśli musisz określić wiele licencji, możesz podać listę ścieżek plików podczas inicjalizacji 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();Dodaj licencję wtyczki za pomocą strumienia
Ta metoda używa przeciążenia Viewer.SetLicensePlugin(Stream pluginLicence) do dodania licencji wtyczki przy użyciu strumienia.
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;
});Dodaj licencję wtyczki za pomocą dokumentu XML
Ta metoda używa przeciążenia Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) do dodania licencji wtyczki przy użyciu dokumentu XML.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});Wymagane pakiety NuGet
Aby zapewnić pełną kompatybilność projektu z .NET Core Standard, należy dołączyć następujące pakiety NuGet, wymienione w kolejności alfabetycznej.
- 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
Opcje konfiguracji renderowania
Możesz skonfigurować zachowanie renderowania przy użyciu następujących opcji:
- CadConfig: używany dla plików DWG, DXF i DGN.
- EmailConfig: używany dla plików EML, EMLX i MSG.
- EpubConfig: używany dla plików EPUB.
- ExcelConfig: używany dla plików Excel i CSV.
- MhtConfig: używany dla plików MHT.
- PptConfig: używany dla plików PowerPoint.
- ProjectConfig: używany dla plików MPP.
- PsdConfig: używany dla plików PSD.
- TxtConfig: używany dla plików TXT.
- TiffConfig: używany dla plików TIFF.
Konfiguracja opcji renderowania
Opcje renderowania są konfigurowane przy użyciu właściwości DefaultRender:
- DefaultRender = true : Ta opcja zapewnia renderowanie wyższej jakości, ale zużywa więcej pamięci serwera i czasu przetwarzania.
- DefaultRender = false : Ta opcja zapewnia szybsze renderowanie kosztem nieco niższej jakości.
Jak dodać adnotację obrazu
W C#
1. Otwórz dokument i pobierz wymiary pierwszej strony. 2. Zainicjalizuj AnnotationManager z wymiarami strony. 3. Utwórz ImageAnnotation, ustawiając ścieżkę obrazu w imgUrl, oraz określ pozycję i rozmiar w Rectangle. 4. Dodaj adnotację do menedżera i załaduj ją w przeglądarce dokumentu, aby wyświetlić.
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);W JavaScript
1. Upewnij się, że YourController jest dostępny. 2. Utwórz nowy ImageAnnotation, ustawiając ścieżkę obrazu za pomocą SetNote. 3. Dodaj i narysuj adnotację, aby wyrenderować ją w dokumencie.
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();
}
}Niestandardowe czcionki w dokumentach Word
Właściwość FontFolders w klasie WordConfig określa niestandardowe katalogi, w których aplikacja będzie szukać czcionek. Jest to szczególnie przydatne przy przetwarzaniu dokumentów Word, które korzystają z czcionek niezainstalowanych w domyślnych katalogach czcionek systemu.
var config = new WordConfig
{
FontFolders = new string[] { "C:\\CustomFonts", "D:\\SharedFonts" }
};Ważna aktualizacja dla Doconut 25.2.0
Konieczne jest zaktualizowanie pakietu System.Text.Json do wersji 8.0.5 we wszystkich projektach. Ta aktualizacja jest kluczowa, aby zapewnić kompatybilność z najnowszymi funkcjami oraz rozwiązać ważne poprawki bezpieczeństwa.
Kodowanie e-mail
Właściwość EmailEncoding w klasie EmailConfig określa preferowane kodowanie zarówno tematu, jak i treści e-maila.
var emailConfig = new EmailConfig {
EmailEncoding = Encoding.UTF8 // Set preferred email encoding
};Kodowanie tematu i treści
Właściwości SubjectEncoding i BodyEncoding w klasie EmailConfig definiują kodowanie używane odpowiednio dla tematu i treści e-maila.
var emailConfig = new EmailConfig {
SubjectEncoding = Encoding.UTF8, // Set encoding for the subject
BodyEncoding = Encoding.UTF8 // Set encoding for the body
};Obsługa kultury w przeglądarce Word
Właściwość DocumentCulture w klasie WordConfig pozwala wyraźnie określić kulturę dla plików DOC i DOCX. Zapewnia to, że spersonalizowane treści — takie jak daty, waluty i liczby — są renderowane dokładnie tak, jak w programie Microsoft Word. Jest to szczególnie przydatne dla języków z określonymi wymaganiami formatowania.
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)