IRONSOFTWAREHOME
COMPARER À D'AUTRES COMPOSANTS

BarcodeLibvs Code-barres IronBarcode : Où s'arrête le générateur open source

Curtis Chau
Curtis Chau
Updated: 26 avril 2026

BarcodeLib est une bibliothèque .NET open source de longue date que la plupart des développeurs découvrent éventuellement qu'elle ne peut que créer des codes-barres. Une partie d'entre eux découvre également le conflit de version de SkiaSharp - généralement au pire moment possible, lorsqu'ils viennent d'ajouter BarcodeLibà un projet MAUI ou Blazor qui dépend déjà de SkiaSharp, et que la construction commence à générer des avertissements NU1608. Cet article couvre les deux problèmes. BarcodeLibest une bibliothèque légitime avec un cas d'utilisation clair. Comprendre où cela s'arrête est la question pratique.

Comprendre BarcodeLib

BarcodeLib est une bibliothèque open source de génération d'images de codes-barres pour .NET, maintenue sur GitHub par Brad Barnhill. Elle est active depuis 2007 et prend en charge environ 30 variantes de symbologies 1D. La licence Apache 2.0 autorise son utilisation commerciale gratuite. Pour la génération pure de codes-barres linéaires - créant une image à partir d'une chaîne - elle fonctionne de manière fiable et a bien servi ce but au fil des nombreuses années d'utilisation active.

L'API est basée sur des instances. Vous créez un objet Barcode, définissez des propriétés et appelez Encode() avec une constante de type, une chaîne de données et des dimensions en pixels. Le résultat est un SKImage (SkiaSharp) que vous encodez ensuite et enregistrez ou diffusez selon les besoins. Ce flux de travail est abordable, et pour les projets où l'exigence est strictement d'imprimer des images de codes-barres linéaires - étiquettes d'expédition, étiquettes d'inventaire, étiquettes de prix au détail - il est suffisant.

Principales caractéristiques architecturales de BarcodeLib :

  • Portée de génération uniquement : la bibliothèque ne possède aucune API de lecture ou de décodage d'aucune sorte ; sa surface publique entière est orientée vers la production d'images à partir de chaînes de données
  • API basée sur une instance : Chaque opération nécessite l'instanciation d'un objet Barcode et la configuration des propriétés d'étiquette et de police avant d'appeler Encode()
  • Retourne SKImage : La sortie est un objet image SkiaSharp, qui nécessite une étape SKEncodedImageFormat et un flux pour produire un fichier ou un tableau d'octets
  • Symbologies uniquement 1D: Prend en charge environ 30 formats linéaires, y compris Code128, EAN-13, UPC-A, et Code39; l'énumération BarcodeStandard.Type sur la source actuelle 3.x ne contient aucun code QR, Data Matrix, PDF417, Aztec, ou autre entrée 2D
  • Dépendance SkiaSharp (v3.x) : La série 3.x a remplacé System.Drawing.Common par SkiaSharp pour permettre la prise en charge multiplateforme ; Cela introduit un risque de conflit de versions lorsque d'autres packages du projet dépendent également de SkiaSharp.
  • Gratuit, aucune clé de licence requise : la licence Apache 2.0 couvre l'utilisation commerciale sans clé d'exécution ni activation nécessaire.

Modèle de génération de base de BarcodeLib

Le flux de travail standard de génération BarcodeLibnécessite de créer une instance, de configurer des propriétés, et d'appeler Encode() avec des dimensions :

using BarcodeStandard;
using SkiaSharp;

var b = new Barcode();
b.IncludeLabel = true;
SKImage img = b.Encode(BarcodeStandard.Type.Code128, "PRODUCT-12345", 300, 100);

using var stream = File.OpenWrite("barcode.png");
img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);

Voici le flux de travail de génération complet. Le modèle d'affectation de propriétés est la conception : la configuration se fait sur l'instance avant l'appel Encode(), et la valeur de retour est un SKImage qui doit être encodé et écrit dans un flux.

Comprendre IronBarcode

