Passer au contenu du pied de page
VIDéOS

Comment corriger l'orientation du code-barres en C# | IronBarcode

Migrer de Code-barres Telerik Rad vers IronBarcode

Ce guide fournit un chemin de migration complet de Code-barres Telerik Rad vers Code-barres IronBarcode pour les développeurs .NET qui ont atteint les limites de ce que RadBarcode et RadBarcodeReader peuvent faire. Il couvre le remplacement des paquets, les mises à jour des espaces de noms, l'initialisation des licences, des exemples de migration au niveau du code, une référence de mappage d'API et une liste de contrôle pour vérifier que la migration est complète. Les exemples se concentrent sur les scénarios les plus fréquemment rencontrés lors des migrations de codes-barres Telerik : remplacement des contrôles XAML, extension du format de lecture, déploiement côté serveur et traitement PDF.

Pourquoi migrer depuis Telerik RadBarcode

Les migrations Code-barres Telerik Rad sont déclenchées par des exigences techniques concrètes que les composants existants ne peuvent pas satisfaire. Les raisons ci-dessous représentent les conditions les plus fréquemment signalées par les équipes qui ont achevé ou qui sont en train d'évaluer cette transition.

Limite de lecture 2D : Le composant RadBarcodeReader dans WPF et le composant RadBarcodeReader dans WinForms partagent le même moteur de lecture, qui est délimité par l'énumération DecodeType. Cette énumération contient des entrées pour les formats linéaires 1D — Code128, Code39, EAN13, EAN8, UPCA, UPCE, Codabar, ITF — et rien d'autre. Aucune entrée n'existe pour les codes QR, DataMatrix, PDF417 ou Aztec. Lorsqu'une nouvelle exigence arrive pour traiter les codes QR entrants ou lire des étiquettes DataMatrix à partir de documents numérisés, la contrainte DecodeType devient un obstacle majeur sans solution de contournement disponible dans la famille de produits Telerik.

Fragmentation du code de la plateforme : La lecture avec Telerik nécessite des dépendances de cadre UI : RadBarcodeReader utilise des types WPF (BitmapImage) et RadBarcodeReader utilise des types WinForms (System.Drawing.Image). Ces types ne peuvent pas être référencés dans une bibliothèque .NET partagée, une application console, un projet ASP.NET Core ou un serveur Blazor . Une équipe qui souhaite centraliser la logique de lecture des codes-barres dans une couche de services partagée ne peut pas le faire avec les types Telerik — les implémentations de lecteurs sont liées de manière permanente à leurs frameworks d'interface utilisateur respectifs.

Lacune en matière de traitement des PDF : de nombreux flux de travail de codes-barres fonctionnent sur des documents plutôt que sur des fichiers image. Le lecteur de codes-barres Telerik RadBarcodeReader n'accepte que les images bitmap. La lecture d'un code-barres intégré dans une page PDF nécessite la conversion de la page en image à l'aide d'une bibliothèque distincte, puis l'envoi de cette image au lecteur Telerik — ajoutant ainsi une dépendance et ne recevant toujours que des résultats unidimensionnels. Pour les équipes dont les documents sont principalement des PDF, cette solution de contournement ajoute des frictions à chaque étape du flux de travail.

Licence par abonnement : la fonctionnalité de code-barres Telerik n'est pas vendue sous forme de package autonome. L'accès à RadBarcode et RadBarcodeReader est regroupé avec des abonnements à la suite UI spécifique à la plateforme — les abonnements UI Telerik par plateforme commencent à partir de 749 $ par développeur et par an (niveau Lite) et DevCraft UI est à 1 149 $ par développeur et par an pour toutes les plateformes combinées, selon les prix publiés de Telerik pour 2026. Les équipes dont le besoin principal est la fonctionnalité de code-barres, et qui n'utilisent pas d'autres contrôles d'interface utilisateur Telerik, supportent le coût total de la Suite pour un composant qui ne représente qu'une petite fraction de ce qui est acheté.

Le problème fondamental

La limitation de lecture de Telerik se manifeste le plus clairement par le fait que le composant qui génère un format ne peut pas le faire transiter par le lecteur :

// Telerik — generates a QR code, then cannot read it back
var qrBarcode = new RadBarcode();
qrBarcode.Value = "https://example.com/order/4821";
qrBarcode.Symbology = new QRCode { ErrorCorrectionLevel = ErrorCorrectionLevel.H };
// Save to file...

// Attempt to read the same QR code:
var reader = new RadBarcodeReader();
// DecodeType.QR does not exist — QR cannot be added to this list
reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
var bitmap = new BitmapImage(new Uri("qr-output.png", UriKind.Absolute));
var result = reader.Decode(bitmap);
// result == null — always, for any QR code image
// Telerik — generates a QR code, then cannot read it back
var qrBarcode = new RadBarcode();
qrBarcode.Value = "https://example.com/order/4821";
qrBarcode.Symbology = new QRCode { ErrorCorrectionLevel = ErrorCorrectionLevel.H };
// Save to file...

// Attempt to read the same QR code:
var reader = new RadBarcodeReader();
// DecodeType.QR does not exist — QR cannot be added to this list
reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
var bitmap = new BitmapImage(new Uri("qr-output.png", UriKind.Absolute));
var result = reader.Decode(bitmap);
// result == null — always, for any QR code image
' Telerik — generates a QR code, then cannot read it back
Dim qrBarcode As New RadBarcode()
qrBarcode.Value = "https://example.com/order/4821"
qrBarcode.Symbology = New QRCode With {.ErrorCorrectionLevel = ErrorCorrectionLevel.H}
' Save to file...

' Attempt to read the same QR code:
Dim reader As New RadBarcodeReader()
' DecodeType.QR does not exist — QR cannot be added to this list
reader.DecodeTypes = New DecodeType() {DecodeType.Code128, DecodeType.EAN13}
Dim bitmap As New BitmapImage(New Uri("qr-output.png", UriKind.Absolute))
Dim result = reader.Decode(bitmap)
' result == null — always, for any QR code image
$vbLabelText   $csharpLabel

