IRONSOFTWAREHOME
COMPARER À D'AUTRES COMPOSANTS

codeur à barres vs Code-barres IronBarcode : génération multi-package vs génération et lecture à package unique

Curtis Chau
Curtis Chau
Updated: 7 mai 2026

Pour générer un seul PNG avec Barcoder, vous installez deux paquets, importez trois espaces de noms, encodez avec une classe spécifique au format, créez un moteur de rendu avec un objet d'options, ouvrez un flux, effectuez le rendu dans celui-ci et supprimez le flux. Voilà tout le chemin du bonheur — et cela ne concerne que l'écriture. codeur à barres ne possède aucune API de lecture. La licence MIT et le caractère open source de la bibliothèque la rendent attrayante au premier abord, notamment pour les équipes qui cherchent à éviter les dépendances commerciales. Mais cette architecture fragmentée — deux packages NuGet minimum, une classe d'encodeur différente pour chaque format de code-barres et un pipeline de rendu qui sépare complètement l'encodage et la sortie — crée de réelles frictions dès que les exigences dépassent le scénario de génération à format unique le plus simple.

Comprendre le code-barres

Barcoder est une bibliothèque open source de génération de codes-barres .NET disponible sur NuGet sous licence MIT. Il encode les données dans des formats de code-barres tels que Code128, QR, DataMatrix, EAN-13, PDF417et autres. La philosophie de conception sépare entièrement l'encodage du rendu – la bibliothèque principale produit un objet IBarcode (une structure de données), et un paquet de rendu séparé convertit cet objet en une image.

Les conséquences pratiques de cette conception sont visibles dès la première installation. Deux packages NuGet sont nécessaires avant que toute sortie PNG soit possible : Barcoder pour l'encodage et Barcoder.Renderer.Image pour le rendu. Si une sortie SVG est également nécessaire, un troisième package — Barcoder.Renderer.Svg — doit être ajouté. Ces packages sont versionnés indépendamment, ce qui signifie que les mises à jour de l'un ne s'alignent pas automatiquement sur les autres, et leur synchronisation au sein d'un projet devient une tâche de maintenance récurrente.

Caractéristiques architecturales clés du lecteur de codes-barres :

  • Deux packages NuGet requis pour la sortie PNG : Barcoder pour l'encodage et Barcoder.Renderer.Image pour le rendu en formats d'image
  • Classes d'encodeur spécifiques au format : Chaque type de code-barres a son propre encodeur dans son propre espace de noms — Code128Encoder, QrEncoder, DataMatrixEncoder, et ainsi de suite
  • IBarcode n'a pas de méthodes de sortie : Le résultat de l'encodage est un objet de données simple. Un moteur de rendu doit être construit séparément, un flux ouvert, rendu dans lequel il est effectué, puis fermé.
  • Le rendu d'images ne prend plus en charge .NET Framework : les équipes utilisant .NET Frameworkne peuvent plus utiliser le package de rendu d'images.
  • Aucune capacité de lecture : codeur à barres ne peut pas décoder les codes-barres à partir d'images, de fichiers ou de toute autre source.
  • Versionnage indépendant des paquets : Barcoder et Barcoder.Renderer.Image peuvent diverger lors des mises à jour de dépendances

Flux de travail de génération multi-packages

Le récit de l'installation illustre immédiatement la différence d'envergure. Avec Barcoder, la sortie PNG de base nécessite deux packages distincts :

dotnet add package Barcoder
dotnet add package Barcoder.Renderer.Image
SHELL

Le flux de travail complet pour générer un code-barres Code128 et l'enregistrer au format PNG nécessite trois importations d'espace de noms, un appel d'encodeur spécifique au format, une construction de rendu avec un objet d'options, un flux de fichiers et un appel de rendu :

using Barcoder;
using Barcoder.Code128;
using Barcoder.Renderers;

IBarcode barcode = Code128Encoder.Encode("PRODUCT-12345", false);

