IRONSOFTWAREHOME
FILMY

Migracja zOnBarcodedo IronBarcode

Curtis Chau
Curtis Chau
Updated: 1 sierpnia 2026

Niniejszy przewodnik obejmuje kompletną ścieżkę migracji zOnBarcodedo IronBarcode. Omawia trzyetapową zmianę konfiguracji, podaje przykłady kodu przed i po zmianie dla każdego popularnego wzorca, mapuje APIOnBarcodena jego odpowiedniki w IronBarcode, dokumentuje problemy pojawiające się podczas migracji oraz dostarcza listę kontrolną terminów wyszukiwania do audytu kodu źródłowego przed uznaniem migracji za zakończoną.

Dlaczego warto przejść z OnBarcode

**Dwupoziomowa nadwyżka zakupów:**OnBarcodepublikuje ceny wieczyste dla SDK Generatora (jedynie liniowe i liniowe + 2D) i wymienia SDK Reader jako produkt o osobnej cenie. Organizacja, która potrzebuje obu możliwości, musi przejść przez dwa procesy zakupu na dwóch SKU — wybierając odpowiedni poziom Generatora dla używanych symbolik, a następnie osobno kupując Reader — zanim całkowity koszt zostanie ustalony. Tarcia to dublowanie się w dwóch zakupach zamiast jednego elementu.

Podział kosztów ogólnych produktu: Generowanie i odczyt to odrębne produkty z oddzielnymi pakietami NuGet, oddzielnymi przestrzeniami nazw licencji, oddzielnymi kluczami licencyjnymi i oddzielnymi harmonogramami wersji. Projekt wykorzystujący oba produkty musi skonfigurować dwa klucze licencyjne podczas uruchamiania, śledzić dwie wersje pakietów w trakcie aktualizacji oraz uwzględniać dwa niezależne cykle wydawnicze. Gdy do projektu, który pierwotnie obejmował wyłącznie generowanie, dodaje się wymóg odczytu, cały proces zakupu i integracji musi zostać powtórzony dla drugiego produktu.

**Luki w przepływie pracy z plikami PDF:**OnBarcodenie obsługuje natywnie odczytu BarCode z dokumentów PDF. Projekty przetwarzające kody kreskowe osadzone w fakturach, listach przewozowych, zamówieniach zakupu lub skanach archiwalnych muszą nabyć oddzielną bibliotekę renderowania plików PDF na obrazy, zintegrować ją z potokiem, zarządzać jej licencją oddzielnie oraz przekazywać renderowane strony doOnBarcodeReader SDK pojedynczo. Powoduje to powstanie rozwiązania opartego na dwóch zależnościach, podczas gdy w innym przypadku wystarczyłoby rozwiązanie oparte na jednej zależności.

API szczegolowosc: GeneratorOnBarcodewymaga utworzenia obiektu Barcode, przypisania mu wielu wlasciwosci - w tym takich z rozsadnymi wartosciami domyslnymi jak Resolution, BarWidth, i BarHeight - a nastepnie wywolania metody generacji. Ten sam wynik można uzyskać przy użyciu znacznie mniejszej ilości kodu, korzystając ze statycznego interfejsu API fabryki. W połączeniu z generowaniem partii wzorzec przypisywania właściwości generuje duże ilości powtarzalnego kodu, który wymaga przeglądu i konserwacji.

Podstawowy problem

Konfiguracja z podwójną licencją jest najbardziej bezpośrednim punktem tarcia dla każdego projektu, który wymaga zarówno generowania, jak i odczytu.OnBarcodewymaga dwóch oddzielnych wywołań do dwóch oddzielnych przestrzeni nazw licencji podczas uruchamiania:

// OnBarcode: two products, two DLL references, no runtime key
//OnBarcodeuses pre-licensed DLLs — the purchased DLL is already activated.
// There is no runtime SetLicense() call; the license is baked into the downloaded assembly.
using OnBarcode.Barcode;
using OnBarcode.Barcode;
C#

IronBarcode sprowadza to do jednego przypisania właściwości, które obejmuje wszystkie możliwości — generowanie, odczyt, obsługę plików PDF i operacje wsadowe — w ramach jednego klucza:

// IronBarcode: one package, one key, one line
using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