IronBarcode est une bibliothèque commerciale .NET de codes-barres qui couvre à la fois la génération et la lecture dans un seul package. Il s'installe via NuGet, fonctionne sur .NET Framework 4.6.2 à .NET 9 et est compatible avec Windows, Linux, macOS, Docker, Azure et AWS Lambda. La bibliothèque est développée et maintenue par Iron Software selon un modèle de support commercial.

L'API de génération est statique et fluide — aucune instance à créer, aucune propriété à définir avant l'appel principal. Les options de configuration se chaînent sur le résultat de BarcodeWriter.CreateBarcode() ou QRCodeWriter.CreateQrCode(). Les méthodes de sortie à la fin de la chaîne — .SaveAsPng(), .ToPngBinaryData(), .ToAnyImageData() — éliminent le modèle MemoryStream intermédiaire que BarcodeLibnécessite. La lecture fait partie intégrante du même package, sans bibliothèque séparée ni intégration ZXing .NET à maintenir.

Caractéristiques principales d' IronBarcode:

  • Génération et lecture au sein d'un même package : BarcodeWriter gère la génération ; BarcodeReader gère la lecture ; Les deux sont inclus dans la même installation NuGet.
  • API fluide statique : aucune instanciation requise ; chaînes de configuration après CreateBarcode() en utilisant des méthodes fluides
  • Sortie directe de tableau d'octets : .ToPngBinaryData() retourne byte[] sans étape MemoryStream
  • Prise en charge PDF des deux côtés : BarcodeReader.Read() accepte nativement les fichiers PDF ; Les résultats de la génération peuvent être intégrés dans des fichiers PDF.
  • Aucune dépendance à SkiaSharp : indépendant du graphique de versions de SkiaSharp, éliminant les conflits NU1608 dans MAUI et d'autres projets
  • Licence commerciale avec SLA : Prix : 749 $ à 5 999 $ perpétuelle ; inclut un support commercial et une cadence de mise à jour garantie
  • Réglage ReadingSpeed : BarcodeReaderOptions permet d'échanger la minutie du scan pour des performances à volume

Comparaison des fonctionnalités

FonctionBarcodeLibCode-barres IronBarcode
génération de codes-barresOui (1D uniquement)Oui (1D et 2D)
Lecture de codes-barresNonOui
2D symbologies (QR, Data Matrix, PDF417, Aztec)NonOui
lecture de codes-barres PDFNonOui
Dépendance SkiaSharp dans le graphiqueOui (v3.x)Non
API chaînable fluideNonOui
LicenceApache 2.0 (gratuit)749 $ – 5 999 $ perpétuel

Comparaison détaillée des fonctionnalités

FonctionBarcodeLibCode-barres IronBarcode
Génération
Génération Code128OuiOui
Génération EAN-13 / UPC-AOuiOui
génération de code QRNonOui (avec intégration de logo)
Matrice de données / PDF417 / AztèqueNonOui
Couverture de symbologie 1D~30 variantes30+ variantes
API de génération chaînable fluideNonOui
Sortie byte[] directeManuel (encodage de flux).ToPngBinaryData()
Génération de PDFNonOui
En lisant
Lecture du code-barres à partir de l'imageNonOui (BarcodeReader.Read())
Lecture de code-barres à partir d'un PDFNonOui (natif, sans bibliothèque supplémentaire)
Détection de plusieurs codes-barresNonOui (ExpectMultipleBarcodes)
Réglage de la vitesse de lectureN/AOui (énumération ReadingSpeed)
Plateforme
FenêtresOuiOui
Linux / macOSPartiellement (dépendant de SkiaSharp)Complet
Docker / conteneurConfiguration requiseOui
Compatibilité du projet MAUIRisque de conflit (NU1608)Aucun conflit
.NET Framework 4.6.2+OuiOui
.NET 6-9Oui (SkiaSharp 3.x requis)Oui
Licence
Logiciel libre / gratuitOui (Apache 2.0)Non
Support commercial / SLANonOui
Clé de licence requiseNonOui
TarifsGratuit749 $ – 5 999 $ perpétuel