var renderer = new ImageRenderer(new ImageRendererOptions
{
    ImageFormat = ImageFormat.Png,
    PixelSize = 2,
    BarHeightFor1DBarcode = 50
});

using var stream = File.OpenWrite("barcode.png");
renderer.Render(barcode, stream);

Changer le format des codes-barres ne se résume pas à modifier un paramètre ; cela nécessite d'importer un espace de noms différent et d'appeler une classe différente. Code128Encoder.Encode prend un booléen pour includeChecksum, QrEncoder.Encode prend un niveau de correction d'erreur et deux booléens supplémentaires, et DataMatrixEncoder.Encode ne prend que la chaîne. Il n'existe pas d'interface unifiée pour créer un code-barres dans un format spécifique.

Comprendre IronBarcode

IronBarcode est une bibliothèque commerciale .NET de codes-barres qui permet la génération et la lecture via un seul package NuGet . Il utilise un modèle d'API statique construit autour de deux classes principales — BarcodeWriter pour la génération et BarcodeReader pour la lecture — et route toute la sélection de formats à travers l'énumération BarcodeEncoding plutôt que par des classes ou espaces de noms spécifiques au format.

La bibliothèque est conçue pour minimiser la distance entre l'écriture de la première ligne de code-barres et l'obtention d'un résultat fonctionnel. La génération, la lecture, la prise en charge des PDF, les codes QR avec logos intégrés et tous les types de sortie sont inclus dans un seul package avec une seule version à suivre.

Caractéristiques principales d' IronBarcode:

  • Un seul package NuGet : IronBarcode couvre toutes les fonctionnalités — génération, lecture, PDF et tous les formats de sortie
  • Sélection de format unifiée : Tous les types de code-barres sont adressés par les valeurs d'énumération @@--CODE-978@@; no format-specific imports or classes
  • Méthodes de sortie sur l'objet de résultat : GeneratedBarcode expose SaveAsPng, ToPngBinaryData, ToStream, SaveAsSvg, et ResizeTo directement
  • Capacité de lecture native : BarcodeReader.Read() décode à partir de fichiers image, tableaux de bytes, flux et PDFs sans bibliothèque secondaire
  • Prise en charge de MAUI, Docker, AWS Lambda et Azure : Cibles de déploiement documentées au-delà des scénarios standard de bureau et de serveur
  • Prise en charge complète du .NET Frameworket des versions modernes de .NET : du .NET Framework4.6.2 au .NET 9

Comparaison des fonctionnalités

Fonctioncodeur à barresCode-barres IronBarcode
Packages NuGet requis2 minimum1
génération de codes-barresOuiOui
Lecture de codes-barresNonOui
LicenceMIT (logiciel libre)Commercial
Prise en charge du .NET FrameworkDéposé dans le moteur de rendu d'images.NET Framework4.6.2+
Lecture de PDFNonOui
QR avec logoNonOui

Comparaison détaillée des fonctionnalités

Fonctioncodeur à barresCode-barres IronBarcode
Génération
Génération Code128OuiOui
génération de code QROuiOui
Génération de DataMatrixOuiOui
EAN-13, PDF417OuiOui
QR avec logo intégréNonOui — .AddBrandLogo(path)
Format sélectionné via énumérationNon — une classe d'encodeur distincte par formatOui — BarcodeEncoding enum
Sortir
Sortie PNGOui (via Barcoder.Renderer.Image)Oui — .SaveAsPng()
Sortie SVGOui (via Barcoder.Renderer.Svg)Oui — .SaveAsSvg()
Sortie de données binairesOui (via MemoryStream)Oui — .ToPngBinaryData()
Flux de sortieOui (gestion manuelle du flux)Oui — .ToStream()
API de redimensionnement directNon — PixelSize facteur d'échelle seulementOui — .ResizeTo(width, height)
En lisant
Lire à partir d'un fichier imageNonOui
Lire le PDFNonOui
Lecture à partir du fluxNonOui
Détection de plusieurs codes-barresNonOui — ExpectMultipleBarcodes
Contrôle de la vitesse de lectureNonOui — ReadingSpeed enum
Plateforme
.NET Core / .NET 5+OuiOui
.NET FrameworkDéposé dans le moteur de rendu d'images.NET Framework4.6.2+
.NET 9Non documentéOui
MAUI (iOS, Android, Windows, macOS)NonOui
Docker / Azure / AWS LambdaNon documentéOui
Conditionnement
Risque lié au versionnage indépendant des paquetsOuiNon — colis unique
Espace de noms par formatOuiNon — unique using IronBarCode
Licence
Modèle de licenceMIT (logiciel libre)Commercial
TarifsGratuitLite 749 $, Plus 1 499 $, Professional 2 999 $, Illimité 5 999 $