Każda operacja związana z kodami kreskowymi w aplikacji — niezależnie od tego, czy generuje, odczytuje czy przetwarza pliki PDF — działa w ramach tej jednej konfiguracji.

##IronBarcode a OnBarcode: porównanie funkcji

FunkcjaOnBarcodeIronBarcode
Generowanie BarCode'ówTakTak
Odczytywanie BarCodeOddzielny produkt, oddzielny zakupW zestawie
Odczytywanie BarCodes z plików PDFNieobsługiwane natywnieNatywne — nie wymaga zewnętrznej biblioteki
Automatyczne wykrywanie formatu podczas odczytuNie — wymagana jawna BarcodeType[]Tak
Metadane wyniku (format, pozycja, strona)Niedostepne — tylko surowa string[]Tak — BarcodeResults z pelnymi metadanymi
QR Kod z nałożonym logoWymagany ręczny kod GDI+Wbudowane
Opublikowane cenyTak — strony dotyczące poszczególnych produktów (poziomy Generatora + osobno Reader)Tak — jedna strona obejmuje wszystkie możliwości
Pojedynczy klucz licencyjny na wszystkie funkcjeNie — osobne klucze dla każdego produktuTak
Dystrybucja NuGetDostępne, w parze z dziedzicznymi pobraniami DLLDostępne od momentu premiery
Dostęp do kodu źródłowegoTylko plan nieograniczonyNiedostępne
Obsługa .NET 8 / 9TakTak
Konfiguracja licencji Docker / chmuraPodręcznikObsługa zmiennych środowiskowych

Szybki start: Migracja zOnBarcodedo IronBarcode

Krok 1: Usuń odniesienia do pakietu OnBarcode

Jeśli w projekcie używane są pakiety NuGet, usuń oba:

dotnet remove package OnBarcode.Barcode.Generator
dotnet remove package OnBarcode.Barcode.Reader
SHELL

Jesli projekt uzywa starszej dystrybucji opartej na bibliotece DLL, nalezy rowniez usunac reczny blok odniesienia z .csproj:

<!-- Remove this block entirely -->
<ItemGroup>
  <Reference Include="OnBarcode.Barcode">
    <HintPath>lib\OnBarcode.Barcode.dll</HintPath>
    <Private>true</Private>
  </Reference>
</ItemGroup>
XML

Usun pliki DLL z katalogu lib/ lub miejsca, w ktorym sa przechowywane. Pozostawienie starych zestawów obok nowego pakietu NuGet spowoduje konflikty przestrzeni nazw w czasie kompilacji.

Krok 2: Dodaj IronBarcode

Jeden pakiet obejmuje generowanie, odczyt i obsługę plików PDF:

dotnet add package IronBarcode
SHELL

Do czytania nie jest wymagany żaden dodatkowy pakiet. Do obsługi plików PDF nie jest wymagany żaden dodatkowy pakiet.

Krok 3: Zaktualizuj przestrzenie nazw i zastąp konfigurację podwójnej licencji

Zastąp obie dyrektywyOnBarcodepojedynczym importem IronBarcode:

// Remove
using OnBarcode.Barcode;
using OnBarcode.Barcode;

// Add
using IronBarCode;

Zamień podwójne referencje DLL na pojedyncze przypisanie klucza. Umieść to raz, na początku uruchamiania aplikacji, przed wykonaniem jakiejkolwiek operacji związanej z BARCODE:

// Remove theOnBarcodeDLL references and using directives
// Add
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
C#

Przykłady migracji kodu

Generowanie barcode'ów Code 128

Podstawowy przypadek Code 128 ilustruje wzorzec przypisania właściwości w porównaniu ze wzorcem fabryki statycznej.

Podejście OnBarcode:

using OnBarcode.Barcode;

Linear barcode = new Linear();
barcode.Type = BarcodeType.CODE128;
barcode.Data = "SHIP-2024-001";
barcode.Resolution = 96;
barcode.X = 1;
barcode.BarcodeHeight = 80;
barcode.ShowText = true;
barcode.drawBarcode("shipping-label.png");

Podejście IronBarcode:

using IronBarCode;

BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

Typ danych i kodowania sa przekazywane jako argumenty do CreateBarcode. Właściwości takie jak rozdzielczość i wysokość słupków nie są wymagane do uzyskania skanowalnego wyniku; Ustawienia domyślne są odpowiednie dla większości zastosowań. Kiedy potrzebne sa niestandardowe wymiary, mozna je dodac jako lancuchowe wywolania miedzy CreateBarcode i SaveAsPng bez wprowadzenia stanu zmienialnego obiektu.