IronBarcode comble cette lacune. La génération et la lecture utilisent le même package, et le moteur de lecture détecte automatiquement les codes QR, DataMatrix, PDF417 et tous les autres formats :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Generate a QR code
BarcodeWriter.CreateBarcode("https://example.com/order/4821", BarcodeEncoding.QRCode)
             .SaveAsPng("qr-output.png");

// Read that same QR code back — no format specification needed
var results = BarcodeReader.Read("qr-output.png");
Console.WriteLine(results.First().Value);
// Output: https://example.com/order/4821
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Generate a QR code
BarcodeWriter.CreateBarcode("https://example.com/order/4821", BarcodeEncoding.QRCode)
             .SaveAsPng("qr-output.png");

// Read that same QR code back — no format specification needed
var results = BarcodeReader.Read("qr-output.png");
Console.WriteLine(results.First().Value);
// Output: https://example.com/order/4821
Imports IronBarCode

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

' Generate a QR code
BarcodeWriter.CreateBarcode("https://example.com/order/4821", BarcodeEncoding.QRCode) _
             .SaveAsPng("qr-output.png")

' Read that same QR code back — no format specification needed
Dim results = BarcodeReader.Read("qr-output.png")
Console.WriteLine(results.First().Value)
' Output: https://example.com/order/4821
$vbLabelText   $csharpLabel

Comparaison des fonctionnalités Code-barres IronBarcode et de Telerik RadBarcode

Fonction Code-barres Telerik Rad Code-barres IronBarcode
génération de codes-barres 1D Oui (toutes les plateformes) Oui
génération de codes-barres 2D Oui (toutes les plateformes) Oui
Lecture de codes-barres 1D WPF + WinForms uniquement Oui (toutes les plateformes)
lecture de code QR WPF seulement Oui (toutes les plateformes)
Lecture DataMatrix WPF seulement Oui (toutes les plateformes)
Lecture PDF417 WPF seulement Oui (toutes les plateformes)
lecture aztèque Non disponible Oui
lecture de fichiers PDF Non disponible Oui (natif)
Détection automatique du format Non — DecodeType requis Oui
Lecture ASP.NET Core Non disponible Oui
lecture de Blazor Non disponible Oui
Lecture sur Docker/Linux Non disponible Oui
Bibliothèque de services partagés Impossible (types de plateformes) Oui
API de lecture statique Non (nécessite une instance) Oui
package NuGet autonome Non — Suite d'interface utilisateur requise Oui
Licence perpétuelle Niveau perpétuel disponible à côté de l'abonnement Oui — à partir de $749 (Lite)

Démarrage rapide

Étape 1 : Remplacer le package NuGet

Supprimez le package Telerik UI pour la ou les plateformes de votre projet :

# WPF
dotnet remove package Telerik.UI.for.Wpf.60.Xaml

# WinForms
dotnet remove package Telerik.UI.for.WinForms.Common
dotnet remove package Telerik.UI.for.WinForms.Barcode

# Blazor
dotnet remove package Telerik.UI.for.Blazor
# WPF
dotnet remove package Telerik.UI.for.Wpf.60.Xaml

# WinForms
dotnet remove package Telerik.UI.for.WinForms.Common
dotnet remove package Telerik.UI.for.WinForms.Barcode

# Blazor
dotnet remove package Telerik.UI.for.Blazor
SHELL

Si votre projet utilise également d'autres contrôles Telerik provenant du même package, laissez ce dernier en place et passez à l'étape 2. Vous supprimerez les appels API spécifiques aux codes-barres sans supprimer le package partagé.

Installer IronBarcode:

dotnet add package IronBarcode
dotnet add package IronBarcode
SHELL

Un seul package couvre WPF, WinForms, ASP.NET Core, Blazor Server, les applications console, Docker, Azure Functions et AWS Lambda. La documentation complète relative à la compatibilité de la plateforme détaille les versions exactes de .NET et les systèmes d'exploitation cibles pris en charge.

Étape 2 : Mise à jour des espaces de noms

Supprimez les importations de l'espace de noms Telerik Barcode et remplacez-les par l'espace de noms IronBarcode :

// Remove these namespace imports:
// using Telerik.Windows.Controls.Barcode;      // WPF reader and generator
// using Telerik.Windows.Controls;              // WPF general
// using Telerik.WinControls.UI;               // WinForms
// using Telerik.WinControls.UI.Barcode;        // WinForms barcode reader

// Add this:
using IronBarCode;
// Remove these namespace imports:
// using Telerik.Windows.Controls.Barcode;      // WPF reader and generator
// using Telerik.Windows.Controls;              // WPF general
// using Telerik.WinControls.UI;               // WinForms
// using Telerik.WinControls.UI.Barcode;        // WinForms barcode reader

// Add this:
using IronBarCode;
Imports IronBarCode
$vbLabelText   $csharpLabel

Étape 3 : initialisation de la licence

Remplacez l'initialisation de la licence Telerik par l'attribution de la clé Code-barres IronBarcode au démarrage de l'application :

// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("key");

// Add at application startup (Program.cs, App.xaml.cs, or composition root):
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("key");

// Add at application startup (Program.cs, App.xaml.cs, or composition root):
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' Remove:
' Telerik.WinControls.TelerikLicenseManager.InstallLicense("key")

' Add at application startup (Program.vb, App.xaml.vb, or composition root):
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

L'attribution de la clé se fait une seule fois au point d'entrée de l'application. Il n'y a pas de fichier de licence à déployer, pas de chemin d'initialisation par plateforme et pas de configuration distincte pour WPF par rapport à ASP.NET Core.

Exemples de migration de code

Génération d'un code-barres : Contrôle XAML vers API basée sur le code

La génération de Telerik dans WPF est déclarative — l'élément XAML RadBarcode est rendu directement dans l'arborescence UI. Code-barres IronBarcode génère des codes-barres dans le code et renvoie un objet GeneratedBarcode qui peut être enregistré en tant que fichier ou converti en BitmapSource pour affichage dans WPF.

Approche Telerik :