API de sélection et de génération de format

Le choix de la structure de sélection du format des codes-barres a des répercussions sur chaque partie du code source qui génère des codes-barres.

Approche par code-barres

Le système de codage à barres achemine la sélection du format via des classes d'encodeurs distinctes dans des espaces de noms séparés. Changer de formats signifie ajouter une nouvelle directive using et utiliser une classe différente avec une signature de méthode différente :

// Code128
using Barcoder.Code128;
IBarcode barcode = Code128Encoder.Encode("data", false);

// QR Code
using Barcoder.Qr;
IBarcode barcode = QrEncoder.Encode("data", ErrorCorrectionLevel.M, false, false);

// DataMatrix
using Barcoder.DataMatrix;
IBarcode barcode = DataMatrixEncoder.Encode("data");

Chaque encodeur possède son propre contrat de paramètres. Ajouter un nouveau format à un projet existant ne se résume pas à un simple changement d'un mot : il s'agit d'importer un nouvel espace de noms, d'apprendre une nouvelle classe et de comprendre de nouveaux paramètres.

Approche IronBarcode

IronBarcode route toute la sélection de formats à travers l'énum BarcodeEncoding dans la classe unifiée BarcodeWriter. L'ajout d'un nouveau format consiste à modifier un seul mot la valeur de l'énumération :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Code128
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).SaveAsPng("code128.png");

// DataMatrix
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix).SaveAsPng("dm.png");

// QR — dedicated method
QRCodeWriter.CreateQrCode("data", 500).SaveAsPng("qr.png");

// QR with logo
QRCodeWriter.CreateQrCode("data", 500)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded.png");

Pour une utilisation en production, ajoutez la clé de licence au démarrage de l'application :

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

La documentation relative à la génération de codes-barres IronBarcode couvre l'ensemble des options de génération, y compris le style, les marges et la personnalisation des couleurs.

Options de rendu et de sortie

L'obtention des données issues des codes-barres sous différentes formes (fichier, données binaires, flux) est une exigence commune que chaque bibliothèque gère de manière très différente.

Approche par code-barres

La séparation entre l'encodage et le rendu chez codeur à barres est un principe architectural, mais elle engendre une surcharge à chaque changement de format de sortie. Sauvegarder dans un fichier nécessite l'ouverture d'un FileStream. Obtenir des données binaires nécessite l'ouverture d'un MemoryStream et l'appel de ToArray(). Chaque scénario de sortie nécessite la construction d'un moteur de rendu avec un objet d'options :

// File output
var renderer = new ImageRenderer(new ImageRendererOptions
{
    ImageFormat = ImageFormat.Png,
    PixelSize = 3,
    BarHeightFor1DBarcode = 80
});
using var stream = File.OpenWrite("barcode-large.png");
renderer.Render(barcode, stream);

// Binary data via MemoryStream
using var ms = new MemoryStream();
renderer.Render(barcode, ms);
byte[] pngBytes = ms.ToArray();

Le contrôle de la taille est indirect : PixelSize est un multiplicateur d'échelle sur la taille du module de code-barres, pas une spécification directe de largeur et de hauteur.

Approche IronBarcode

IronBarcode retourne un objet GeneratedBarcode à partir duquel toute forme de sortie peut être atteinte par des appels de méthode enchaînés. Aucune construction de moteur de rendu, aucune gestion de flux :

