Instalacja w .NET Standard / Core

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.

Startup.cs
app.MapWhen(
    context => context.Request.Path.ToString().EndsWith("DocImage.axd"),
    appBranch =>
    {
        appBranch.UseDoconut(new DoconutOptions { UnsafeMode = false, ShowDoconutInfo = false });
    }
);

Dodaj przestrzenie nazw Doconut

W swoim projekcie dodaj następujące dyrektywy using:

Usings
using Doconut;
using Doconut.Configs;
using Doconut.Clouds;

// TODO: implement licence loading, viewer registration, document opening, conversion using current API

Utwórz obiekt Viewer

Ta linia tworzy nową instancję klasy Viewer, umożliwiając stworzenie obiektu przeglądarki w kodzie.

Instantiation
// Viewer is injected; no explicit construction required in Doconut.NETStandard 26.9.0

Ustaw obiekt DocOptions

Przykładowa inicjalizacja obiektu DocOptions z określonymi konfiguracjami:

DocOptions
var documentOptions = new DocOptions
{
    Password = "",
    // ImageResolution is obsolete; omitted.
    TimeOut = 30
};

Ustaw obiekt konfiguracyjny

Zainicjalizuj nowy obiekt PdfConfig z określonymi ustawieniami do obsługi dokumentów PDF:

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

Otwórz 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.

OpenDocument
dynamic viewer = null;
var token = viewer.LoadDocument(path, null, null);

Dodaj przeglądarkę w swoim HTML

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.

HTML Headers
<link rel="stylesheet" href="css/viewer.css" />

<!-- Main Viewer Related Scripts -->
<script src="scripts/jquery.min.js"></script>
<script src="scripts/docViewer.js"></script>
<script src="scripts/splitter.js"></script>
<script src="scripts/search.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:

C#
```csharp
// Create a Viewer instance using the current API (no constructor arguments required).
var docViewer = new Viewer();
```

Dodaj domyślną licencję ręcznie

Możesz ręcznie określić ścieżkę do pojedynczego domyślnego pliku licencji podczas inicjalizacji przeglądarki.

C#
using System.IO;
using Microsoft.Extensions.DependencyInjection;
using Doconut;

var licenseFilePath = Path.Combine(builder.Environment.WebRootPath, "path/to/your/license");
var docViewer = app.Services.GetRequiredService<Viewer>();

Dodaj licencję za pomocą strumienia

Ta metoda używa przeciążenia Viewer.DoconutLicense(Stream licenseStream) do dodania licencji przy użyciu strumienia.

C#
using System.IO;
using Doconut.Infrastructure.Licensing;

using (var licenseStream = new FileStream("path/to/your/license", FileMode.Open, FileAccess.Read))
{
    var license = new DoconutLicense { DocBytes = new BinaryReader(licenseStream).ReadBytes((int)licenseStream.Length) };
}

Dodaj licencję za pomocą dokumentu XML

Ta metoda używa przeciążenia Viewer.DoconutLicense(XMLDocument licence) do dodania licencji przy użyciu dokumentu XML.

C#
using System.Xml;
using Doconut.Infrastructure.Licensing;

var xmlDoc = new XmlDocument(); // load the license XML
xmlDoc.Load("path/to/your/license.xml");
var license = new DoconutLicense(); // instantiate license object (populate properties as needed)

Ręczne domyślne licencje wielu wtyczek

Jeśli musisz określić wiele licencji, możesz podać listę ścieżek do plików przy inicjalizacji przeglądarki.

C#
```csharp
// Prepare the paths to the viewer licence files (kept for reference; the current API loads them automatically)
var licenseFilePaths = new List<string>
{
    Path.Combine(_hostingEnvironment.WebRootPath, "Doconut.Viewer.lic"),
    Path.Combine(_hostingEnvironment.WebRootPath, "Doconut.Viewer.Annotation.lic"),
    Path.Combine(_hostingEnvironment.WebRootPath, "Doconut.Viewer.Search.lic")
};

// The Viewer class no longer requires the licences in its constructor.
// Create an instance with the default constructor.
var docViewer = new Viewer();

// Open a document (e.g., a PDF) and obtain a token that represents the opened file.
string token = await docViewer.OpenDocumentAsync(
    filePath: Path.Combine(_hostingEnvironment.WebRootPath, "sample.pdf"),
    options: new DocOptions(),
    ct: CancellationToken.None);
```

Dodaj licencję wtyczki za pomocą strumienia

Ta metoda używa przeciążenia Viewer.SetLicensePlugin(Stream pluginLicence) do dodania licencji wtyczki przy użyciu strumienia.

C#
using (var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open))
{
    // In Doconut.NETStandard 26.9.0 the license is supplied via the configuration
    // passed to OpenDocumentAsync (BaseConfig), so the explicit SetLicensePlugin call
    // is no longer required. Keep the license file accessible to the viewer or
    // include it in your BaseConfig as shown in other samples.
}

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.

C#
// The license XML is discovered automatically by the viewer in Doconut.NETStandard 26.9.0.
// No explicit API call is required to register it.

string token = await Viewer.OpenDocumentAsync(
    "path/to/your/document.pdf",
    null, // DocOptions – use default settings
    CancellationToken.None);

Wymagane pakiety NuGet

Aby zapewnić pełną kompatybilność projektu z .NET Core Standard, należy uwzględnić 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ć.

C#
using Doconut.Annotations;
using System.Drawing;

// Placeholder: open the document and obtain page dimensions using the current Doconut.NETStandard API.
// Placeholder: create an annotation manager for the page size.

string imgUrl = "img/sample.png";
var imgAnn = new ImageAnnotation(
    1,
    new Rectangle(600, 700, 750, 300),
    imgUrl
);

// Placeholder: add the annotation to the manager and load the annotation XML back into the viewer using the current API.

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 wyświetlić ją w dokumencie.

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();
    }
}

Niestandardowe czcionki w dokumentach Word

Właściwość FontFolders w klasie WordConfig określa niestandardowe katalogi, w których aplikacja będzie wyszukiwać czcionki. Jest to szczególnie przydatne przy przetwarzaniu dokumentów Word, które korzystają z czcionek niezainstalowanych w domyślnych katalogach systemowych.

Usage
var config = new WordConfig
{
    FontFolders = new string[] { "C:\\CustomFonts", "D:\\SharedFonts" }
};

Ważna aktualizacja dla Doconut 25.2.0

Należy zaktualizować pakiet System.Text.Json do wersji 8.0.5 we wszystkich projektach. Ta aktualizacja jest kluczowa, aby zapewnić kompatybilność z najnowszymi funkcjami oraz wprowadzić istotne ulepszenia 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.

Usage
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.

Usage
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 umożliwia jawne określenie kultury dla plików DOC i DOCX. Zapewnia to, że treści lokalizowane — takie jak daty, waluty i liczby — są renderowane dokładnie tak, jak w Microsoft Word. Jest to szczególnie przydatne dla języków z określonymi wymaganiami formatowania.

Usage
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)