API de génération de codes-barres

Les APIs de génération représentent différentes philosophies de conception : BarcodeLibutilise une configuration d'instance mutable tandis qu'IronBarcode utilise une chaîne fluide sur un point d'entrée statique.

Approche BarcodeLib

BarcodeLib nécessite de construire une instance et de définir des propriétés avant d'appeler Encode() avec des dimensions. La sortie est un SKImage :

using BarcodeStandard;
using SkiaSharp;

public byte[] GenerateCode128(string data)
{
    var b = new Barcode();
    b.IncludeLabel = true;
    SKImage img = b.Encode(BarcodeStandard.Type.Code128, data, 300, 100);

    using var ms = new MemoryStream();
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
    return ms.ToArray();
}

Le type de retour SKImage signifie que la sortie de tableau d'octets nécessite un appel d'encodage SKEncodedImageFormat et un MemoryStream. La propriété IncludeLabel est un interrupteur boolean — BarcodeLibrend la chaîne de données encodée comme l'étiquette visible sous les barres.

Approche IronBarcode

La génération de codes-barres par Code-barres IronBarcode est entièrement statique. Les chaînes de configuration après CreateBarcode(), et les méthodes de sortie terminent la chaîne directement :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public byte[] GenerateCode128(string data)
{
    return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .ResizeTo(300, 100)
        .AddBarcodeValueTextBelowBarcode()
        .ToPngBinaryData();
}

.ToPngBinaryData() retourne directement le tableau d'octets — pas d'objet Image ou MemoryStream intermédiaire. .AddBarcodeValueTextBelowBarcode() rend la chaîne de données encodée comme étiquette sous les barres. Pour les scénarios de génération avancés, consultez la documentation sur la génération de codes-barres IronBarcode .

Capacité de lecture des codes-barres

La lecture constitue la principale frontière fonctionnelle entre ces deux bibliothèques. BarcodeLibne possède aucune capacité de lecture ; Code-barres IronBarcode intègre un moteur de lecture complet dans le même package.

Approche BarcodeLib

BarcodeLib ne possède pas d'API de lecture. Il n'y a pas de méthode Decode(), Scan(), ou ReadBarcode(). La lecture n'a jamais fait partie de la conception de la bibliothèque. Toute tentative d'appel à une méthode de décodage entraîne une erreur de compilation :

using BarcodeStandard;
using SkiaSharp;

var b = new Barcode();

// There is no Decode, Scan, or Read method on Barcode.
// b.Decode("barcode.png");      // does not exist
// b.Scan("barcode.png");        // does not exist
// b.ReadBarcode("barcode.png"); // does not exist

// The only public operation is generation:
SKImage img = b.Encode(BarcodeStandard.Type.Code128, "PRODUCT-12345", 300, 100);

Les équipes qui ont besoin à la fois de la génération et de la lecture en parallèle de BarcodeLibdoivent ajouter une deuxième bibliothèque — généralement ZXing .NET — ce qui introduit sa propre charge de gestion des dépendances et une deuxième surface d'API à maintenir.

Approche IronBarcode

BarcodeReader.Read() accepte les fichiers d'image, les fichiers PDF, les flux, et les objets System.Drawing.Bitmap. La lecture d'un fichier PDF ne nécessite aucune bibliothèque supplémentaire :

using IronBarCode;

// Read from an image
var results = BarcodeReader.Read("barcode.png");
Console.WriteLine(results.First().Value);  // "PRODUCT-12345"

// Read all barcodes from a PDF — no separate PDF library needed
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}

// Tune reading for speed vs. thoroughness
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true
};
var multiResults = BarcodeReader.Read("warehouse-scan.png", options);

L'énumération ReadingSpeed permet d'ajuster les performances de scan pour les scénarios à haut volume. Pour obtenir des conseils sur la configuration de lecture, consultez la documentation de lecture IronBarcode .

Conflit de dépendance SkiaSharp

La dépendance SkiaSharp introduite dans BarcodeLib3.x crée un type de conflit qui n'existe pas dans IronBarcode.