using IronBarCode;

var barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
    .ResizeTo(400, 100);

// File
barcode.SaveAsPng("barcode.png");

// Bytes
byte[] pngBytes = barcode.ToPngBinaryData();

// Stream
System.IO.Stream stream = barcode.ToStream();

.ResizeTo(width, height) prend des dimensions de pixels explicites et s'enchaîne avec toute méthode de sortie sur le même objet.

Lecture des codes-barres

L'absence d'une API de lecture dans codeur à barres est une contrainte architecturale stricte, et non un choix de configuration.

Approche par code-barres

Le codeur à barres ne possède aucune capacité de lecture ou de décodage. Il n'existe pas d'API, aucune API prévue et aucune solution de contournement au sein de la bibliothèque. Si une application a besoin de lire des codes-barres, une deuxième bibliothèque — une dépendance NuGet distincte avec sa propre interface API et sa propre version à suivre — doit être ajoutée en plus de Barcoder. Cela signifie au minimum deux dépendances liées à la lecture : codeur à barres pour la génération et un autre élément pour la lecture.

Approche IronBarcode

IronBarcode prend en charge à la fois la génération et la lecture avec le même package et des modèles d'API cohérents. La méthode BarcodeReader.Read() accepte nativement les fichiers image, les tableaux de bytes, les flux et les PDFs :

using IronBarCode;

// Read from image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
    Console.WriteLine(result.Value);
    Console.WriteLine(result.Format);
}

// Lire le PDF natively
var pdfResults = BarcodeReader.Read("document.pdf");

// Read multiple barcodes from one image
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true
};
var multiResults = BarcodeReader.Read("warehouse-label.png", options);
C#

La lecture des fichiers PDF est native — aucune extraction d'image intermédiaire, aucune bibliothèque de conversion, aucun package supplémentaire. La documentation relative à la lecture des codes-barres IronBarcode couvre les PDF multipages, la lecture de zones d'intérêt et l'optimisation des performances.

Référence de mappage d'API

codeur à barresCode-barres IronBarcode
Code128Encoder.Encode("data", false)BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
QrEncoder.Encode("data", ErrorCorrectionLevel.M, false, false)QRCodeWriter.CreateQrCode("data", 500)
DataMatrixEncoder.Encode("data")BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix)
new ImageRenderer(new ImageRendererOptions { ... })Pas nécessaire — la sortie est enchaînée depuis GeneratedBarcode
renderer.Render(barcode, stream).SaveAsPng(path) / .ToPngBinaryData() / .ToStream()
IBarcode (structure de données, pas de méthodes de sortie)GeneratedBarcode (a SaveAsPng, ToPngBinaryData, ToStream, ResizeTo, etc.)
Barcoder + Barcoder.Renderer.Image (2 packages)IronBarcode (1 package)
using Barcoder.Code128using IronBarCode (espace de noms unique, tous formats)
using Barcoder.Qrusing IronBarCode
using Barcoder.DataMatrixusing IronBarCode
API de lecture indisponibleBarcodeReader.Read(path / bytes / stream / pdf)
Aucun moteur de rendu d'images .NET Framework.NET Framework4.6.2+
PixelSize + BarHeightFor1DBarcode options.ResizeTo(width, height)

Quand les équipes envisagent de passer de codeur à barres à IronBarcode

La lecture est ajoutée aux exigences

De nombreux projets débutent par de simples chaînes de génération : impression d'étiquettes, génération de codes pour les documents, intégration de codes-barres dans les rapports. codeur à barres prend en charge ces projets dès le départ. Lorsque la même application doit ultérieurement vérifier les codes-barres entrants, traiter des documents numérisés ou décoder les codes-barres des PDF téléchargés, codeur à barres n'offre aucune solution. L'équipe doit évaluer une deuxième bibliothèque, apprendre son API, gérer sa version NuGet séparément et gérer l'interface d'intégration entre les deux bibliothèques. Les équipes qui atteignent ce stade optent souvent pour une bibliothèque qui gère les deux aspects plutôt que de maintenir deux dépendances de codes-barres distinctes.

Rupture de compatibilité avec le .NET Framework

Barcoder.Renderer.Image a abandonné le support .NET Framework. Les équipes qui gèrent des services ou des applications de bureau sur .NET Framework4.x et qui mettent à jour le package de rendu d'images lors de la maintenance de routine des dépendances rencontrent un échec de compilation. Il ne s'agit pas d'une erreur de configuration, mais d'une décision de la bibliothèque concernant la prise en charge de la plateforme. Code-barres IronBarcode prend en charge .NET Framework4.6.2 à .NET 9sans packaging spécial ni dépendances conditionnelles pour différentes cibles.

La dérive des versions de packages crée des problèmes de coordination

Avec Barcoder et Barcoder.Renderer.Image versionnés indépendamment, mettre à jour l'un sans l'autre lors d'un rafraîchissement de dépendance peut introduire des incompatibilités subtiles. Dans un dépôt comportant plusieurs projets — chacun utilisant une version différente de chaque package de rendu — garantir un comportement cohérent entre les projets devient un problème de coordination qui s'accroît avec la taille de l'équipe. Les équipes qui utilisent désormais Code-barres IronBarcode indiquent que la gestion d'un seul package et d'une seule version élimine complètement ce type de problème.

La couverture des formats s'étend au fil du temps

Un projet pourrait commencer par des étiquettes Code128, puis ajouter ultérieurement des codes QR pour les liens destinés aux clients, puis DataMatrix pour répondre aux exigences de conformité. Avec Barcoder, chaque ajout de format implique une nouvelle importation d'espace de noms, une classe d'encodeur différente avec des paramètres de méthode différents, et potentiellement un nouveau package NuGet . Avec IronBarcode, l'ajout d'un format est un changement de valeur enum BarcodeEncoding dans un appel existant. Les équipes dont la feuille de route prévoit l'extension de la couverture des formats de codes-barres trouvent le modèle basé sur les énumérations beaucoup plus facile à maintenir.

Exigences de déploiement MAUI et multiplateformes

Barcoder ne documente pas la prise en charge des déploiements MAUI, Docker, AWS Lambda ou Azure. Les équipes qui développent des applications MAUI multiplateformes ou qui déploient le traitement des codes-barres sur une infrastructure sans serveur constatent que la documentation et les tests de codeur à barres ne couvrent pas ces cibles. Code-barres IronBarcode documente et teste activement le déploiement sur les cibles iOS, Android, Windows, macOS MAUI, les conteneurs Docker et les principales plateformes cloud.

Considérations courantes en matière de migration

Le IBarcode au GeneratedBarcode Changement de Type

Le code codeur à barres qui stocke une variable IBarcode et la passe à un renderer plus tard doit être refactorisé. Dans IronBarcode, GeneratedBarcode porte ses propres méthodes de sortie — il n'y a pas de phase de rendu séparée. Toute signature de méthode qui accepte actuellement IBarcode devrait changer pour accepter GeneratedBarcode, et l'appel de rendu à l'intérieur de cette méthode devrait devenir un appel direct comme .SaveAsPng() ou .ToPngBinaryData(). Le système de types fera émerger chaque emplacement qui nécessite une mise à jour lors de la compilation — IBarcode ne résoudra pas après que les packages codeur à barres ont été supprimés.

PixelSize N'a Pas d'Équivalent Direct

L'PixelSize de codeur à barres est un multiplicateur d'échelle sur la taille naturelle du module du code-barres, pas une dimension de pixel explicite. La largeur de sortie dépend du contenu du code-barres, de son format et du multiplicateur, combinés. Code-barres IronBarcode utilise .ResizeTo(width, height) avec des dimensions de pixels explicites. Pendant la migration, mesurez les dimensions de sortie réelles que le code codeur à barres existant produit et utilisez ces valeurs dans l'appel .ResizeTo() :

BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .ResizeTo(300, 80)
    .SaveAsPng("barcode.png");

Consolidation des espaces de noms

Les projets codeur à barres accumulent des instructions using Barcoder.* — une par format utilisé. Pendant la migration, toutes ces instructions se réduisent à une seule using IronBarCode;. Une recherche de using Barcoder à travers la solution identifiera chaque fichier nécessitant une mise à jour. Le nombre de fichiers concernés est généralement plus élevé que prévu par les équipes, car chaque fichier utilisant un format de code-barres importe son propre espace de noms spécifique à ce format.

Modifications du chemin de sortie SVG

Les projets utilisant Barcoder.Renderer.Svg et la classe SvgRenderer remplacent le pipeline renderer par un appel de méthode direct sur GeneratedBarcode :

// Before
var svgRenderer = new SvgRenderer();
using var stream = File.OpenWrite("barcode.svg");
svgRenderer.Render(barcode, stream);

// After
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .SaveAsSvg("barcode.svg");

Le package Barcoder.Renderer.Svg peut être retiré une fois que tous les sites de rendu SVG ont été migrés.

Fonctionnalités supplémentaires IronBarcode

Outre les points de comparaison évoqués ci-dessus, Code-barres IronBarcode inclut des fonctionnalités pour lesquelles codeur à barres n'a pas d'équivalent :

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

IronBarcode prend en charge .NET Framework4.6.2, .NET Core 2.x, .NET 5, .NET 6, .NET 7, .NET 8 et .NET 9, avec des mises à jour régulières. La version 3 de codeur à barres a délaissé le support .NET Frameworkdans le package de rendu d'image. Pour les équipes qui ont besoin d'une longue période de support à travers .NET Frameworket les cibles modernes .NET, la matrice de compatibilité à package unique d'IronBarcode élimine la nécessité de gérer des dépendances conditionnelles par cible.

Conclusion

Barcoder et Code-barres IronBarcode reflètent des portées fondamentalement différentes. codeur à barres est une bibliothèque de génération seulement avec une séparation de principe entre l'encodage et le rendu — la structure de données IBarcode et le pipeline de rendu sont des couches distinctes par conception. Code-barres IronBarcode est une bibliothèque complète de codes-barres où la génération et la lecture partagent un seul package, un seul espace de noms et une API statique cohérente. La différence architecturale devient la plus visible lorsque les exigences augmentent : la conception multi-packages, multi-espaces de noms et sans lecture de codeur à barres fait de chaque ajout une tâche structurelle, tandis Code-barres IronBarcode traite les nouveaux ajouts de format ou de fonctionnalité comme des modifications de configuration.

Barcoder est le choix idéal lorsqu'un projet a uniquement besoin de génération de codes-barres, cible exclusivement .NET Core , utilise un petit nombre de formats de codes-barres et que la licence MIT est une exigence absolue. La bibliothèque fonctionne comme prévu dans ces limites, et pour les projets à périmètre restreint sans exigences de lecture ni cibles .NET Framework, l'option open source gratuite est raisonnable.

IronBarcode est le choix idéal lorsqu'un projet nécessite à la fois la lecture et la génération, cible .NET Frameworkou les déploiements MAUI multiplateformes, prévoit d'ajouter des formats de codes-barres au fil du temps ou requiert un déploiement dans des environnements Docker ou cloud. Le modèle à package unique et la sélection de format basée sur une énumération éliminent la surcharge qui s'accumule avec codeur à barres à mesure que la portée du projet s'élargit.

La décision pratique se résume à une question de trajectoire. Un projet qui restera assurément un simple générateur à format unique sans aucune exigence de lecture peut être parfaitement servi par Barcoder. Un projet présentant la moindre ambiguïté quant à ses exigences en matière de codes-barres (ajout de formats, ajout de lecture, déploiement multiplateforme) se heurtera aux limites architecturales de codeur à barres plus tôt que prévu. Les deux bibliothèques sont des outils honnêtes ; La question est de savoir laquelle correspond à l'étendue réelle des travaux.

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