13 décembre 2024

Top 5 projets .NET adaptés pour Python utilisant Cs2Python

CodePorting.Wrapper Cs2Python est un outil qui permet d'encapsuler des projets .NET prêts à l'emploi écrits en C# dans des modules compatibles avec Python. Cela simplifie l'utilisation des projets .NET existants dans Python sans avoir à les réécrire à partir de zéro ou à traduire leur code source. L'utilisation de cet outil permet aux développeurs de gagner du temps et des efforts, tout en assurant des performances élevées du produit en Python. Dans cet article, nous examinerons les cinq projets .NET les plus populaires encapsulés pour être utilisés dans Python à l'aide de l'outil CodePorting.Wrapper Cs2Python.

Adapter les bibliothèques Aspose pour Python

Aspose est une entreprise leader spécialisée dans le développement de bibliothèques de haute qualité pour travailler avec divers formats de fichiers. Leurs produits sont largement reconnus parmi les développeurs pour leur fiabilité et leur riche fonctionnalité. Initialement, toutes ces bibliothèques ont été créées en C# et, au fil du temps, elles sont devenues des outils indispensables pour les développeurs .NET du monde entier.

Pour prendre en charge Python, il a été décidé de générer automatiquement du code d'encapsulation permettant d'utiliser l'assemblage .NET existant dans l'environnement Python. Pour y parvenir, l'outil CodePorting.Wrapper Cs2Python a été développé, ce qui facilite l'adaptation des projets .NET pour une utilisation dans Python.

Nous examinerons les cinq produits Aspose les plus populaires pour Python en nous basant sur le nombre de téléchargements de PyPI :

Produit Nombre de Téléchargements
1 Aspose.Words 1,287,268
2 Aspose.Slides 488,062
3 Aspose.Cells 286,120
4 Aspose.PDF 177,246
5 Aspose.Email 136,465

1. Aspose.Words

Nombre de lignes de code source C#
4,100,000

Aspose.Words est une puissante bibliothèque pour travailler avec des documents Word, offrant un large éventail de fonctionnalités pour créer, éditer, convertir et rendre des documents. Elle prend en charge de nombreux formats, y compris DOC, DOCX, PDF, HTML et plus encore. Aspose.Words permet aux développeurs d'automatiser le traitement des documents sans avoir besoin d'utiliser Microsoft Word ou d'autres applications tierces.

La première version de la bibliothèque encapsulée pour Python a été publiée en 2021. Depuis, elle a continué à évoluer parallèlement aux capacités croissantes de l'outil d'encapsulation Cs2Python. L'ensemble de l'API Python est généré automatiquement sur la base de l'API C# de la bibliothèque.

Comparaison des API C# et Python

  1. Création d'un nouveau document et ajout de texte

Exemple en C# :

using Aspose.Words;

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("Hello, World!");
doc.Save("HelloWorld.docx");

Exemple en Python :

import aspose.words as aw

doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.writeln("Hello, World!")
doc.save("HelloWorld.docx")
  1. Conversion d'un document de DOCX en PDF

Exemple en C# :

using Aspose.Words;

Document doc = new Document("Document.docx");
doc.Save("Document.pdf");

En Python :

import aspose.words as aw

doc = aw.Document("Document.docx")
doc.save("Document.pdf")
  1. Fusion de deux documents

Exemple en C# :

using Aspose.Words;

Document doc1 = new Document("Document1.docx");
Document doc2 = new Document("Document2.docx");

DocumentBuilder builder = new DocumentBuilder(doc1);
builder.MoveToDocumentEnd();
builder.InsertDocument(doc2, ImportFormatMode.KeepSourceFormatting);

doc1.Save("MergedDocument.docx");

En Python :

import aspose.words as aw

doc1 = aw.Document("Document1.docx")
doc2 = aw.Document("Document2.docx")

builder = aw.DocumentBuilder(doc1)
builder.move_to_document_end()
builder.insert_document(doc2, aw.ImportFormatMode.KEEP_SOURCE_FORMATTING)

doc1.save("MergedDocument.docx")

Comme nous pouvons le voir, les API dans les deux langues sont très similaires, ce qui facilite la transition des développeurs entre C# et Python. De plus, cela simplifie la documentation et la maintenance des bibliothèques Aspose. Désormais, grâce à l'outil CodePorting.Wrapper Cs2Python, les développeurs peuvent utiliser les puissantes capacités d'Aspose.Words dans leurs projets Python.

2. Aspose.Slides

Nombre de lignes de code source C#
2,860,000

Aspose.Slides est une bibliothèque puissante pour travailler avec des présentations, permettant aux développeurs de créer, modifier, convertir et rendre des présentations sans avoir besoin d'applications comme Microsoft PowerPoint. Elle prend en charge une large gamme de formats, y compris PPT, PPTX, PDF, HTML et plus encore.