Approche BarcodeLib

À partir de BarcodeLib3.x, la bibliothèque a introduit SkiaSharp comme backend graphique pour remplacer System.Drawing.Common, devenu exclusif à Fenêtresaprès .NET 6. BarcodeLib3.1.5 déclare SkiaSharp >= 2.88.8. Si un projet utilise déjà SkiaSharp via une autre dépendance — courant dans les projets MAUI utilisant SkiaSharp.Views.Maui et Microsoft.Maui.Graphics, qui tendent vers SkiaSharp 3.x — les versions résolues peuvent ne pas converger. Le résultat est au minimum un avertissement NU1608 et au pire un échec de liaison d'assembly lors de l'exécution :

warning NU1608: Detected package version outside of dependency constraint:
BarcodeLib 3.1.5 requires SkiaSharp (>= 2.88.8) but
version SkiaSharp 3.116.1 was resolved.
Text

Forcer une résolution via des références de package explicites est une option, bien que cela ne garantisse pas la compatibilité à l'exécution :

<ItemGroup>
  <PackageReference Include="BarcodeLib" Version="3.1.5" />
  <PackageReference Include="SkiaSharp" Version="3.116.1" />
  <PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="3.116.1" />
</ItemGroup>
XML

Même avec des substituts explicites, la compatibilité dépend du fait que les appels d'API internes de BarcodeLibcorrespondent à ce que la version résolue de SkiaSharp expose. En tant que projet maintenu par la communauté, BarcodeLibn'a pas de contrat de support commercial attaché à son rythme de sortie.

Approche IronBarcode

IronBarcode ne partage pas le graphe de dépendances SkiaSharp avec le code de l'application. Il n'y a pas de négociation de version à gérer, pas de NU1608 à diagnostiquer et aucun risque de liaison d'assemblage à l'exécution lié à la résolution de version de SkiaSharp. Les projets MAUI, les projets Blazor et toute autre application dépendant de SkiaSharp peuvent installer Code-barres IronBarcode sans aucun conflit de version. Pour les modèles d'intégration spécifiques à MAUI, consultez la documentation Code-barres IronBarcode MAUI .

Référence de mappage d'API

BarcodeLibCode-barres IronBarcode
new Barcode()API statique — aucune instance requise
b.Encode(BarcodeStandard.Type.Code128, "data", 300, 100)BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).ResizeTo(300, 100)
b.IncludeLabel = true.AddBarcodeValueTextBelowBarcode()
Retourne SKImage.SaveAsPng(path) / .ToPngBinaryData()
BarcodeStandard.Type.Code128BarcodeEncoding.Code128
BarcodeStandard.Type.Code39BarcodeEncoding.Code39
BarcodeStandard.Type.Ean13BarcodeEncoding.EAN13
BarcodeStandard.Type.UpcABarcodeEncoding.UPCA
Non supporté (pas de 2D dans BarcodeLib)BarcodeEncoding.QRCode (également QRCodeWriter)
API de lecture indisponibleBarcodeReader.Read(path)
SkiaSharp dans le graphique de dépendancePas de dépendance SkiaSharp

Quand les équipes envisagent de passer de BarcodeLibà IronBarcode

Exigence de lecture

Un système qui génère des étiquettes d'expédition depuis des mois se voit confier une nouvelle exigence : l'application doit également traiter les étiquettes retournées par les fournisseurs. L'intégration de l'entrepôt doit analyser les codes-barres figurant sur les manifestes d'expédition entrants. Un système de gestion documentaire doit indexer les codes-barres présents sur les fichiers PDF numérisés. BarcodeLibne répond à aucune de ces exigences : l'API de lecture n'existe pas. L'équipe évalue la possibilité d'ajouter ZXing .NET en plus de BarcodeLib, en tenant compte de la charge de maintenance que représenterait une double bibliothèque et des deux graphes de dépendances distincts, et conclut que la solution la plus simple consiste à utiliser une bibliothèque qui gère à la fois la génération et la lecture via une seule installation NuGet .

Conflit SkiaSharp dans un projet MAUI