<Window xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">
    <telerik:RadBarcode Value="PROD-2026-00184" Symbology="Code128" />
</Window>

<Window xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">
    <telerik:RadBarcode Value="PROD-2026-00184" Symbology="Code128" />
</Window>
XML
@* Blazor — TelerikBarcode renders as a Razor component *@
<TelerikBarcode Value="PROD-2026-00184" Type="@BarcodeType.Code128" />

Approche IronBarcode :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Save to file — replaces XAML generation + manual export
BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
             .ResizeTo(400, 100)
             .SaveAsPng("barcode.png");

// Display in WPF — assign to an Image control's Source property
var bitmapSource = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
                                .ToBitmapSource();
barcodeImageControl.Source = bitmapSource;

// Serve in Blazor or ASP.NET Core — return as base64 src attribute
byte[] bytes = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
                            .ResizeTo(400, 100)
                            .ToPngBinaryData();
string imgSrc = $"data:image/png;base64,{Convert.ToBase64String(bytes)}";
// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Save to file — replaces XAML generation + manual export
BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
             .ResizeTo(400, 100)
             .SaveAsPng("barcode.png");

// Display in WPF — assign to an Image control's Source property
var bitmapSource = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
                                .ToBitmapSource();
barcodeImageControl.Source = bitmapSource;

// Serve in Blazor or ASP.NET Core — return as base64 src attribute
byte[] bytes = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
                            .ResizeTo(400, 100)
                            .ToPngBinaryData();
string imgSrc = $"data:image/png;base64,{Convert.ToBase64String(bytes)}";
Imports IronBarCode

' Save to file — replaces XAML generation + manual export
BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128) _
             .ResizeTo(400, 100) _
             .SaveAsPng("barcode.png")

' Display in WPF — assign to an Image control's Source property
Dim bitmapSource = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128) _
                                .ToBitmapSource()
barcodeImageControl.Source = bitmapSource

' Serve in Blazor or ASP.NET Core — return as base64 src attribute
Dim bytes As Byte() = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128) _
                                   .ResizeTo(400, 100) _
                                   .ToPngBinaryData()
Dim imgSrc As String = $"data:image/png;base64,{Convert.ToBase64String(bytes)}"
$vbLabelText   $csharpLabel

L'énumération BarcodeEncoding couvre les mêmes symbologies que l'énumération Symbology de Telerik. Le passage à la génération de code QR ne modifie que l'argument enum. Pour connaître l'ensemble des options de génération de codes-barres 2D , y compris les niveaux de correction d'erreurs QR et les dimensions DataMatrix, la documentation Code-barres IronBarcode fournit des exemples complets.

Lecture des codes-barres depuis des applications de bureau

Telerik fournit deux classes de lecture distinctes pour les plateformes de bureau — RadBarcodeReader pour WPF et RadBarcodeReader pour WinForms — avec des noms de classe différents, des noms de propriété différents, et des types d'entrée différents. Code-barres IronBarcode remplace les deux avec un seul appel statique qui fonctionne de manière identique dans les deux types de projet.

Approche Telerik WPF :

La lecture WPF nécessite une instance RadBarcodeReader, une configuration explicite DecodeType, un objet BitmapImage chargé à partir d'un URI, et un appel à reader.Decode(). La propriété de résultat est .Text.

using Telerik.Windows.Controls.Barcode;
using System.Windows.Media.Imaging;

public string ReadProductBarcode(string imagePath)
{
    var reader = new RadBarcodeReader();
    reader.DecodeTypes = new DecodeType[]
    {
        DecodeType.Code128,
        DecodeType.Code39,
        DecodeType.EAN13,
        DecodeType.EAN8,
        DecodeType.UPCA,
        DecodeType.UPCE,
        DecodeType.Codabar,
        DecodeType.ITF
    };

    var bitmap = new BitmapImage(new Uri(imagePath, UriKind.Absolute));
    var result = reader.Decode(bitmap);

    return result?.Text ?? "No barcode found";
}
using Telerik.Windows.Controls.Barcode;
using System.Windows.Media.Imaging;

public string ReadProductBarcode(string imagePath)
{
    var reader = new RadBarcodeReader();
    reader.DecodeTypes = new DecodeType[]
    {
        DecodeType.Code128,
        DecodeType.Code39,
        DecodeType.EAN13,
        DecodeType.EAN8,
        DecodeType.UPCA,
        DecodeType.UPCE,
        DecodeType.Codabar,
        DecodeType.ITF
    };

    var bitmap = new BitmapImage(new Uri(imagePath, UriKind.Absolute));
    var result = reader.Decode(bitmap);

    return result?.Text ?? "No barcode found";
}
Imports Telerik.Windows.Controls.Barcode
Imports System.Windows.Media.Imaging

Public Function ReadProductBarcode(imagePath As String) As String
    Dim reader = New RadBarcodeReader()
    reader.DecodeTypes = New DecodeType() {
        DecodeType.Code128,
        DecodeType.Code39,
        DecodeType.EAN13,
        DecodeType.EAN8,
        DecodeType.UPCA,
        DecodeType.UPCE,
        DecodeType.Codabar,
        DecodeType.ITF
    }

    Dim bitmap = New BitmapImage(New Uri(imagePath, UriKind.Absolute))
    Dim result = reader.Decode(bitmap)

    Return If(result?.Text, "No barcode found")
End Function
$vbLabelText   $csharpLabel

Approche Telerik WinForms :

La classe RadBarcodeReader de WinForms utilise un nom différent, un nom de propriété différent (DecodeType au singulier plutôt que DecodeTypes au pluriel), et prend un System.Drawing.Image plutôt qu'un BitmapImage.

using Telerik.WinControls.UI.Barcode;
using System.Drawing;

public string ReadShippingLabel(string imagePath)
{
    var reader = new RadBarcodeReader();
    reader.DecodeType = new DecodeType[]
    {
        DecodeType.Code128,
        DecodeType.ITF,
        DecodeType.EAN13
    };

    using var image = Image.FromFile(imagePath);
    var result = reader.Read(image);

    return result?.Text ?? "No barcode found";
}
using Telerik.WinControls.UI.Barcode;
using System.Drawing;

public string ReadShippingLabel(string imagePath)
{
    var reader = new RadBarcodeReader();
    reader.DecodeType = new DecodeType[]
    {
        DecodeType.Code128,
        DecodeType.ITF,
        DecodeType.EAN13
    };

    using var image = Image.FromFile(imagePath);
    var result = reader.Read(image);

    return result?.Text ?? "No barcode found";
}
Imports Telerik.WinControls.UI.Barcode
Imports System.Drawing

Public Function ReadShippingLabel(imagePath As String) As String
    Dim reader = New RadBarcodeReader()
    reader.DecodeType = New DecodeType() {
        DecodeType.Code128,
        DecodeType.ITF,
        DecodeType.EAN13
    }

    Using image = Image.FromFile(imagePath)
        Dim result = reader.Read(image)
        Return If(result?.Text, "No barcode found")
    End Using
End Function
$vbLabelText   $csharpLabel

Approche IronBarcode :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public string ReadProductBarcode(string imagePath)
{
    var results = BarcodeReader.Read(imagePath);
    return results.FirstOrDefault()?.Value ?? "No barcode found";
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;

public string ReadProductBarcode(string imagePath)
{
    var results = BarcodeReader.Read(imagePath);
    return results.FirstOrDefault()?.Value ?? "No barcode found";
}
Imports IronBarCode

Public Function ReadProductBarcode(imagePath As String) As String
    Dim results = BarcodeReader.Read(imagePath)
    Return If(results.FirstOrDefault()?.Value, "No barcode found")
End Function
$vbLabelText   $csharpLabel

BarcodeReader.Read() est une méthode statique — aucune instance de lecteur n'est nécessaire. Elle accepte directement une chaîne de chemin de fichier sans nécessiter un chargement BitmapImage ou System.Drawing.Image. La détection automatique du format fonctionne pour plus de 50 types pris en charge. La propriété de résultat est .Value plutôt que .Text. Ce même appel fonctionne sans modification dans les applications WPF et WinForms ; il n'existe pas de variante spécifique à une plateforme. Il lit également les codes QR, les DataMatrix et tout autre format présent dans l'image, contrairement aux lecteurs Telerik qui sont limités aux formats 1D.

Lire les codes QR : une fonctionnalité auparavant impossible avec Telerik

Si votre code contient un commentaire ou un NotSupportedException documentant que la lecture QR n'est pas disponible, voici son remplacement. Il n'existe aucune voie de configuration dans Telerik permettant la lecture des QR codes — ce scénario n'a pas d'équivalent chez Telerik.

Approche Telerik :

// RadBarcodeReader does not support QR codes.
// DecodeType.QR does not exist in the Telerik enum.
public string ReadQrCode(string imagePath)
{
    throw new NotSupportedException(
        "Telerik RadBarcodeReader cannot read QR codes. " +
        "DecodeType.QR is not a valid enum value.");
}
// RadBarcodeReader does not support QR codes.
// DecodeType.QR does not exist in the Telerik enum.
public string ReadQrCode(string imagePath)
{
    throw new NotSupportedException(
        "Telerik RadBarcodeReader cannot read QR codes. " +
        "DecodeType.QR is not a valid enum value.");
}
' RadBarcodeReader does not support QR codes.
' DecodeType.QR does not exist in the Telerik enum.
Public Function ReadQrCode(imagePath As String) As String
    Throw New NotSupportedException("Telerik RadBarcodeReader cannot read QR codes. " & _
                                    "DecodeType.QR is not a valid enum value.")
End Function
$vbLabelText   $csharpLabel

Approche IronBarcode :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public string ReadQrCode(string imagePath)
{
    // QR codes, DataMatrix, PDF417, and Aztec are all detected automatically
    var results = BarcodeReader.Read(imagePath);
    return results.FirstOrDefault()?.Value ?? "No QR code found";
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;

public string ReadQrCode(string imagePath)
{
    // QR codes, DataMatrix, PDF417, and Aztec are all detected automatically
    var results = BarcodeReader.Read(imagePath);
    return results.FirstOrDefault()?.Value ?? "No QR code found";
}
Imports IronBarCode

Public Function ReadQrCode(imagePath As String) As String
    ' QR codes, DataMatrix, PDF417, and Aztec are all detected automatically
    Dim results = BarcodeReader.Read(imagePath)
    Return If(results.FirstOrDefault()?.Value, "No QR code found")
End Function
$vbLabelText   $csharpLabel

Le même appel BarcodeReader.Read() qui lit les codes-barres EAN-13 lit les codes QR. Il n'existe pas de configuration distincte pour les formats 2D. Pour obtenir la liste complète des formats de codes-barres pris en charge en lecture et en génération, la documentation Code-barres IronBarcode couvre plus de 50 entrées avec des notes spécifiques à chaque format.

Lecture des codes-barres dans un point de terminaison ASP.NET Core

Telerik ne fournit aucun composant de lecture de codes-barres pour ASP.NET Core ou Blazor. Si une application existante acheminait les images téléchargées vers un service de bureau pour lecture parce que la couche web ne disposait pas de lecteur Telerik, cette solution de contournement est remplacée par une lecture directe dans la couche web.

Approche Telerik :

// No Telerik reading API available in ASP.NET Core.
// Workaround: forward uploaded file to a WPF or WinForms service
// that can reference Telerik.Windows.Controls.Barcode.
[HttpPost("read")]
public async Task<IActionResult> ReadBarcode(IFormFile imageFile)
{
    // Must proxy to desktop service — no Telerik reader available here
    var bytes = await ReadAllBytesAsync(imageFile);
    var result = await _desktopBridgeService.ReadAsync(bytes);
    return Ok(result);
}
// No Telerik reading API available in ASP.NET Core.
// Workaround: forward uploaded file to a WPF or WinForms service
// that can reference Telerik.Windows.Controls.Barcode.
[HttpPost("read")]
public async Task<IActionResult> ReadBarcode(IFormFile imageFile)
{
    // Must proxy to desktop service — no Telerik reader available here
    var bytes = await ReadAllBytesAsync(imageFile);
    var result = await _desktopBridgeService.ReadAsync(bytes);
    return Ok(result);
}
Imports Microsoft.AspNetCore.Mvc

' No Telerik reading API available in ASP.NET Core.
' Workaround: forward uploaded file to a WPF or WinForms service
' that can reference Telerik.Windows.Controls.Barcode.
<HttpPost("read")>
Public Async Function ReadBarcode(imageFile As IFormFile) As Task(Of IActionResult)
    ' Must proxy to desktop service — no Telerik reader available here
    Dim bytes = Await ReadAllBytesAsync(imageFile)
    Dim result = Await _desktopBridgeService.ReadAsync(bytes)
    Return Ok(result)
End Function
$vbLabelText   $csharpLabel

Approche IronBarcode :

// NuGet: dotnet add package IronBarcode
using IronBarCode;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/barcode")]
public class BarcodeController : ControllerBase
{
    [HttpPost("read")]
    public IActionResult ReadBarcode(IFormFile imageFile)
    {
        using var stream = imageFile.OpenReadStream();
        var results = BarcodeReader.Read(stream);
        return Ok(results.Select(r => new
        {
            Format = r.BarcodeType.ToString(),
            Value = r.Value
        }));
    }

    [HttpGet("generate")]
    public IActionResult GenerateBarcode([FromQuery] string data)
    {
        var bytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
                                 .ResizeTo(400, 100)
                                 .ToPngBinaryData();
        return File(bytes, "image/png");
    }
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/barcode")]
public class BarcodeController : ControllerBase
{
    [HttpPost("read")]
    public IActionResult ReadBarcode(IFormFile imageFile)
    {
        using var stream = imageFile.OpenReadStream();
        var results = BarcodeReader.Read(stream);
        return Ok(results.Select(r => new
        {
            Format = r.BarcodeType.ToString(),
            Value = r.Value
        }));
    }

    [HttpGet("generate")]
    public IActionResult GenerateBarcode([FromQuery] string data)
    {
        var bytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
                                 .ResizeTo(400, 100)
                                 .ToPngBinaryData();
        return File(bytes, "image/png");
    }
}
Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc

<ApiController>
<Route("api/barcode")>
Public Class BarcodeController
    Inherits ControllerBase

    <HttpPost("read")>
    Public Function ReadBarcode(imageFile As IFormFile) As IActionResult
        Using stream = imageFile.OpenReadStream()
            Dim results = BarcodeReader.Read(stream)
            Return Ok(results.Select(Function(r) New With {
                .Format = r.BarcodeType.ToString(),
                .Value = r.Value
            }))
        End Using
    End Function

    <HttpGet("generate")>
    Public Function GenerateBarcode(<FromQuery> data As String) As IActionResult
        Dim bytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
                                 .ResizeTo(400, 100) _
                                 .ToPngBinaryData()
        Return File(bytes, "image/png")
    End Function
End Class
$vbLabelText   $csharpLabel

BarcodeReader.Read() accepte directement un Stream, donc le flux de fichier téléchargé est passé sans écriture sur le disque. Ce contrôleur se déploie sur Linux, Docker ou Azure App Service sans modification.

Lecture des codes-barres dans les fichiers PDF

Telerik ne possède pas de fonctionnalité de lecture des codes-barres PDF. Ajouter la lecture de PDF à une base de code existante basée sur Telerik nécessite une bibliothèque de rendu PDF pour convertir les pages en images avant de les transmettre à RadBarcodeReader. Code-barres IronBarcode lit directement les fichiers PDF.

Approche Telerik :

// No direct PDF reading support in RadBarcodeReader.
// Workaround: use a separate PDF library to extract page images
using SomePdfLibrary; // third-party dependency
using Telerik.Windows.Controls.Barcode;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = new List<string>();
    var pages = PdfRenderer.ExtractPages(pdfPath); // third-party call

    foreach (var pageImage in pages)
    {
        var reader = new RadBarcodeReader();
        reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
        var bitmap = ConvertToBitmapImage(pageImage); // conversion required
        var result = reader.Decode(bitmap);
        if (result != null)
            results.Add(result.Text); // 1D only — QR codes on PDF pages are missed
    }
    return results;
}
// No direct PDF reading support in RadBarcodeReader.
// Workaround: use a separate PDF library to extract page images
using SomePdfLibrary; // third-party dependency
using Telerik.Windows.Controls.Barcode;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = new List<string>();
    var pages = PdfRenderer.ExtractPages(pdfPath); // third-party call

    foreach (var pageImage in pages)
    {
        var reader = new RadBarcodeReader();
        reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
        var bitmap = ConvertToBitmapImage(pageImage); // conversion required
        var result = reader.Decode(bitmap);
        if (result != null)
            results.Add(result.Text); // 1D only — QR codes on PDF pages are missed
    }
    return results;
}
Imports SomePdfLibrary ' third-party dependency
Imports Telerik.Windows.Controls.Barcode

Public Function ReadBarcodesFromPdf(pdfPath As String) As List(Of String)
    Dim results As New List(Of String)()
    Dim pages = PdfRenderer.ExtractPages(pdfPath) ' third-party call

    For Each pageImage In pages
        Dim reader As New RadBarcodeReader()
        reader.DecodeTypes = New DecodeType() {DecodeType.Code128, DecodeType.EAN13}
        Dim bitmap = ConvertToBitmapImage(pageImage) ' conversion required
        Dim result = reader.Decode(bitmap)
        If result IsNot Nothing Then
            results.Add(result.Text) ' 1D only — QR codes on PDF pages are missed
        End If
    Next

    Return results
End Function
$vbLabelText   $csharpLabel

Approche IronBarcode :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = BarcodeReader.Read(pdfPath);
    return results.Select(r =>
        $"Page {r.PageNumber}: {r.BarcodeType} — {r.Value}").ToList();
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = BarcodeReader.Read(pdfPath);
    return results.Select(r =>
        $"Page {r.PageNumber}: {r.BarcodeType} — {r.Value}").ToList();
}
Imports IronBarCode

Public Function ReadBarcodesFromPdf(pdfPath As String) As List(Of String)
    Dim results = BarcodeReader.Read(pdfPath)
    Return results.Select(Function(r) $"Page {r.PageNumber}: {r.BarcodeType} — {r.Value}").ToList()
End Function
$vbLabelText   $csharpLabel

Aucune bibliothèque PDF séparée n'est nécessaire. Aucune étape d'extraction de page. Aucune conversion d'image. Indiquez le chemin d'accès au PDF et Code-barres IronBarcode traitera toutes les pages, renvoyant tous les codes-barres avec suivi des numéros de page. Les codes-barres 1D et 2D présents sur les pages PDF sont détectés.

Référence de correspondance entre l'API Code-barres Telerik Rad et IronBarcode

Code-barres Telerik Rad Code-barres IronBarcode
TelerikLicenseManager.InstallLicense("key") IronBarCode.License.LicenseKey = "key"
<telerik:RadBarcode Value="..." Symbology="Code128" /> BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
<TelerikBarcode Type="@BarcodeType.Code128" /> Génération côté serveur renvoyant ToPngBinaryData()
Symbology.Code128 BarcodeEncoding.Code128
Symbology.QRCode BarcodeEncoding.QRCode
new RadBarcodeReader() (WPF) Classe statique — aucune instance nécessaire
new RadBarcodeReader() (WinForms) Classe statique — aucune instance nécessaire
reader.DecodeTypes = new DecodeType[] { ... } (WPF) Détection automatique — aucune spécification requise
reader.DecodeType = new DecodeType[] { ... } (WinForms) Détection automatique — aucune spécification requise
reader.Decode(bitmapImage) (WPF) BarcodeReader.Read(imagePath)
reader.Read(drawingImage) (WinForms) BarcodeReader.Read(imagePath)
result.Text result.Value
result.Symbology result.BarcodeType
BitmapImage requis comme entrée (WPF) Chemin de fichier, Stream, ou tableau d'octets accepté
System.Drawing.Image requis comme entrée (WinForms) Chemin de fichier, Stream, ou tableau d'octets accepté
Formats 1D uniquement en lecture Plus de 50 formats, y compris tous les types 2D
Lecture seule pour WPF et WinForms Toutes les plateformes .NET
Aucune prise en charge de la lecture des fichiers PDF BarcodeReader.Read("file.pdf") — natif