La première version de la bibliothèque encapsulée pour Python a été publiée en 2021 et a été immédiatement bien accueillie par les utilisateurs. Comparons l'API C# originale et l'API Python générée automatiquement.

Exemples de Code : Comparaison des API C# et Python

  1. Création d'une Nouvelle Présentation

En C# :

using Aspose.Slides;

Presentation pres = new Presentation();
pres.Save("NewPresentation.pptx", SaveFormat.Pptx);

En Python :

import aspose.slides as slides

pres = slides.Presentation()
pres.save("NewPresentation.pptx", slides.SaveFormat.Pptx)
  1. Ajout d'une Diapositive

En C# :

using Aspose.Slides;

Presentation pres = new Presentation("ExistingPresentation.pptx");

ISlide slide = pres.Slides.AddEmptySlide(pres.LayoutSlides[0]);
IAutoShape textbox = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 200);
textbox.TextFrame.Text = "Hello, Aspose.Slides!";

pres.Save("UpdatedPresentation.pptx", SaveFormat.Pptx);

En Python :

import aspose.slides as slides

pres = slides.Presentation("ExistingPresentation.pptx")

slide = pres.slides.add_empty_slide(pres.layout_slides[0])
textbox = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 50, 500, 200)
textbox.text_frame.text = "Hello, Aspose.Slides!"

pres.save("UpdatedPresentation.pptx", slides.SaveFormat.Pptx)
  1. Conversion en PDF

En C# :

using Aspose.Slides;

Presentation pres = new Presentation("ExistingPresentation.pptx");
pres.Save("ConvertedPresentation.pdf", SaveFormat.Pdf);

En Python :

import aspose.slides as slides

pres = slides.Presentation("ExistingPresentation.pptx")
pres.save("ConvertedPresentation.pdf", slides.SaveFormat.Pdf)

Comme nous pouvons le voir, la différence réside uniquement dans le style de codage propre à chaque langage de programmation.

3. Aspose.Cells

Nombre de lignes de code source C#
600,000

Aspose.Cells est une API puissante pour travailler avec des fichiers Excel, permettant aux développeurs de créer, éditer, formater et convertir des feuilles de calcul dans leurs applications, prenant en charge une large gamme de formats, y compris XLS, XLSX, CSV, PDF et plus encore.

Aspose.Cells peut gérer de grands volumes de données dans les feuilles de calcul, ce qui impose des exigences élevées en termes de performance. En encapsulant le code C# compilé de haute performance, cette performance est maintenue lors de l'utilisation de la bibliothèque en Python. Traduire son code en Python pourrait réduire considérablement la vitesse des opérations.

Exemple en C# :

using Aspose.Cells;
using System;

Workbook workbook = new Workbook("HugeDataWithComplexFormulas.xlsx");
workbook.CalculateFormula();

Worksheet sheet = workbook.Worksheets[0];
Cell resultCell = sheet.Cells["A1"];
Console.WriteLine("Calculation result: " + resultCell.Value);

Exemple en Python :

import aspose.cells as cells

workbook = cells.Workbook("HugeDataWithComplexFormulas.xlsx")
workbook.calculate_formula()

sheet = workbook.worksheets[0]
result_cell = sheet.cells.get("A1")
print("Calculation result: ", result_cell.value)

Ce code illustre l'utilisation d'Aspose.Cells pour traiter de grands volumes de données et calculer des formules à la fois en C# et en Python. La méthode calculate_formula effectue un travail significatif, assurant le calcul correct de toutes les formules dans la feuille de calcul sans perte de performance en Python.

4. Aspose.PDF

Nombre de lignes de code source C#
3,655,000

Aspose.PDF est une bibliothèque puissante pour travailler avec des documents PDF, permettant aux développeurs de créer, lire, éditer et convertir des documents PDF de manière programmatique.

Comme nous pouvons le voir, Aspose.PDF est un projet vaste et complexe avec une base de code étendue en C#. Les méthodes de la bibliothèque peuvent renvoyer non seulement des types de données simples, mais aussi des structures complexes telles que des collections et des objets. L'un des points forts de l'outil CodePorting.Wrapper Cs2Python est sa capacité à prendre en charge ces types de données dans Python.

Exemple en C# :

using Aspose.Pdf;
using Aspose.Pdf.Text;
using System;
using System.Collections.Generic;

Document document = new Document("Sample.pdf");
Page page = document.Pages[1];

ImagePlacementAbsorber imageAbsorber = new ImagePlacementAbsorber();
page.Accept(imageAbsorber);

// Récupérer les trois premières images de la page actuelle
List<ImagePlacement> images = imageAbsorber.ImagePlacements.Take(3).ToList();

foreach (ImagePlacement image in images)
{
    Console.WriteLine("Image trouvée à : " + image.Rectangle);
}

En Python :

import aspose.pdf as pdf