Une équipe ajoute BarcodeLibà une application MAUI existante et rencontre immédiatement des avertissements NU1608 lors de la restauration. Ils investiguent, identifient le désaccord de version entre l'intervalle SkiaSharp attendu par BarcodeLibet la version requise par MAUI, ajoutent des remplacements explicites <PackageReference> pour forcer une résolution, et réussissent à valider la build. Ils rencontrent alors un plantage lors de l'exécution sur l'appareil lorsque les binaires natifs de SkiaSharp chargent la mauvaise version. La correction nécessite une analyse plus approfondie du journal de liaison de l'assemblage. Passer à Code-barres IronBarcode élimine le conflit à la source, non pas en trouvant une version compatible de SkiaSharp, mais en supprimant complètement la dépendance partagée.

Traitement des codes-barres PDF requis

Les applications qui génèrent des documents PDF avec des codes-barres intégrés (factures, bons de commande, manifestes d'expédition) doivent parfois relire ces codes-barres lors du traitement en aval. BarcodeLibgénère des images de codes-barres mais ne prend pas en charge le format PDF à aucune des deux extrémités. La lecture des codes-barres à partir d'un PDF avec BarcodeLibnécessite d'abord de convertir le PDF en images à l'aide d'une bibliothèque PDF distincte, puis de transmettre ces images à une bibliothèque de lecture distincte. Code-barres IronBarcode gère la chaîne complète nativement : BarcodeReader.Read("file.pdf") parcourt chaque page et renvoie tous les codes-barres détectés sans étape de rendu intermédiaire.

Option de code QR ou autre symbologie 2D apparaît

Les projets qui nécessitaient initialement uniquement des codes-barres linéaires évoluent souvent pour nécessiter une sortie en code QR, Data Matrix, PDF417, ou Aztec. BarcodeLibne génère aucune symbologie 2D dans sa série 3.x — l'énumération BarcodeStandard.Type ne contient aucun code QR ou autre entrée 2D — donc toute exigence 2D signifie ajouter une seconde bibliothèque ou remplacer BarcodeLibcomplètement. Les QRCodeWriter et BarcodeWriter d'IronBarcode couvrent le code QR (avec intégration de logo, contrôle de couleur, et réglage de correction d'erreurs), Data Matrix, PDF417, et Aztec via la même API fluide. Les équipes dont les exigences de symbologie passent en 2D trouvent que l'écart motive la décision de migration.

Considérations courantes en matière de migration

API d'instance vers API Fluent statique

Le code BarcodeLibutilise un modèle d'objet mutable : créez une instance Barcode, définissez des propriétés, appelez Encode(). Code-barres IronBarcode utilise un modèle fluide statique : appelez BarcodeWriter.CreateBarcode(), chaînez les méthodes de configuration, terminez par une méthode de sortie. Le code existant qui stocke une instance Barcode comme champ ou la transmet entre méthodes nécessitera une restructuration. La modification typique consiste à remplacer le bloc de définition de propriété par une chaîne de méthodes :

// The property setters on b become chained methods
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .AddBarcodeValueTextBelowBarcode()
    .SaveAsPng(outputPath);

SKImage à sortie directe

BarcodeLib 3.x retourne SKImage, qui nécessite SKEncodedImageFormat et un flux pour produire des octets. Tout code typé à SKImage ou passant par image.Encode(...).SaveTo(stream) nécessitera une mise à jour. La chaîne fluide d'IronBarcode se termine directement par le format de sortie souhaité — .SaveAsPng(), .ToPngBinaryData(), .ToAnyImageData() — éliminant le besoin de l'objet image intermédiaire et de l'étape d'encodage en flux.

Type Enum à Enum BarcodeEncoding

BarcodeLib 3.x utilise l'énumération BarcodeStandard.Type avec des valeurs PascalCase telles que BarcodeStandard.Type.Code128. Code-barres IronBarcode utilise l'énumération BarcodeEncoding avec des valeurs telles que BarcodeEncoding.Code128. Les valeurs 1D se mappent directement : Code128Code128, Ean13EAN13, UpcAUPCA, Code39Code39. Un grep pour BarcodeStandard.Type. à travers les fichiers .cs identifie toutes les occurrences nécessitant une mise à jour.

Nettoyage de référence SkiaSharp

Les projets ayant ajouté des entrées explicites <PackageReference Include="SkiaSharp"> uniquement pour résoudre les avertissements NU1608 de BarcodeLibpeuvent supprimer ces remplacements après le passage à IronBarcode. La commande dotnet list package --include-transitive confirme si SkiaSharp est toujours requis par d'autres packages dans le projet avant de le supprimer.

Fonctionnalités supplémentaires IronBarcode

Au-delà de la génération directe et de la comparaison de lecture, Code-barres IronBarcode inclut des fonctionnalités que BarcodeLibne propose pas :

Compatibilité .NET et préparation à l'avenir

IronBarcode prend en charge .NET Framework 4.6.2 à .NET 9 et maintient un rythme de publication régulier aligné sur le calendrier de publication de Microsoft .NET . Avec l'adoption croissante de .NET 10 jusqu'en 2026, le développement actif d'IronBarcode garantit la compatibilité ascendante sans nécessiter de modifications du projet. La bibliothèque fonctionne sans modification sous Windows, Linux, macOS, Docker, Azure et AWS Lambda. BarcodeLibbénéficie également d'un développement communautaire actif, bien que sa prise en charge multiplateforme dans la série 3.x dépende de la compatibilité de la version de SkiaSharp abordée dans les sections de comparaison ci-dessus. Pour les projets ciblant les versions modernes de .NET sur Linux ou dans des conteneurs, l'architecture multiplateforme sans dépendance d'IronBarcode évite la négociation de version introduite par le backend SkiaSharp de BarcodeLib.

Conclusion

BarcodeLib et Code-barres IronBarcode représentent différentes solutions pour la gestion des codes-barres en .NET. BarcodeLibest une bibliothèque gratuite, spécialisée dans la génération de codes, qui a rempli sa fonction de manière fiable pendant près de deux décennies. Code-barres IronBarcode est une bibliothèque commerciale qui couvre à la fois la génération et la lecture, avec une API statique fluide et sans dépendance à SkiaSharp. La différence ne réside pas dans la qualité au sein d'un périmètre commun, mais dans le périmètre lui-même.

BarcodeLib reste un choix approprié pour les projets avec des exigences stables, de génération linéaire uniquement sur Fenêtresou dans des environnements où le paysage des versions SkiaSharp est contrôlé. Son licence Apache 2.0, son coût nul et son API simple en font une solution pratique pour les systèmes d'étiquettes d'expédition, les générateurs de balises d'inventaire, et des applications similaires qui n'auront jamais besoin de numériser des codes-barres ou de produire des symbologies 2D.

IronBarcode devient le choix le plus pratique lorsque les exigences vont au-delà de la génération d'images linéaires : lorsque des capacités de lecture sont nécessaires, lorsque le projet est une application MAUI ou multiplateforme où des conflits de version SkiaSharp sont probables, lorsque le traitement des codes-barres PDF est sur la feuille de route, ou lorsque toute symbologie 2D (Code QR, Data Matrix, PDF417, Aztec) est requise. Le coût de licence commerciale représente la question de seuil - pour les équipes dont les exigences s'alignent avec ce que Code-barres IronBarcode ajoute par rapport à BarcodeLib, la solution à package unique et le support commercial constituent l'échange de valeur.

Le constat honnête est que la plupart des équipes ne commencent pas avec Code-barres IronBarcode dès le départ. Ils commencent par BarcodeLibcar c'est gratuit et suffisant. Ils migrent vers Code-barres IronBarcode lorsque leurs besoins dépassent les capacités de génération limitée de BarcodeLib. La migration est bien documentée et les modifications de l'interface API sont prévisibles. Comprendre où s'arrête BarcodeLib— et plus précisément qu'il s'arrête à la génération — est l'information pratique nécessaire pour prendre la bonne décision en matière de timing.

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 et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise