AIDE .NET

Refit C# (Comment ça marche pour les développeurs)

Introduction

Les meilleures fonctionnalités de deux bibliothèques puissantes sont combinées pour produire des applications incroyablement efficaces en intégrant Refit avec IronPDF en C#. Refit facilite l'utilisation des API RESTful en permettant aux développeurs de concevoir des interfaces API avec des caractéristiques C#, de générer des requêtes HTTP automatiquement, et de garantir un accès API type-sécurisé. À l'inverse, IronPDF offre un large éventail de fonctionnalités puissantes pour travailler avec des fichiers PDF, notamment la fusion et l'annotation de PDF ainsi que la conversion de contenu HTML. Ces bibliothèques permettent, lorsqu'elles sont combinées, des flux de travail fluides pour la présentation et l'extraction des données. Le développement d'applications axées sur les données peut être rendu plus efficace et productif en utilisant des outils tels que Refit pour récupérer des données à partir d'une API et IronPDF pour produire d'excellents rapports PDF approfondis à partir de ces données.

Qu'est-ce que le Refit C# ?

Refit est un framework open-source pour .NET qui utilise une méthodologie déclarative et typée pour simplifier le processus d'envoi de requêtes HTTP vers des API RESTful. Refit génère automatiquement le code client HTTP requis en spécifiant des points de terminaison d'API sous forme d'interfaces C# enrichies de caractéristiques. Cela permet de réduire considérablement le nombre d'éléments superflus et d'améliorer la lisibilité du code. En détectant les erreurs lors de la compilation plutôt que lors de l'exécution, cette technique garantit que les signatures des méthodes correspondent correctement aux points de terminaison de l'API.

En outre, Refit gère facilement la sérialisation et la désérialisation JSON, ce qui permet aux développeurs d'interagir avec des objets C# au lieu de convertir manuellement les réponses de l'API. En définissant les méthodes HTTP, les en-têtes et les paramètres directement dans les spécifications de l'interface, les attributs simplifient la configuration. Comme le code du client doit être moins modifié lorsque les points d'extrémité de l'API sont mis à jour, le code devient plus simple et plus facile à maintenir.

Par exemple, Refit peut générer la chaîne de requête HTTP GET requise pour le nom d'utilisateur en créant une méthode dans une interface avec un attribut [Get("/users/{id}")]. Cette demande peut alors être faite par le biais d'un appel de méthode à sécurité intrinsèque. Refit est une solution globalement plus productive pour les développeurs qui souhaitent intégrer des API dans des applications .NET en faisant abstraction des problèmes liés à la gestion des clients HTTP.

Refit C# (Comment ça fonctionne pour les développeurs) : Figure 1 - Refit : La bibliothèque REST automatique et type-safe pour .NET Core, Xamarin et .NET

Caractéristiques de Refit C&num ;

Disponibilité de l'API à sécurité de type

Refit détecte les erreurs au moment de la compilation et s'assure que les signatures des méthodes correspondent aux points de terminaison de l'API. Cette sécurité de type réduit le risque d'erreurs d'exécution dues à une mauvaise correspondance des points d'extrémité ou à une mauvaise configuration des demandes.

Client HTTP déclaratif

Les interfaces et attributs C# peuvent être utilisés par les développeurs pour créer des points d'extrémité d'API, ce qui permet d'obtenir un code de requête HTTP plus propre et plus facile à maintenir. Cette méthode déclarative fait abstraction de la complexité de la mise en œuvre d'une méthode de requête HTTP par client.

Sérialisation et désérialisation automatiques

Refit se charge automatiquement de la conversion des objets C# en données JSON. Comme les développeurs n'ont plus à sérialiser manuellement les corps des requêtes ou à désérialiser les réponses, la manipulation des données est beaucoup plus simple.

Configuration basée sur les attributs