Problèmes de migration courants et solutions

Problème 1 : Remplacement du contrôle de code-barres XAML

Telerik : <telerik:RadBarcode> est un contrôle visuel qui se rend directement dans l'arborescence des éléments UI WPF. Il ne peut pas être remplacé par un élément Image sans modifications du code-behind.

Solution : Remplacer l'élément <telerik:RadBarcode> par un contrôle <Image> et générer le code-barres dans le code-behind. Lier le Image.Source à un BitmapSource généré par Code-barres IronBarcode :

// In code-behind or ViewModel
using IronBarCode;

var generated = BarcodeWriter.CreateBarcode(barcodeValue, BarcodeEncoding.Code128)
                             .ResizeTo(400, 100);
BarcodeImage.Source = generated.ToBitmapSource();
// In code-behind or ViewModel
using IronBarCode;

var generated = BarcodeWriter.CreateBarcode(barcodeValue, BarcodeEncoding.Code128)
                             .ResizeTo(400, 100);
BarcodeImage.Source = generated.ToBitmapSource();
Imports IronBarCode

' In code-behind or ViewModel
Dim generated = BarcodeWriter.CreateBarcode(barcodeValue, BarcodeEncoding.Code128) _
                             .ResizeTo(400, 100)
BarcodeImage.Source = generated.ToBitmapSource()
$vbLabelText   $csharpLabel

Pour Blazor, remplacer <TelerikBarcode> par un élément <img> dont l'attribut src reçoit un PNG encodé en base64 généré côté serveur.

Problème n° 2 : Effets secondaires de la suppression de DecodeType

Telerik : La propriété DecodeTypes (WPF) ou DecodeType (WinForms) filtre les formats que le lecteur tente de détecter. La suppression de ce filtre lors d'une migration Code-barres IronBarcode signifie Code-barres IronBarcode renverra désormais des résultats pour tous les formats présents dans l'image, y compris les formats qui étaient auparavant exclus par le filtre.

Solution : Supprimer complètement le bloc d'assignation DecodeType. Si les formats supplémentaires détectés entraînent des résultats inattendus dans la logique en aval — par exemple, si le code supposait qu'un seul format de code-barres serait jamais renvoyé — ajouter un filtrage optionnel en utilisant BarcodeReaderOptions :

using IronBarCode;

var options = new BarcodeReaderOptions
{
    ExpectedBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.EAN13
};
var results = BarcodeReader.Read(imagePath, options);
using IronBarCode;

var options = new BarcodeReaderOptions
{
    ExpectedBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.EAN13
};
var results = BarcodeReader.Read(imagePath, options);
Imports IronBarCode

Dim options As New BarcodeReaderOptions With {
    .ExpectedBarcodeTypes = BarcodeEncoding.Code128 Or BarcodeEncoding.EAN13
}
Dim results = BarcodeReader.Read(imagePath, options)
$vbLabelText   $csharpLabel

Ceci est facultatif. Le comportement par défaut (détection de tous les formats) convient à la plupart des cas d'utilisation et produit des résultats que l'implémentation précédente de Telerik ne pouvait pas fournir.

Problème 3 : Nettoyage de TelerikLicenseManager

Telerik : Les appels Telerik.WinControls.TelerikLicenseManager.InstallLicense(key) apparaissent au démarrage de l'application, généralement dans Program.cs (WinForms) ou App.xaml.cs (WPF). La clé est souvent stockée dans les paramètres de l'application, dans un fichier de configuration ou est codée en dur dans la méthode de démarrage.

Solution : Supprimer l'appel TelerikLicenseManager.InstallLicense(). Remplacez-la par l'affectation de clé Code-barres IronBarcode au même emplacement de démarrage :

// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("TELERIK-KEY");

// Add:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("TELERIK-KEY");

// Add:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' Remove:
' Telerik.WinControls.TelerikLicenseManager.InstallLicense("TELERIK-KEY")

' Add:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Si le package Telerik reste installé (car d'autres contrôles Telerik non-barcode sont encore utilisés), l'appel TelerikLicenseManager pour ces contrôles doit être conservé. Ne supprimez l'appel que si les packages Telerik eux-mêmes sont complètement supprimés.

Liste de contrôle de migration des codes-barres Telerik RadBarcode

Tâches préalables à la migration

Avant d'apporter des modifications au code, vérifiez la base de code pour toute utilisation des codes-barres Telerik :

# License initialization
grep -r "TelerikLicenseManager.InstallLicense" --include="*.cs" .

# XAML generation controls
grep -r "RadBarcode" --include="*.xaml" .
grep -r "TelerikBarcode" --include="*.razor" .

# Code-behind generation references
grep -r "RadBarcode" --include="*.cs" .
grep -r "Symbology\." --include="*.cs" .

# Reading API — WPF
grep -r "RadBarcodeReader" --include="*.cs" .
grep -r "DecodeTypes\." --include="*.cs" .
grep -r "reader\.Decode(" --include="*.cs" .

# Reading API — WinForms
grep -r "BarCodeReader" --include="*.cs" .
grep -r "DecodeType\." --include="*.cs" .
grep -r "reader\.Read(" --include="*.cs" .

# Result property access
grep -r "result\.Text" --include="*.cs" .
grep -r "result\.Symbology" --include="*.cs" .
# License initialization
grep -r "TelerikLicenseManager.InstallLicense" --include="*.cs" .

# XAML generation controls
grep -r "RadBarcode" --include="*.xaml" .
grep -r "TelerikBarcode" --include="*.razor" .

# Code-behind generation references
grep -r "RadBarcode" --include="*.cs" .
grep -r "Symbology\." --include="*.cs" .

# Reading API — WPF
grep -r "RadBarcodeReader" --include="*.cs" .
grep -r "DecodeTypes\." --include="*.cs" .
grep -r "reader\.Decode(" --include="*.cs" .

# Reading API — WinForms
grep -r "BarCodeReader" --include="*.cs" .
grep -r "DecodeType\." --include="*.cs" .
grep -r "reader\.Read(" --include="*.cs" .

# Result property access
grep -r "result\.Text" --include="*.cs" .
grep -r "result\.Symbology" --include="*.cs" .
SHELL

Documentez chaque match. Notez quels fichiers contiennent des contrôles XAML, lesquels contiennent du code de lecture et à quelle plateforme chaque fichier appartient.

Tâches de mise à jour du code

  1. Supprimez les packages NuGet de codes-barres Telerik (ou conservez-les si nécessaire pour d'autres contrôles).
  2. Installer le package NuGet IronBarcode dans chaque projet nécessitant des fonctionnalités de code-barres
  3. Ajouter IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" à chaque point d'entrée de démarrage de l'application
  4. Supprimer les importations de namespaces Telerik et ajouter using IronBarCode
  5. Remplacer les éléments XAML <telerik:RadBarcode> par des contrôles <Image>
  6. Générer des images de code-barres dans le code-behind en utilisant BarcodeWriter.CreateBarcode(...).ToBitmapSource()
  7. Remplacer les composants Razor <TelerikBarcode> par des sources base64 <img> générées côté serveur
  8. Remplacer les instances new RadBarcodeReader() par des appels statiques BarcodeReader.Read(path)
  9. Remplacer les instances new RadBarcodeReader() par des appels statiques BarcodeReader.Read(path)
  10. Supprimez tous les reader.DecodeTypes = new DecodeType[] { ... } and reader.DecodeType = new DecodeType[] { ... } blocs
  11. Remplacer les appels reader.Decode(bitmapImage) par BarcodeReader.Read(imagePath)
  12. Remplacer les appels reader.Read(drawingImage) par BarcodeReader.Read(imagePath)
  13. Renommer result.Text en result.Value à tous les points d'accès aux résultats de lecture
  14. Renommer result.Symbology en result.BarcodeType à tous les points de vérification de format
  15. Remplacer les valeurs d'énumération de génération Symbology.Code128 et similaires par BarcodeEncoding.Code128
  16. Supprimer les appels TelerikLicenseManager.InstallLicense() où les packages Telerik sont entièrement supprimés

Test de post-migration

  • Vérifiez que tous les codes-barres 1D précédemment lus (Code128, EAN13, etc.) continuent de renvoyer des valeurs correctes.
  • Vérifiez que les codes QR dans les images de test sont désormais correctement lus, alors qu'ils renvoyaient auparavant une valeur nulle.
  • Vérifier que les codes-barres générés (enregistrés au format PNG ou servis sous forme d'octets) s'affichent correctement et sont scannables.
  • Vérifiez que les points de terminaison ASP.NET Core ou Blazor qui ne pouvaient pas effectuer de lecture auparavant fonctionnent désormais correctement.
  • Si la lecture de PDF a été ajoutée, vérifiez que les codes-barres sur chaque page PDF sont détectés avec les numéros de page corrects.
  • Exécutez les commandes d'audit grep de la section Pré-migration pour confirmer l'absence de références restantes à l'API de codes-barres Telerik.
  • Confirmer que IronBarCode.License.LicenseKey est défini avant le premier appel BarcodeReader.Read() ou BarcodeWriter.CreateBarcode()

Principaux avantages de la migration vers IronBarcode

Prise en charge complète des formats 2D : après la migration, les formats QR Code, DataMatrix, PDF417 et Aztec sont lisibles par le même appel API qui lisait déjà les formats Code128 et EAN13. Aucune configuration supplémentaire ni bibliothèque distincte n'est requise pour les formats 2D. Le moteur de lecture gère automatiquement l'identification du format.

API multiplateforme unifiée : Les appels BarcodeReader.Read() et BarcodeWriter.CreateBarcode() se compilent et s'exécutent identiquement dans WPF, WinForms, ASP.NET Core, Blazor, les applications console et les conteneurs Docker. La logique des codes-barres, écrite une seule fois dans une bibliothèque de services partagés, fonctionne sur tous les types de projets de la solution sans modification.

Traitement natif des fichiers PDF : Code-barres IronBarcode lit directement les codes-barres des fichiers PDF, traite toutes les pages et renvoie les résultats avec les métadonnées de numéro de page. Les flux de travail qui nécessitaient auparavant une bibliothèque de rendu PDF et une étape de lecture Telerik sont désormais regroupés en un seul appel de méthode, supprimant ainsi la dépendance à un tiers et l'étape intermédiaire de conversion d'image.

Suppression de la dépendance à un abonnement pour l'accès aux codes-barres : après la migration, la fonctionnalité de code-barres est disponible via le modèle de licence perpétuelle d'IronBarcode. L'accès continu ne nécessite pas de renouvellement annuel. Les équipes dont l'utilisation principale de la Suite Telerik était liée aux codes-barres réduisent leurs frais de licence récurrents à un coût unique.

Base de code simplifiée : Le bloc de configuration DecodeType, l'étape de chargement BitmapImage, la sélection de la classe de lecteur spécifique à la plateforme, et la chaîne de propriété result.Text sont tous remplacés par un unique appel de méthode statique avec une collection de résultats auto-détectante. Le code qui nécessitait auparavant des implémentations différentes pour la lecture WPF et WinForms se réduit désormais à une seule implémentation partagée.

Veuillez noterTelerik est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié à, approuvé par, ou sponsorisé par Progress Software. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.

Questions Fréquemment Posées

Pourquoi devrais-je migrer de Telerik Barcode vers IronBarcode ?

Les raisons les plus courantes sont la simplification des licences (suppression de la complexité du SDK + de la clé d'exécution), l'élimination des limites de débit, la prise en charge native des PDF, l'amélioration du déploiement Docker/CI/CD et la réduction de l'API boilerplate dans le code de production.

Comment remplacer les appels API de Telerik par IronBarcode ?

Remplacer la création d'instance et le modèle de licence par IronBarCode.License.LicenseKey = "key". Remplacer les appels au lecteur par BarcodeReader.Read(path) et les appels à l'écrivain par BarcodeWriter.CreateBarcode(data, encoding). Les méthodes statiques ne nécessitent aucune gestion d'instance.

Quelle quantité de code change lors de la migration de Telerik Barcode vers IronBarcode ?

La plupart des migrations permettent de réduire le nombre de lignes de code. Les modèles de licence, les constructeurs d'instances et la configuration explicite des formats sont supprimés. Les principales opérations de lecture/écriture sont converties en équivalents plus courts d'IronBarcode avec des objets de résultat plus propres.

Dois-je conserver à la fois Telerik Barcode et IronBarcode installés pendant la migration ?

Non. La plupart des migrations sont des remplacements directs plutôt que des opérations parallèles. Migrez une classe de service à la fois, remplacez la référence NuGet et mettez à jour les modèles d'instanciation et d'appel d'API avant de passer à la classe suivante.

Quel est le nom du package NuGet pour IronBarcode ?

Le paquet est "IronBarcode" (avec un B et un C majuscules). Installez-le avec "Install-Package IronBarCode" ou "dotnet add package IronBarCode". La directive using dans le code est "using IronBarCode ;".

Comment IronBarcode simplifie-t-il le déploiement de Docker par rapport à Telerik Barcode ?

IronBarcode est un package NuGet sans fichiers SDK externes ni configuration de licence montée. Dans Docker, définissez la variable d'environnement IRONBARCODE_LICENSE_KEY et le paquetage gère la validation de la licence au démarrage.

IronBarcode détecte-t-il automatiquement tous les formats de codes-barres après avoir migré depuis Telerik ?

Oui. IronBarcode détecte automatiquement la symbologie dans tous les formats pris en charge. L'énumération explicite des BarcodeTypes n'est pas nécessaire. Si le format est déjà connu et que la performance est importante, BarcodeReaderOptions permet de restreindre l'espace de recherche en tant qu'optimisation.

IronBarcode peut-il lire des codes-barres à partir de PDF sans bibliothèque séparée ?

Oui, BarcodeReader.Read("document.pdf") traite les fichiers PDF de manière native. Les résultats incluent le numéro de page, le format, la valeur et la confiance pour chaque code-barres trouvé. Aucune étape de rendu PDF externe n'est requise.

Comment IronBarcode gère-t-il le traitement parallèle des codes-barres ?

Les méthodes statiques d'IronBarcode sont sans état et à l'abri des threads. Utilisez Parallel.ForEach directement sur les listes de fichiers sans gestion d'instance par thread. BarcodeReaderOptions.MaxParallelThreads contrôle le budget interne des threads.

Quelles propriétés de résultat changent lors de la migration de Telerik Barcode vers IronBarcode ?

Renommages courants : BarcodeValue devient Value, BarcodeType devient Format. Les résultats d'IronBarcode ajoutent également Confidence et PageNumber. Une recherche et un remplacement à l'échelle de la solution gèrent les renommages dans le code existant de traitement des résultats.

Comment configurer l'octroi de licences IronBarcode dans un pipeline CI/CD ?

Stockez IRONBARCODE_LICENSE_KEY en tant que secret de pipeline et attribuez IronBarCode.License.LicenseKey dans le code de démarrage de l'application. Un seul secret couvre tous les environnements, y compris le développement, les tests, la mise en scène et la production.

IronBarcode prend-il en charge la génération de codes QR avec un style personnalisé ?

Oui. QRCodeWriter.CreateQrCode() prend en charge les couleurs personnalisées via ChangeBarCodeColor(), l'intégration de logos via AddBrandLogo(), les niveaux de correction d'erreur configurables et plusieurs formats de sortie, notamment PNG, JPG, PDF et stream.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi