Migrace

Aktualizace na Doconut v .NET 8

Na této stránce najdete dva typy migrací: aktualizaci verze balíčku v .NET 8 a přesun integrace ze staršího frameworku Doconut (.NET 6, .NET Standard 2.0, .NET Framework 4.7) na API .NET 8.

Aktualizace verze balíčku

  1. Aktualizujte balíček (a všechny plugin balíčky — udržujte verze v souladu):
bash
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom
  1. Zkontrolujte okno licence. Licence pokrývá rozsah verzí. Pokud nová verze spadá mimo tento rozsah, otevření je zablokováno — OpenDocumentAsync vyhodí LicenseException (fail‑fast); nepřepne se na vodoznak a IsVersionValid vrátí false. Obnovte licenci, nahraďte soubor .lic a restartujte aplikaci, aby AddDoconut() načetla novou licenci.
  2. Překompilujte a nechte NuGet obnovit deklarované verze závislostí — nepřipínajte znovu System.Text.Json ani System.Drawing.Common (viz Troubleshooting pro konkrétní chyby, které způsobí downgrade).
  3. Proveďte rychlý test jednoho dokumentu z každé rodiny formátů, které používáte.

Migrace z .NET 6 / .NET Standard 2.0

.NET 8 API je přepracováno kolem DI a asynchronního programování. Přehled mapování:

Oblast.NET 6 / Standard 2.0.NET 8
NastaveníConstruct Viewer(cache, httpContextAccessor, licensePath)builder.Services.AddDoconut(options => …) + inject Viewer
LicenceStatic Viewer.DoconutLicense(path) + SetLicensePlugin(...) per pluginoptions.LicensePath / LicenseContent / LicenseStream — jedna licence, automatické vyhledání souborů pluginů
Otevřeníviewer.OpenDocument(...) (synchronní)await viewer.OpenDocumentAsync(...)
Zavřeníviewer.CloseDocument() nebo viewer.Dispose()viewer.CloseDocument(token) — Viewer není IDisposable
Životní cyklusViewer implementuje IDisposable, drží otevřený dokumentViewer je bezstavový; relace žijí v cache pod tokeny
Konvertorviewer.Converter propertyPlugin Konvertoru (AddPlugin<ConverterPlugin>()) + služba DocumentConverter
Konfigurační třídyDoconut.Configs.View.* namespacesVše v namespace Doconut
MiddlewareManuální zapojení handleruapp.UseDoconutResources() + app.UseDoconut()

Typický příklad před a po:

text
// .NET 6 (old API, shown for contrast — not valid on .NET 8)
using var viewer = new Viewer(cache, httpContextAccessor, "wwwroot/Doconut.Viewer.lic");
var token = viewer.OpenDocument(path, new PdfConfig { AllowSearch = true }, new DocOptions());
csharp
// .NET 8 — Viewer injected, license configured once in AddDoconut()
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });

Migrace z .NET Framework 4.7 (Web Forms)

Viewer ve verzi 4.7 je WebControl; .NET 8 nahrazuje model ovládacího prvku middlewarem + DI službou:

  • Ovládací prvek <doconut:DocViewer runat=server> zmizí — stránka hostuje dvojici div widgetu a váš endpoint vrací token (Quick Start ukazuje vzor).
  • Statické metody licence → zdroje licence v DoconutOptions.
  • Synchronous OpenDocument → await OpenDocumentAsync.
  • Viewer.ReferenceScripts() / ReferenceCss() existují v obou světech — verze pro .NET 8 přijímají objekty ScriptConfig/CssConfig a jsou podmíněny licencí.
  • Vlastnosti ovládacího prvku (ShowThumbs, PageZoom, FixedZoom, …) → stejné názvy v ViewerConfig / JS možnostech docViewer.
  • Exportní metody vracející byte[] → asynchronní export‑anotace API na Viewer.

Plánujte tuto část jako přepis vrstvy hostování kolem nezměněného konceptu: otevřít → token → widget.

Poznámka k pojmenování

Ve všech frameworkech je třída Viewer — pokud narazíte na DocumentViewer ve starých úryvcích nebo článcích třetích stran, tento typ v SDK nikdy neexistoval.

Kontrolní seznam migrace

  1. Vyměňte balíčky; zarovnejte verze plugin balíčků.
  2. Přesuňte nastavení licence do AddDoconut(); odstraňte statické volání licence.
  3. Přepište volání otevření na asynchronní; nahraďte Dispose/parametrem‑bez CloseDocument metodou CloseDocument(token).
  4. Nahraďte používání viewer.Converter registrací pluginu Konvertoru + DocumentConverter.
  5. Znovu otestujte bezpečnostní cestu: AddSession()/UseSession() jsou nyní povinné s výchozí bezpečností.

Byla tato stránka užitečná?