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 sladěné):
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 (rychlé selhání); nepřepne se na vodoznak a IsVersionValid vrátí false. Obnovte, 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ínejte znovu System.Text.Json ani System.Drawing.Common (viz Řešení problémů pro přesné chyby, které způsobí downgrade).

  3. Proveďte rychlý test jednoho dokumentu pro každou používanou rodinu formátů.

Migrace z .NET 6 / .NET Standard 2.0

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

Oblast.NET 6 / Standard 2.0.NET 8
NastaveníVytvořit Viewer(cache, httpContextAccessor, licensePath)builder.Services.AddDoconut(options => …) + injektujte Viewer
LicenceStatická Viewer.DoconutLicense(path) + SetLicensePlugin(...) per pluginoptions.LicensePath / LicenseContent / LicenseStream — jedna licence, automatické vyhledání souborů pluginů
Otevřeníviewer.OpenDocument(...) (synchrónní)await viewer.OpenDocumentAsync(...)
Uzavřeníviewer.CloseDocument() nebo viewer.Dispose()viewer.CloseDocument(token) — Viewer není IDisposable
ŽivotnostViewer implementuje IDisposable, drží otevřený dokumentViewer je bezstavový; relace žijí v cache pod tokeny
KonvertorVlastnost viewer.ConverterPlugin Konvertoru (AddPlugin<ConverterPlugin>()) + služba DocumentConverter
Konfigurační třídyDoconut.Configs.View.* jmenné prostoryVše v jmenném prostoru Doconut
MiddlewareManuální propojení handlerůapp.UseDoconutResources() + app.UseDoconut()

Typický před/po:

text
// .NET 6 (staré API, ukázáno pro kontrast — neplatné v .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 injektován, licence nastavena jednou v 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 widgetů div a váš koncový bod vrací token (Quick Start ukazuje vzor).
  • Statické metody licence → zdroje licence DoconutOptions.
  • Synchrónní OpenDocument → await OpenDocumentAsync.
  • Viewer.ReferenceScripts() / ReferenceCss() existují v obou světech — verze .NET 8 přijímají objekty ScriptConfig/CssConfig a jsou řízeny licencí.
  • Vlastnosti ovládacího prvku (ShowThumbs, PageZoom, FixedZoom, …) → stejné názvy v ViewerConfig / v JS možnostech docViewer.
  • Exportní metody vracející byte[] → asynchronní API pro export anotací na Viewer.

Plánujte tuto migraci jako přepsání hostovací vrstvy kolem nezměněného konceptu: otevření → token → widget.

Poznámka k pojmenování

Ve všech frameworkech je třída Viewer — pokud najdete 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; sladěte verze plugin balíčků.
  2. Přesuňte nastavení licence do AddDoconut(); odstraňte statické volání licence.
  3. Udělejte volání otevření asynchronní; nahraďte Dispose/CloseDocument bez parametrů voláním CloseDocument(token).
  4. Nahraďte použití viewer.Converter registrací pluginu Converter + DocumentConverter.
  5. Znovu otestujte bezpečnostní cestu: AddSession()/UseSession() jsou nyní vyžadovány s výchozí bezpečností (plus AddDistributedMemoryCache() v aplikaci minimal-API).

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