13 十二月 2024

使用Cs2Python为Python包装的前5个.NET项目

CodePorting.Wrapper Cs2Python 是一个工具,可以将用 C# 编写的现成 .NET 项目封装成与 Python 兼容的模块。这简化了在 Python 中使用现有 .NET 项目的过程,而无需从头开始重写或翻译它们的源代码。使用这个工具可以节省开发人员的时间和精力,确保产品在 Python 中具有高性能。在本文中,我们将介绍使用 CodePorting.Wrapper Cs2Python 工具封装以供 Python 使用的五个最受欢迎的 .NET 项目。

适应 Python 的 Aspose 库

Aspose 是一家领先的公司,专门开发用于处理各种文件格式的高质量库。其产品在开发人员中因其可靠性和丰富的功能而广受认可。最初,所有这些库都是用 C# 创建的,随着时间的推移,它们已经成为全球 .NET 开发人员不可或缺的工具。

为了支持 Python,决定自动生成封装代码,使现有 .NET 程序集能够在 Python 环境中使用。为实现这一目标,开发了 CodePorting.Wrapper Cs2Python 工具,使得将 .NET 项目适应 Python 使用变得轻而易举。

我们将根据 PyPI 上的下载数量,回顾五个最受欢迎的 Python Aspose 产品:

产品 下载次数
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

C# 源代码行数
4,100,000

Aspose.Words 是一个强大的库,用于处理 Word 文档,提供了创建、编辑、转换和呈现文档的广泛功能。它支持多种格式,包括 DOC、DOCX、PDF、HTML 等。Aspose.Words 使开发人员能够自动化文档处理,而无需使用 Microsoft Word 或其他第三方应用程序。

Python 封装库的第一个版本于 2021 年发布。从那时起,它一直随着 Cs2Python 封装工具能力的不断增强而发展。整个 Python API 都是基于库的 C# API 自动生成的。

C# 和 Python API 的比较

  1. 创建新文档并添加文本

C# 示例:

using Aspose.Words;

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

Python 示例:

import aspose.words as aw

doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.writeln("Hello, World!")
doc.save("HelloWorld.docx")
  1. 将 DOCX 文档转换为 PDF

C# 示例:

using Aspose.Words;

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

Python 示例:

import aspose.words as aw

doc = aw.Document("Document.docx")
doc.save("Document.pdf")
  1. 合并两个文档

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");

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")

正如我们所见,这两种语言的 API 非常相似,这使得开发人员在 C# 和 Python 之间的转换变得更加容易。此外,它简化了 Aspose 库的文档编制和维护。现在,借助 CodePorting.Wrapper Cs2Python 工具,开发人员可以在其 Python 项目中利用 Aspose.Words 的强大功能。

2. Aspose.Slides

C# 源代码行数
2,860,000

Aspose.Slides 是一个用于处理演示文稿的强大库,使开发人员可以创建、修改、转换和呈现演示文稿,而无需使用 Microsoft PowerPoint 等应用程序。它支持多种格式,包括 PPT、PPTX、PDF、HTML 等。

Python 封装库的第一个版本于 2021 年发布,并立即受到用户的欢迎。让我们比较一下原始 C# API 和自动生成的 Python API。

代码示例:比较 C# 和 Python API

  1. 创建新演示文稿

在 C# 中:

using Aspose.Slides;

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

在 Python 中:

import aspose.slides as slides

pres = slides.Presentation()
pres.save("NewPresentation.pptx", slides.SaveFormat.Pptx)
  1. 添加幻灯片

在 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);

在 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. 转换为 PDF

在 C# 中:

using Aspose.Slides;

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

在 Python 中:

import aspose.slides as slides

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

正如我们所见,不同之处仅在于每种编程语言独特的编码风格。

3. Aspose.Cells

C# 源代码行数
600,000

Aspose.Cells 是一个用于处理 Excel 文件的强大 API,使开发人员能够在其应用程序中创建、编辑、格式化和转换电子表格,支持多种格式,包括 XLS、XLSX、CSV、PDF 等。

Aspose.Cells 可以处理电子表格中的大量数据,这对其性能提出了很高的要求。通过封装高性能编译的 C# 代码,当在 Python 中使用该库时,这种性能得以保持。将代码转换为 Python 可能会显著降低操作速度。

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("计算结果: " + resultCell.Value);

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("计算结果: ", result_cell.value)

这段代码说明了如何使用 Aspose.Cells 来处理大量数据并在 C# 和 Python 中计算公式。calculate_formula 方法执行了重要工作,确保在不损失 Python 性能的情况下正确计算电子表格中的所有公式。

4. Aspose.PDF

C# 源代码行数
3,655,000

Aspose.PDF 是一个用于处理 PDF 文档的强大库,使开发人员能够以编程方式创建、读取、编辑和转换 PDF 文档。

正如我们所见,Aspose.PDF 是一个大型复杂项目,具有广泛的 C# 代码库。库的方法不仅可以返回简单的数据类型,还可以返回复杂的结构,如集合和对象。CodePorting.Wrapper Cs2Python 工具的强项之一是它能够在 Python 中支持这些数据类型。

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);

// 从当前页面检索前三个图像
List<ImagePlacement> images = imageAbsorber.ImagePlacements.Take(3).ToList();

foreach (ImagePlacement image in images)
{
    Console.WriteLine("图像位置: " + image.Rectangle);
}

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)

# 从当前页面检索前三个图像
images = image_placement_absorber.image_placements[:3]

for image in images:
    print("图像位置:", image.rectangle)

在封装库和 Python 代码之间传递的集合支持所有标准 Python 方法和操作。这包括 popindexcountsortreversecopyappendremoveclearcontains 等方法,以及使用 __iter__ 进行迭代和通过方括号 ([]) 访问元素。这使得与封装库中的集合交互变得像与语言中的任何其他标准集合一样方便和直观。

5. Aspose.Email

C# 源代码行数
397,000

Aspose.Email 是一个用于处理电子邮件的库,支持广泛的使用场景和协议,如 SMTP、POP3、IMAP、Exchange Web Services (EWS)、WebDav 等。

C# 和 Python API 的比较

  1. 创建和发送电子邮件

在 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);

在 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. 读取 PST 文件

在 C# 中:

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

void PrintFolderInfo(FolderInfo folder)
{
    Console.WriteLine($"文件夹: {folder.DisplayName}, 消息数: {folder.ContentCount}");
    foreach (var subFolder in folder.GetSubFolders())
    {
        PrintFolderInfo(subFolder);
    }
}

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

在 Python 中:

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

def print_folder_info(folder):
    print(f"文件夹: {folder.display_name}, 消息数: {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)

在这个示例中,我们递归遍历 PST 文件中的所有文件夹,并使用 FolderInfo.ContentCount 属性(在 Python 中为 FolderInfo.content_count)输出每个文件夹中的消息数量。

正如我们所见,Python API 接口再次与 C# API 接口相同。这是通过自动创建实现 Python 中类、方法和属性的封装或绑定的中间层代码来实现的。这些绑定允许从 Python 环境访问用 C# 编写的功能。

结论

综上所述,我们希望强调使用 CodePorting.Wrapper Cs2Python 工具封装 .NET 库以供 Python 使用所提供的主要优势:

  1. 保持功能:封装允许在不丧失性能和功能的情况下,在 Python 中使用原始 .NET 库的所有功能和特性。
  2. 节省时间和资源:开发人员可以快速封装现有的 .NET 库以供 Python 使用,而无需从头开始重写代码,从而显著减少开发时间。
  3. 广泛的兼容性:封装的库可以在 Windows、Linux 和 macOS 等各种平台上运行。
  4. 自动生成 API:整个 Python API 都是基于库的 C# API 自动生成的,简化了集成过程并确保功能的一致性。

如果您希望成功封装您的企业级 .NET 项目以供 Python 使用,请联系我们,我们将非常乐意帮助您实现目标!

相关新闻

相关文章