13 diciembre 2024
CodePorting.Wrapper Cs2Python es una herramienta que permite envolver proyectos .NET listos, escritos en C#, en módulos compatibles con Python. Esto simplifica el uso de proyectos .NET existentes en Python sin necesidad de reescribirlos desde cero o traducir su código fuente. Utilizar esta herramienta ahorra tiempo y esfuerzo a los desarrolladores, asegurando un alto rendimiento del producto en Python. En este artículo, revisaremos los cinco proyectos .NET más populares envueltos para su uso en Python utilizando la herramienta CodePorting.Wrapper Cs2Python.
Aspose es una empresa líder que se especializa en el desarrollo de bibliotecas de alta calidad para trabajar con diversos formatos de archivos. Sus productos son ampliamente reconocidos entre los desarrolladores por su fiabilidad y rica funcionalidad. Inicialmente, todas estas bibliotecas fueron creadas en C# y, con el tiempo, se han convertido en herramientas indispensables para los desarrolladores .NET en todo el mundo.
Para soportar Python, se decidió generar automáticamente el código de envoltura que permite utilizar el ensamblaje .NET existente dentro del entorno de Python. Para lograr esto, se desarrolló la herramienta CodePorting.Wrapper Cs2Python, que facilita la adaptación de proyectos .NET para su uso en Python.
Revisaremos los cinco productos más populares de Aspose para Python basándonos en el número de descargas de PyPI:
Producto | Número de Descargas | |
---|---|---|
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 |
Número de líneas de código fuente C# |
---|
4,100,000 |
Aspose.Words es una poderosa biblioteca para trabajar con documentos Word, proporcionando una amplia gama de funciones para crear, editar, convertir y renderizar documentos. Soporta muchos formatos, incluyendo DOC, DOCX, PDF, HTML, y más. Aspose.Words permite a los desarrolladores automatizar el procesamiento de documentos sin necesidad de usar Microsoft Word u otras aplicaciones de terceros.
La primera versión de la biblioteca envuelta para Python fue lanzada en 2021. Desde entonces, ha seguido evolucionando junto con las crecientes capacidades de la herramienta de envoltura Cs2Python. Toda la API de Python se genera automáticamente basándose en la API de C# de la biblioteca.
Ejemplo en C#:
using Aspose.Words;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("Hello, World!");
doc.Save("HelloWorld.docx");
Ejemplo en Python:
import aspose.words as aw
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.writeln("Hello, World!")
doc.save("HelloWorld.docx")
Ejemplo 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")
Ejemplo 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")
Como podemos ver, las APIs en ambos lenguajes son muy similares, lo que facilita a los desarrolladores la transición entre C# y Python. Además, simplifica la documentación y el mantenimiento de las bibliotecas de Aspose. Ahora, gracias a la herramienta CodePorting.Wrapper Cs2Python, los desarrolladores pueden utilizar las potentes capacidades de Aspose.Words en sus proyectos de Python.
Número de líneas de código fuente C# |
---|
2,860,000 |
Aspose.Slides es una poderosa biblioteca para trabajar con presentaciones, permitiendo a los desarrolladores crear, modificar, convertir y renderizar presentaciones sin necesidad de aplicaciones como Microsoft PowerPoint. Soporta una amplia gama de formatos, incluidos PPT, PPTX, PDF, HTML y más.
La primera versión de la biblioteca envuelta para Python fue lanzada en 2021 y fue inmediatamente bien recibida por los usuarios. Vamos a comparar la API original de C# y la API de Python generada automáticamente.
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)
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)
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)
Como podemos ver, la diferencia radica únicamente en el estilo de codificación único de cada lenguaje de programación.
Número de líneas de código fuente C# |
---|
600,000 |
Aspose.Cells es una poderosa API para trabajar con archivos de Excel, permitiendo a los desarrolladores crear, editar, formatear y convertir hojas de cálculo en sus aplicaciones, soportando una amplia gama de formatos, incluidos XLS, XLSX, CSV, PDF y más.
Aspose.Cells puede manejar grandes volúmenes de datos en hojas de cálculo, lo que impone altas exigencias a su rendimiento. Al envolver el código C# compilado de alto rendimiento, este rendimiento se mantiene cuando se usa la biblioteca en Python. Traducir su código a Python podría reducir significativamente la velocidad de las operaciones.
Ejemplo 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);
Ejemplo 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)
Este código ilustra el uso de Aspose.Cells para procesar grandes volúmenes de datos y calcular fórmulas tanto en C# como en Python. El método calculate_formula
realiza un trabajo significativo, asegurando el cálculo correcto de todas las fórmulas en la hoja de cálculo sin pérdida de rendimiento en Python.
Número de líneas de código fuente C# |
---|
3,655,000 |
Aspose.PDF es una poderosa biblioteca para trabajar con documentos PDF, permitiendo a los desarrolladores crear, leer, editar y convertir documentos PDF de manera programática.
Como podemos ver, Aspose.PDF es un proyecto grande y complejo con una extensa base de código en C#. Los métodos de la biblioteca pueden devolver no solo tipos de datos simples, sino también estructuras complejas como colecciones y objetos. Uno de los puntos fuertes de la herramienta CodePorting.Wrapper Cs2Python es su capacidad para soportar tales tipos de datos en Python.
Ejemplo 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);
// Recuperar las tres primeras imágenes de la página actual
List<ImagePlacement> images = imageAbsorber.ImagePlacements.Take(3).ToList();
foreach (ImagePlacement image in images)
{
Console.WriteLine("Imagen encontrada en: " + 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)
# Recuperar las tres primeras imágenes de la página actual
images = image_placement_absorber.image_placements[:3]
for image in images:
print("Imagen encontrada en:", image.rectangle)
Las colecciones que se pasan entre la biblioteca envuelta y el código de Python soportan todos los métodos y operaciones estándar de Python para secuencias. Esto incluye métodos como pop
, index
, count
, sort
, reverse
, copy
, append
, remove
, clear
, contains
, así como soporte para iteración usando __iter__
y acceso a elementos mediante corchetes ([]
). Esto hace que interactuar con las colecciones de las bibliotecas envueltas sea tan conveniente e intuitivo como trabajar con cualquier otra colección estándar en el lenguaje.
Número de líneas de código fuente C# |
---|
397,000 |
Aspose.Email es una biblioteca para trabajar con correos electrónicos, que soporta una amplia gama de escenarios de uso y protocolos como SMTP, POP3, IMAP, Exchange Web Services (EWS), WebDav y otros.
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)
En C#:
using Aspose.Email;
using Aspose.Email.Storage.Pst;
using System;
void PrintFolderInfo(FolderInfo folder)
{
Console.WriteLine($"Folder: {folder.DisplayName}, Message Count: {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"Folder: {folder.display_name}, Message Count: {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)
En este ejemplo, recorremos recursivamente todas las carpetas en el archivo PST y mostramos la cantidad de mensajes en cada carpeta utilizando la propiedad FolderInfo.ContentCount
(FolderInfo.content_count
en Python).
Como podemos ver, la interfaz de la API de Python es una vez más idéntica a la interfaz de la API de C#. Esto se logra mediante la creación automática de una capa intermedia de código que implementa wrappers o bindings para clases, métodos y propiedades en Python. Estos bindings permiten acceder a la funcionalidad escrita en C# desde el entorno de Python.
En conclusión, nos gustaría resaltar las ventajas clave que ofrece envolver bibliotecas .NET para Python utilizando la herramienta CodePorting.Wrapper Cs2Python:
Si desea envolver con éxito su proyecto empresarial basado en .NET para su uso en Python, contáctenos y estaremos encantados de ayudarle a alcanzar sus objetivos.