Les attributs sont utilisés pour définir les méthodes HTTP (telles que GET, POST, PUT et DELETE) et les paramètres. La configuration est donc simple et facile à comprendre, car elle comprend les en-têtes, le corps de la requête, le contenu, les paramètres du chemin et les paramètres de la requête.

Soutien à la programmation asynchrone

Refit utilise des méthodes basées sur les tâches pour gérer les requêtes HTTP asynchrones et est conçu pour interagir facilement avec les modèles de programmation asynchrones dans .NET.

Navigateurs web adaptables

Le client HTTP de base peut être personnalisé par les développeurs en modifiant les délais d'attente, les paramètres des en-têtes par défaut et les configurations des gestionnaires de messages pour la journalisation, l'authentification et les politiques de relance.

Gestion intégrée des erreurs

Refit dispose de capacités intégrées pour gérer les problèmes HTTP, ce qui permet aux développeurs d'incorporer facilement leur propre logique de traitement des erreurs.

Adaptabilité

Les développeurs peuvent utiliser plusieurs formats ou gérer des types de données inhabituels grâce à la prise en charge par Refit de convertisseurs de sérialisation et de désérialisation personnalisés.

Combinaison de l'injection de dépendances et de l'intégration

Refit est un excellent choix pour les applications .NET contemporaines qui respectent les pratiques recommandées pour l'injection de dépendances (DI), car il est simple à intégrer dans les applications utilisant DI.

Aide à la vérification

Pour sécuriser les appels d'API, Refit simplifie la configuration des en-têtes d'authentification, des méthodes d'interface telles que les jetons de support et l'authentification de base.

Créer et configurer Refit C&num ;

Les étapes ci-dessous peuvent être utilisées pour construire et configurer un client Refit en C# :

Créer un nouveau projet Visual Studio

Il est facile de créer un projet Console à l'aide de Visual Studio. Pour créer une application console dans Visual Studio, procédez comme suit :

Avant d'utiliser Visual Studio, confirmez qu'il est installé sur votre ordinateur.

Démarrer un nouveau projet

Ouvrez Visual Studio, cliquez sur l'option "Créer un nouveau projet".

Refit C# (Comment cela fonctionne pour les développeurs) : Figure 2 - Dans Visual Studio, cliquez sur l'option "Créer un nouveau projet" et sélectionnez Console App.

Dans la sélection située à gauche de la boîte "Créer un nouveau projet", sélectionnez votre langage de programmation préféré (C#, par exemple).

À partir de la liste de référence des modèles de projet suivante, vous pouvez choisir le modèle "Console App" ou "Console App (.NET Core)".

Donnez un nom à votre projet et choisissez son emplacement de stockage.

Refit C# (Comment cela fonctionne pour les développeurs) : Figure 3 - Configurez votre application console en spécifiant le nom du projet, l'emplacement et le nom de la solution. Puis cliquez sur Suivant.

Sélectionnez le Framework .NET approprié. Cliquez ensuite sur "Create" pour créer le projet d'application Console.

Refit C# (Comment cela fonctionne pour les développeurs) : Figure 4 - Sélectionnez le .NET Framework, puis cliquez sur "Créer".  Votre projet d'application console sera créé avec succès.

Installer Réaménager

La bibliothèque Refit doit d'abord être incluse dans votre projet. Vous pouvez installer le package NuGet Refit à l'aide du gestionnaire de packages NuGet ou utiliser l'interface CLI .NET dans Visual Studio.

Utilisation de l'interface de programmation .NET pour l'installation :

dotnet add package Refit
dotnet add package Refit
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Définir l'interface API

Créez une interface pour symboliser votre API. Pour définir les méthodes HTTP et les points de terminaison, utilisez les attributs Refit.

using Refit;
using System.Threading.Tasks;
public interface IMyApi
{
    [Get("/users/{id}")]
    Task<User> GetUserAsync(int id);
    [Post("/users")]
    Task<User> CreateUserAsync([Body] User user);
}
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    // Other properties...
}
using Refit;
using System.Threading.Tasks;
public interface IMyApi
{
    [Get("/users/{id}")]
    Task<User> GetUserAsync(int id);
    [Post("/users")]
    Task<User> CreateUserAsync([Body] User user);
}
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    // Other properties...
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Créer et configurer le client Refit