QR kody z logo wymagaja, abyOnBarcodeuzylo System.Drawing do kroku nakladania obrazu.IronBarcode zapewnia to jako wbudowana operacje.

Podejście OnBarcode:

using OnBarcode.Barcode;
using System.Drawing;

QRCode qr = new QRCode();
qr.Data = "https://example.com/product/4891";
qr.QRCodeDataMode = QRCodeDataMode.Auto;
qr.QRCodeECL = QRCodeECL.H; // H-level error correction required for logo overlay

Image qrImage = qr.drawBarcode();

using (Graphics g = Graphics.FromImage(qrImage))
{
    Image logo = Image.FromFile("brand-logo.png");
    int logoSize = qrImage.Width / 5;
    int x = (qrImage.Width - logoSize) / 2;
    int y = (qrImage.Height - logoSize) / 2;
    g.DrawImage(logo, x, y, logoSize, logoSize);
}

qrImage.Save("product-qr.png");

Podejście IronBarcode:

using IronBarCode;

var qr = QRCodeWriter.CreateQrCodeWithLogo("https://example.com/product/4891", "brand-logo.png", 500);
qr.SaveAsPng("product-qr.png");

Poziom korekty błędów, obliczenia rozmiaru logo i kompozycja obrazu są obsługiwane wewnętrznie. Nie jest wymagane zaleznie System.Drawing.

Odczytywanie BarCodes z obrazu

Odczytanie z pliku graficznego najlepiej ilustruje konsolidację produktów. W przypadkuOnBarcodedo odczytu wymagany jest oddzielny pakiet Reader SDK, osobne wywołanie licencji oraz wyraźna specyfikacja formatu. W przypadku IronBarcode jest to pojedyncze wywołanie statyczne przy użyciu tego samego pakietu i klucza, które już istnieją.

Podejście OnBarcode:

using OnBarcode.Barcode;

//OnBarcodereader is distributed as a pre-licensed DLL — no runtime SetLicense() call.
BarcodeScanner scanner = new BarcodeScanner();
scanner.BarcodeTypes = new BarcodeType[] { BarcodeType.Code128, BarcodeType.QRCode };
string[] results = scanner.Scan("received-label.png");

foreach (string value in results)
    Console.WriteLine(value);
C#

Podejście IronBarcode:

using IronBarCode;

var results = BarcodeReader.Read("received-label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");

Bez tworzenia instancji, bez tablicy formatów, bez oddzielnej konfiguracji licencji. Format jest wykrywany automatycznie. Każdy wynik zawiera zdekodowaną wartość i wykryty format. Szczegółowe informacje na temat opcji odczytu i obsługiwanych typów obrazów można znaleźć w przewodniku dotyczącym odczytu BARCODE-ów z obrazów.

Odczytywanie BarCodes z pliku PDF

Ten przykład migracji dotyczy zespołów, które renderowały strony PDF do obrazów przy użyciu biblioteki innej firmy, a następnie przekazywały te obrazy doOnBarcodeReader SDK.

Podejście OnBarcode:

//OnBarcodehas no native PDF support.
// A separate PDF rendering library was required — for example PdfiumViewer or Aspose.PDF.
var pageImages = RenderPdfPagesToImages("invoices.pdf"); // external library call

using OnBarcode.Barcode;
BarcodeScanner scanner = new BarcodeScanner();
scanner.BarcodeTypes = new BarcodeType[] { BarcodeType.Code128, BarcodeType.QRCode };

foreach (var pageImage in pageImages)
{
    string[] results = scanner.Scan(pageImage);
    foreach (string value in results)
        Console.WriteLine(value);
}
C#

Podejście IronBarcode:

using IronBarCode;

var results = BarcodeReader.Read("invoices.pdf");
foreach (var result in results)
    Console.WriteLine($"Page {result.PageNumber}: {result.Format}{result.Value}");

Bez etapu renderowania, bez zewnętrznej biblioteki PDF, bez tablicy formatów. Funkcja odczytu BarCodes w plikach PDF przetwarza wszystkie strony automatycznie i dołącza numer strony do każdego wyniku.

Generowanie partii

Generowanie BARCODE-ów dla zbioru elementów przebiega według tego samego schematu, co w przypadku pojedynczego generowania.

Podejście OnBarcode:

using OnBarcode.Barcode;

foreach (var item in inventoryItems)
{
    Linear barcode = new Linear();
    barcode.Type = BarcodeType.CODE128;
    barcode.Data = item.Sku;
    barcode.Resolution = 96;
    barcode.BarWidth = 1;
    barcode.BarHeight = 80;
    barcode.ShowText = true;
    barcode.drawBarcode($"labels/{item.Id}.png");
}

Podejście IronBarcode:

using IronBarCode;

foreach (var item in inventoryItems)
{
    BarcodeWriter.CreateBarcode(item.Sku, BarcodeEncoding.Code128)
        .SaveAsPng($"labels/{item.Id}.png");
}

Odnośnik do dokumentacji APIOnBarcodedo IronBarcode

OnBarcodeIronBarcodeUwagi
Z DLL licencjonowanym wcześniej (bez wywołania klucza w czasie wykonywania)IronBarCode.License.LicenseKey = "key"Przypisanie właściwości; wywołane raz przy starcie
Dwie referencje DLL (generator + reader)Pojedynczy pakiet NuGetJeden pakiet obejmuje wszystkie możliwości
new Linear()BarcodeWriter.CreateBarcode(data, encoding)Fabryka statyczna; żaden obiekt nie jest wymagany
barcode.BarcodeType = BarcodeType.CODE128BarcodeEncoding.Code128 jako parametrPrzekazany jako drugi argument do CreateBarcode
barcode.Data = "..."Pierwszy parametr CreateBarcodeDane są pierwszym argumentem
barcode.drawBarcode("file.png").SaveAsPng("file.png")Metoda o nazwie format
barcode.drawBarcode("file.jpg").SaveAsJpeg("file.jpg")Metoda o nazwie format
barcode.drawBarcode("file.pdf").SaveAsPdf("file.pdf")Wyjście w formacie PDF
BarcodeType.CODE128BarcodeEncoding.Code128Stała zmieniona nazwa
BarcodeType.QRCodeBarcodeEncoding.QRCodeBezpośrednie odwzorowanie
BarcodeType.EAN13BarcodeEncoding.EAN13Bezpośrednie odwzorowanie
BarcodeType.DataMatrixBarcodeEncoding.DataMatrixBezpośrednie odwzorowanie
BarcodeType.PDF417BarcodeEncoding.PDF417Bezpośrednie odwzorowanie
new BarcodeScanner() { BarcodeTypes = [...] }BarcodeReader.Read(path) — statyczneBrak instancji, brak specyfikacji formatu
scanner.Scan("file.png")string[]BarcodeReader.Read("file.png")BarcodeResultsBogatszy typ zwracanej wartości
results[0] (surowy ciag)result.ValueWartość odkodowanego ciągu znaków
Nie dotyczyresult.FormatWykryty format — niedostępny wOnBarcode
Nie dotyczyresult.PageNumberŹródło strony dla pliku PDF brzmi
Nie dotyczyBarcodeReader.Read("document.pdf")Natywne odczytywanie plików PDF; brak odpowiednikaOnBarcode
Ręczne nakładanie GDI+ na logo QRQRCodeWriter.CreateQrCodeWithLogo()Wbudowana obsługa logo
Konfiguracja BarcodeType[]Nie jest wymaganeAutomatyczne wykrywanie jest ustawieniem domyślnym

Typowe problemy związane z migracją i ich rozwiązania

Problem 1: Konflikty odwołań do bibliotek DLL

OnBarcode: Projekty na legacy DLL dystrybucji maja elementy <Reference> w .csproj wskazujace na lib\OnBarcode.Barcode.dll lub podobne sciezki. Jeśli stara biblioteka DLL pozostanie na dysku po dodaniu IronBarcode, kompilator wykryje dwa zestawy zapewniające te same prefiksy przestrzeni nazw i wygeneruje niejednoznaczne błędy odwołań.

Rozwiazanie: Usun blok odniesienia <ItemGroup> z .csproj przed uruchomieniem dotnet add package IronBarcode. Usuń pliki DLL z dysku. Sprawdź za pomocą czystej kompilacji, czy nie pozostały żadne nieaktualne odwołania do zestawów.

# Search for lingeringOnBarcodeDLL references in project files
grep -r "OnBarcode" --include="*.csproj" .
grep -r "OnBarcode" --include="*.props" .
SHELL

Problem 2: Konflikty nazw typów podczas migracji fazowej

OnBarcode: Przestrzen nazw czytnika eksportuje klase o nazwie BarcodeScanner.IronBarcode ma klase statyczna o nazwie BarcodeReader. Te nazwy nie koliduja bezposrednio, ale kazdy plik importujacy jednoczesnie OnBarcode.Barcode.Reader i IronBarCode moze widziec niejednoznacznosc enum BarcodeType —OnBarcodedefiniuje BarcodeType do wyboru formatu, a IronBarcode uzywa BarcodeEncoding. Utrzymywanie obu przestrzeni nazw aktywnych podczas migracji spowoduje bledy kompilacji dla kazdego odniesienia BarcodeType.

Rozwiazanie: Ukoncz migracje kazdego pliku atomowo — usun dyrektywe using OnBarcode.Barcode.Reader i dodaj using IronBarCode podczas tej samej edycji. Nie należy pozostawiać obu dyrektyw using w żadnym pliku. Jeśli konieczne jest podejście etapowe, należy tymczasowo używać nazw w pełni kwalifikowanych:

// Temporary disambiguation during phased migration
var results = IronBarCode.BarcodeReader.Read("file.png");

Problem 3: Usunięcie tablicy BarcodeType

OnBarcode: Czytnik wymaga reader.BarcodeTypes = new BarcodeType[] { ... } aby działało. Programiści migrujący kod czytnika mają czasem zwyczaj jawnego określania formatów i szukają odpowiedniej konfiguracji w IronBarcode.

Rozwiązanie: Całkowicie usunąć specyfikację formatu. BarcodeReader.Read wykonuje automatyczne wykrywanie we wszystkich obslugiwanych formatach. Nie jest wymagana konfiguracja, a odpowiednik BarcodeType[] nie istnieje w IronBarcode, poniewaz nie jest potrzebny.

// No format configuration required
var results = BarcodeReader.Read("label.png");

Lista kontrolna migracji OnBarcode

Zadania przed migracją

Przed wprowadzeniem zmian należy przeprowadzić audyt kodu źródłowego w celu zlokalizowania wszystkich miejsc użycia OnBarcode:

# Find allOnBarcodenamespace imports
grep -rn "using OnBarcode" --include="*.cs" .

# Find all license configuration calls
grep -rn "SetLicense" --include="*.cs" .

# Find all generator usage
grep -rn "new Linear\|new QRCode\|drawBarcode\|BarcodeType\." --include="*.cs" .

# Find all reader usage
grep -rn "BarcodeScanner\|\.Scan(\|BarcodeType\[\]" --include="*.cs" .

# Find DLL references in project files
grep -rn "OnBarcode" --include="*.csproj" .
grep -rn "OnBarcode" --include="*.sln" .
SHELL

Należy określić, które pliki służą wyłącznie do generowania, które do odczytu, a które do obu tych celów. Zanotuj wszelkie pliki, ktore zawieraja reczny blok DLL <Reference> zamiast odniesienia do pakietu NuGet.

Zadania związane z aktualizacją kodu

  1. Usun pakiet NuGet OnBarcode.Barcode.Generator
  2. Usun pakiet NuGet OnBarcode.Barcode.Reader
  3. Usun wszelkie reczne wpisy DLL <Reference> z plikow .csproj
  4. Usuń pliki DLLOnBarcodez repozytorium
  5. Uruchom dotnet add package IronBarcode
  6. Zastap using OnBarcode.Barcode using IronBarCode w kazdym pliku
  7. Zastap using OnBarcode.Barcode.Reader using IronBarCode w kazdym pliku
  8. Usun oba wpisy DLLOnBarcode<Reference> (generator i czytnik) — brak wywolan licencji runtime do zastapienia
  9. Dodaj IronBarCode.License.LicenseKey = "YOUR-KEY" raz podczas uruchamiania aplikacji
  10. Konwertuj kazdy new Linear() lub new QRCode() + blok przypisania wlasciwosci do BarcodeWriter.CreateBarcode(data, encoding)
  11. Zastap barcode.drawBarcode("file.png") .SaveAsPng("file.png") (lub odpowiednia metoda formatu)
  12. Zastap new BarcodeScanner() { BarcodeTypes = [...] } + .Scan(path) BarcodeReader.Read(path)
  13. Zaktualizuj obsluge wynikow z string[] indeksowanie na result.Value i result.Format na BarcodeResults
  14. Usuń wszelki kod renderujący pliki PDF na obrazy, używany w celu obejścia ograniczeńOnBarcodedotyczących plików PDF
  15. Zastap wieloetapowa petle renderowania i skanowania PDF jednym wywolaniem BarcodeReader.Read("file.pdf")