document = pdf.Document("Sample.pdf")
page = document.pages[1]

image_placement_absorber = pdf.ImagePlacementAbsorber()
page.accept(image_placement_absorber)

# Récupérer les trois premières images de la page actuelle
images = image_placement_absorber.image_placements[:3]

for image in images:
    print("Image trouvée à :", image.rectangle)

Les collections échangées entre la bibliothèque encapsulée et le code Python supportent toutes les méthodes et opérations standard de Python pour les séquences. Cela inclut des méthodes telles que pop, index, count, sort, reverse, copy, append, remove, clear, contains, ainsi que le support de l'itération en utilisant __iter__ et l'accès aux éléments via des crochets ([]). Cela rend l'interaction avec les collections des bibliothèques encapsulées aussi pratique et intuitive que le travail avec n'importe quelle autre collection standard dans le langage.

5. Aspose.Email

Nombre de lignes de code source C#
397,000

Aspose.Email est une bibliothèque pour travailler avec les emails, prenant en charge un large éventail de scénarios d'utilisation et de protocoles tels que SMTP, POP3, IMAP, Exchange Web Services (EWS), WebDav, et d'autres.

Comparaison des API C# et Python

  1. Création et envoi d'un email

En C# :

using Aspose.Email;
using Aspose.Email.Clients.Smtp;

var message = new MailMessage();
message.From = new MailAddress("sender@example.com");
message.To.Add(new MailAddress("receiver@example.com"));
message.Subject = "Test Email";
message.Body = "This is a test email sent using Aspose.Email.";

var client = new SmtpClient("smtp.server.com", 25, "username", "password");
client.Send(message);

En Python :

import aspose.email as ae

message = ae.MailMessage()
message.from_address = ae.MailAddress("sender@example.com")
message.to.append(ae.MailAddress("receiver@example.com"))
message.subject = "Test Email"
message.body = "This is a test email sent using Aspose.Email."

client = ae.SmtpClient("smtp.server.com", 25, "username", "password")
client.send(message)
  1. Lecture d'un fichier PST

En C# :

using Aspose.Email;
using Aspose.Email.Storage.Pst;
using System;

void PrintFolderInfo(FolderInfo folder)
{
    Console.WriteLine($"Dossier : {folder.DisplayName}, Nombre de messages : {folder.ContentCount}");
    foreach (var subFolder in folder.GetSubFolders())
    {
        PrintFolderInfo(subFolder);
    }
}

var personalStorage = PersonalStorage.FromFile("path/to/file.pst");
PrintFolderInfo(personalStorage.RootFolder);

En Python :

import aspose.email as ae
import aspose.email.storage.pst as pst

def print_folder_info(folder):
    print(f"Dossier : {folder.display_name}, Nombre de messages : {folder.content_count}")
    for sub_folder in folder.get_sub_folders():
        print_folder_info(sub_folder)

personal_storage = pst.PersonalStorage.from_file("path/to/file.pst")
print_folder_info(personal_storage.root_folder)

Dans cet exemple, nous parcourons récursivement tous les dossiers du fichier PST et affichons le nombre de messages dans chaque dossier en utilisant la propriété FolderInfo.ContentCount (FolderInfo.content_count en Python).

Comme nous pouvons le voir, l'interface API Python est une fois de plus identique à l'interface API C#. Cela est réalisé grâce à la création automatique d'une couche intermédiaire de code qui implémente des wrappers ou des liaisons pour les classes, méthodes et propriétés en Python. Ces liaisons permettent d'accéder à la fonctionnalité écrite en C# depuis l'environnement Python.

Conclusion

En conclusion, nous aimerions souligner les avantages clés offerts par l'encapsulation des bibliothèques .NET pour Python en utilisant l'outil CodePorting.Wrapper Cs2Python :

  1. Préservation de la fonctionnalité : L'encapsulation permet d'utiliser toutes les fonctionnalités et caractéristiques de la bibliothèque .NET originale dans Python sans perte de performance et de fonctionnalité.
  2. Économie de temps et de ressources : Au lieu de réécrire le code à partir de zéro, les développeurs peuvent rapidement encapsuler les bibliothèques .NET existantes pour une utilisation dans Python, réduisant ainsi considérablement le temps de développement.
  3. Large compatibilité : Les bibliothèques encapsulées peuvent fonctionner sur diverses plateformes telles que Windows, Linux et macOS.
  4. Génération automatique d'API : L'ensemble de l'API Python est généré automatiquement sur la base de l'API C# de la bibliothèque, simplifiant le processus d'intégration et garantissant la cohérence fonctionnelle.

Si vous souhaitez encapsuler avec succès votre projet .NET de niveau entreprise pour une utilisation dans Python, veuillez nous contacter et nous serons heureux de vous aider à atteindre vos objectifs.

Nouvelles connexes

Articles liés