Lancez le client Refit et ajustez ses paramètres si nécessaire. Cela peut être mis en œuvre directement dans votre code principal ou dans un service, entre autres endroits de votre application.

using Refit;
using System;
using System.Threading.Tasks;
public class Program
{
    public static async Task Main(string[] args)
    {
        // Define the base URL of your API
        var apiClient = RestService.For<IMyApi>("https://api.example.com");
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        // Create a new user
        var newUser = new User { Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
    }
}
using Refit;
using System;
using System.Threading.Tasks;
public class Program
{
    public static async Task Main(string[] args)
    {
        // Define the base URL of your API
        var apiClient = RestService.For<IMyApi>("https://api.example.com");
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        // Create a new user
        var newUser = new User { Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Configuration avancée

En définissant le client HttpClient sous-jacent, vous pouvez personnaliser davantage le client Refit. À titre d'exemple, vous pouvez définir des délais d'attente, appliquer des attributs d'en-tête, ajouter des en-têtes par défaut ou utiliser des gestionnaires de messages pour les politiques de relance, l'authentification et la journalisation.

using System.Net.Http;
using Refit;
using System;
using System.Threading.Tasks;
public class Program
{
    public static async Task Main(string[] args)
    {
        var httpClient = new HttpClient(new HttpClientHandler
        {
            // Customize the HttpClientHandler as needed
        })
        {
            BaseAddress = new Uri("https://api.example.com"),
            Timeout = TimeSpan.FromSeconds(30)
        };
        // Add default headers if needed
        httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_TOKEN_HERE");
        var apiClient = RestService.For<IMyApi>(httpClient);
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        // Create a new user
        var newUser = new User { Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
    }
}
using System.Net.Http;
using Refit;
using System;
using System.Threading.Tasks;
public class Program
{
    public static async Task Main(string[] args)
    {
        var httpClient = new HttpClient(new HttpClientHandler
        {
            // Customize the HttpClientHandler as needed
        })
        {
            BaseAddress = new Uri("https://api.example.com"),
            Timeout = TimeSpan.FromSeconds(30)
        };
        // Add default headers if needed
        httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_TOKEN_HERE");
        var apiClient = RestService.For<IMyApi>(httpClient);
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        // Create a new user
        var newUser = new User { Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Vous pouvez utiliser une consommation d'API RESTful sécurisée et maintenable en créant et en configurant un client Refit en C# en suivant ces instructions.

Refit C# (Comment ça fonctionne pour les développeurs) : Figure 5 - Sortie console

Pour commencer

L'installation des deux bibliothèques, la configuration d'un client API simple utilisant Refit pour récupérer des données et IronPDF pour créer un PDF à partir de ces données sont les premières étapes de l'intégration de Refit et IronPDF dans un projet C#. Voici les étapes à suivre pour y parvenir :

Qu'est-ce qu'IronPDF ?

Une bibliothèque riche en fonctionnalités pour gérer les documents PDF dans les applications .NET est appelée IronPDF. Grâce à ses nombreuses fonctionnalités, les utilisateurs peuvent créer des PDF à partir de zéro ou à partir de matériel HTML, ainsi que modifier des documents PDF préexistants en ajoutant, supprimant ou modifiant des parties. IronPDF offre aux développeurs une API robuste pour la création, la modification et la conversion de fichiers PDF, facilitant ainsi l'utilisation des PDF dans les applications .NET.

IronPDF excelle dans la conversion HTML en PDF, garantissant une préservation précise des mises en page et des styles d'origine. C'est parfait pour créer des PDF à partir de contenus basés sur le web, tels que des rapports, des factures et de la documentation. Avec la prise en charge des fichiers HTML, des URL et des chaînes HTML brutes, IronPDF produit facilement des documents PDF de haute qualité.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Refit C# (Comment cela fonctionne pour les développeurs) : Figure 6 - IronPDF for .NET : La bibliothèque PDF C#

Principales caractéristiques d'IronPDF

Conversion de HTML en PDF

IronPDF vous permet de créer des documents PDF de haute qualité en utilisant du contenu HTML, y compris CSS et JavaScript. Cette fonctionnalité est très utile pour créer des PDF à partir de contenu dynamique ou de pages web.

Édition et manipulation des PDF

IronPDF propose des outils de modification de documents PDF déjà existants. Il est possible d'extraire des pages d'un PDF, d'ajouter du texte, des photos, des filigranes ou des notes, et de combiner plusieurs PDF en un seul document.

Création d'un PDF à partir du début

Grâce à l'API d'IronPDF, vous pouvez ajouter du texte, des photos, des formes et d'autres objets à de nouveaux documents PDF de manière programmatique. Il est ainsi possible de générer dynamiquement des factures, des rapports et d'autres documents au format PDF.

Sécurité des PDF

Vous pouvez gérer l'accès et protéger les données critiques en chiffrant les documents PDF à l'aide d'IronPDF et en ajoutant une sécurité par mot de passe.

Formulaires en PDF

En plaçant des données dans des champs de formulaire, les utilisateurs peuvent interagir avec des documents PDF en créant et en remplissant des formulaires PDF avec IronPDF.

Extractions de texte

IronPDF facilite la recherche, l'analyse et la manipulation des données textuelles en extrayant le contenu textuel des documents PDF.

Transformation en formats d'images

IronPDF convient aux situations où l'on a besoin d'images au lieu de PDF, car il peut convertir des documents PDF en formats d'image courants, notamment PNG, JPEG et BMP.

Installer IronPDF

Utilisez le CLI .NET ou le gestionnaire de packages NuGet pour ajouter IronPDF à vos projets .NET.

dotnet add package IronPdf
dotnet add package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronPdf
$vbLabelText   $csharpLabel

Intégrer IronPDF à Refit C&num ;

Décortiquons un exemple de code C# qui combine Refit et IronPDF. Dans cet exemple, nous utiliserons Refit pour récupérer des données à partir d'une API RESTful fictive et utiliserons IronPDF pour créer un document PDF basé sur ces données. C'est le fonctionnement du code suivant :

using System;
using IronPdf;
using Refit;
    public static async Task Main(string[] args)
    {
        var apiClient = RestService.For<IMyApi>("https://api.example.com");
        try
        {
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        GeneratePdf(user);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        var rand = new Random(100);
        // Create a new user
        var newUser = new User { Id = rand.Next(), Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
//Passing html string as method parameter
public static void GeneratePdf(User user)
{
    var htmlContent = $@"
    <html>
        <head>
            <style>
                body {{ font-family: Arial, sans-serif; }}
                h1 {{ color: navy; }}
                p {{ font-size: 14px; }}
            </style>
        </head>
        <body>
            <h1>User Details</h1>
            <p><strong>ID:</strong> {user.Id}</p>
            <p><strong>Name:</strong> {user.Name}</p>
        </body>
    </html>";
    // Create an IronPDF ChromePdfRenderer instance
    var renderer = new ChromePdfRenderer();
    var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
    // Save the PDF to a file
    var filePath = "UserDetails.pdf";
    pdfDocument.SaveAs(filePath);
    Console.WriteLine($"PDF generated and saved to {filePath}");
}
using System;
using IronPdf;
using Refit;
    public static async Task Main(string[] args)
    {
        var apiClient = RestService.For<IMyApi>("https://api.example.com");
        try
        {
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        GeneratePdf(user);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        var rand = new Random(100);
        // Create a new user
        var newUser = new User { Id = rand.Next(), Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
//Passing html string as method parameter
public static void GeneratePdf(User user)
{
    var htmlContent = $@"
    <html>
        <head>
            <style>
                body {{ font-family: Arial, sans-serif; }}
                h1 {{ color: navy; }}
                p {{ font-size: 14px; }}
            </style>
        </head>
        <body>
            <h1>User Details</h1>
            <p><strong>ID:</strong> {user.Id}</p>
            <p><strong>Name:</strong> {user.Name}</p>
        </body>
    </html>";
    // Create an IronPDF ChromePdfRenderer instance
    var renderer = new ChromePdfRenderer();
    var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
    // Save the PDF to a file
    var filePath = "UserDetails.pdf";
    pdfDocument.SaveAs(filePath);
    Console.WriteLine($"PDF generated and saved to {filePath}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

En utilisant les caractéristiques de Refit, nous construisons une interface API appelée IMyApi et fournissons le point de terminaison pour la récupération des données utilisateur. Nous créons un client Refit pour l'API et récupérons de manière asynchrone les données de l'utilisateur dans la fonction principale. Dans le cas où les données sont récupérées avec succès, l'objet utilisateur est passé à la méthode GeneratePdf. En utilisant la classe ChromePdfRenderer d'IronPDF, nous créons une conversion de contenu HTML en PDF qui représente les détails de l'utilisateur dans la méthode GeneratePdf et l'exportons ensuite en tant que document PDF. Ensuite, le PDF créé est stocké dans un fichier disque.

Refit C# (Comment ça fonctionne pour les développeurs) : Figure 7 - Sortie de la console

Vous trouverez ci-dessous une capture d'écran du fichier PDF généré.

Refit C# (Comment ça fonctionne pour les développeurs) : Figure 8 - PDF généré à l'aide de IronPDF

Conclusion

Pour résumer, les développeurs travaillant avec des API RESTful et la production de PDF disposent d'une solution forte et efficace sous la forme de l'intégration de Refit avec IronPDF en C#. L'interface Refit réduit le code standard, améliore la maintenabilité et offre une approche déclarative et sécurisée, ce qui facilite la consommation des API. Cependant, IronPDF fournit une vaste collection d'outils pour produire, modifier et travailler avec des documents PDF, ce qui facilite la création de PDF de haute qualité à partir de texte HTML.

Les développeurs peuvent facilement récupérer des données à partir d'APIs avec Refit et créer des documents PDF dynamiques avec IronPDF en intégrant les deux outils. Les flux de travail sont rationalisés grâce à cette intégration, qui offre également de nombreuses possibilités de créer des rapports PDF dynamiques et axés sur les données, des factures et d'autres sorties basées sur des documents.

Vous pouvez intégrer IronPDF et d'autres technologies Iron Software dans votre pile de développement d'applications d'entreprise pour offrir des solutions logicielles riches en fonctionnalités et haut de gamme aux clients et aux utilisateurs finaux. Cette base solide facilitera également les projets, les systèmes dorsaux et l'amélioration des processus.

Les développeurs peuvent tirer le meilleur parti de la version d'essai gratuite d'IronPDF dont le coût est de $749. Ces technologies sont une excellente option pour les projets de développement logiciel moderne en raison de leur documentation complète, de leur communauté de développeurs en ligne active et de leurs mises à jour régulières.

Pour en savoir plus sur comment démarrer avec IronPDF, veuillez visiter la page des exemples de code pour HTML vers PDF et la documentation complète.

Chaknith Bin
Ingénieur logiciel
Chaknith travaille sur IronXL et IronBarcode. Il possède une expertise approfondie en C# et .NET, aidant à améliorer le logiciel et à soutenir les clients. Ses idées issues des interactions avec les utilisateurs contribuent à de meilleurs produits, une documentation améliorée et une expérience globale enrichie.
< PRÉCÉDENT
AAPC .NET (Comment ça marche pour les développeurs)
SUIVANT >
NBuilder .NET (Comment ça marche pour les développeurs)