Testy po migracji

  • Sprawdź, czy każdy typ BarCoda używany w projekcie (Code 128, QR, EAN, Data Matrix, PDF417) generuje wynik nadający się do skanowania
  • Zeskanuj wygenerowane BarCodes za pomocą skanera fizycznego lub urządzenia mobilnego, aby potwierdzić ich czytelność
  • Sprawdź, czy odczyt BarCode zwraca prawidłowe wartości dla znanych obrazów testowych
  • Sprawdź, czy odczyt plików PDF zwraca prawidłowe wartości i prawidłowe numery stron dla wielostronicowych dokumentów testowych
  • Uruchom aplikację w dowolnym środowisku CI, aby sprawdzić, czy konfiguracja klucza licencyjnego działa poprawnie w potoku
  • Sprawdz, czy zadne ciagi OnBarcode nie pozostaly w .cs, .csproj lub plikach konfiguracyjnych po zakonczeniu migracji

Kluczowe korzyści wynikające z migracji do IronBarcode

Pakiet konsolidacyjny i licencja: Po migracji wszystkie operacje związane z BarCode obejmuje jeden pakiet NuGet i jeden klucz licencyjny. Nie ma oddzielnych produktów do zakupu, nie trzeba śledzić niezależnych harmonogramów wydawania wersji ani utrzymywać konfiguracji podwójnej licencji podczas uruchamiania. Złożoność rozwiązania opartego na dwóch produktach została zastąpiona pojedynczą zależnością.

**Przejrzyste zamówienia:**IronBarcode publikuje poziomy licencji wieczystych wraz z cenami na stronie produktu. Organizacja może określić całkowity koszt, złożyć zamówienie i sfinalizować zakup bez rozmowy z działem sprzedaży. Strona licencyjna IronBarcode zawiera cennik dla wszystkich poziomów oraz szczegóły dotyczące kluczowej konfiguracji dla środowisk Docker i chmury.

Natywna obsługa plików PDF: Projekty, które wcześniej wymagały oddzielnej biblioteki renderującej pliki PDF do przetwarzania plików PDF z osadzonymi kodami kreskowymi, mogą całkowicie wyeliminować tę zależność. Pojedyncze wywolanie BarcodeReader.Read przetwarza wszystkie strony dokumentu PDF bez zadnego kroku renderowania, a kazdy wynik zawiera numer strony, z ktorej zostal wydobyty.

Bardziej bogate wyniki czytania: Typ zwracany BarcodeResults dostarcza zdekodowana wartosc, wykryty format kodu kreskowego, wspolrzedne ramki ograniczajacej w zrodlowym obrazie i numer strony dla odczytow PDF. Aplikacje, ktore wczesniej dzialaly z plaskim string[], teraz moga pokazywac informacje o formacie, wspierac przeplywy pracy z anotacjami, lub implementowac filtrowanie na podstawie pewnosci bez dodatkowego przetwarzania.

Zredukowana powierzchnia API: Wzorzec statycznej fabryki zastępuje model przypisywania właściwości. Typowe operacje generowania wymagają mniejszego nakładu kodu, a operacje odczytu nie wymagają tworzenia instancji ani wstępnej konfiguracji formatu. Operacje wsadowe zyskują dzięki mniejszej ilości kodu na element, co ułatwia przeglądanie i utrzymanie w miarę upływu czasu.

Zwróć uwagę: Aspose,OnBarcodei PDFium są zarejestrowanymi znakami towarowymi ich właścicieli. Ta strona nie jest powiązana z, popierana przez, ani sponsorowana przez Aspose Pty Ltd, Chromium Project, Google ani OnBarcode. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.
Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta