13 12월 2024
CodePorting.Wrapper Cs2Python은 C#으로 작성된 기존의 .NET 프로젝트를 Python과 호환되는 모듈로 랩핑할 수 있는 도구입니다. 이를 통해 기존의 .NET 프로젝트를 처음부터 다시 작성하거나 소스 코드를 번역할 필요 없이 Python에서 사용할 수 있게 됩니다. 이 도구를 사용하면 개발자의 시간과 노력을 절약할 수 있으며, Python에서 높은 성능을 보장합니다. 이 기사에서는 CodePorting.Wrapper Cs2Python 도구를 사용하여 Python에서 사용할 수 있도록 랩핑된 가장 인기 있는 다섯 가지 .NET 프로젝트를 살펴보겠습니다.
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 |
C# 소스 코드 라인 수 |
---|
4,100,000 |
Aspose.Words는 Word 문서를 다루기 위한 강력한 라이브러리로, 문서 작성, 편집, 변환 및 렌더링을 위한 다양한 기능을 제공합니다. DOC, DOCX, PDF, HTML 등 많은 형식을 지원합니다. Aspose.Words를 사용하면 Microsoft Word나 기타 타사 애플리케이션을 사용하지 않고도 문서 처리를 자동화할 수 있습니다.
Python용으로 랩핑된 라이브러리의 첫 번째 버전은 2021년에 출시되었습니다. 그 이후로 Cs2Python 래핑 도구의 기능 향상과 함께 계속 발전해 왔습니다. 전체 Python API는 라이브러리의 C# API를 기반으로 자동 생성됩니다.
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")
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")
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의 강력한 기능을 활용할 수 있습니다.
C# 소스 코드 라인 수 |
---|
2,860,000 |
Aspose.Slides는 프레젠테이션을 다루기 위한 강력한 라이브러리로, Microsoft PowerPoint와 같은 애플리케이션을 사용하지 않고 프레젠테이션을 생성, 수정, 변환 및 렌더링할 수 있게 해줍니다. PPT, PPTX, PDF, HTML 등 다양한 형식을 지원합니다.
Python용으로 랩핑된 라이브러리의 첫 번째 버전은 2021년에 출시되었으며, 사용자들로부터 즉시 호평을 받았습니다. 이제 오리지널 C# API와 자동으로 생성된 Python API를 비교해 보겠습니다.
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)
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)
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)
보시다시피, 차이점은 각 프로그래밍 언어 고유의 코딩 스타일에만 있습니다.
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)
이 코드는 대량의 데이터를 처리하고 C#과 Python에서 수식을 계산하기 위한 Aspose.Cells의 사용을 보여줍니다. calculate_formula
메서드는 중요한 작업을 수행하여 Python에서 성능 저하 없이 스프레드시트 내의 모든 수식을 정확하게 계산할 수 있습니다.
C# 소스 코드 라인 수 |
---|
3,655,000 |
Aspose.PDF는 PDF 문서를 다루기 위한 강력한 라이브러리로, 개발자가 프로그래밍 방식으로 PDF 문서를 생성, 읽기, 편집 및 변환할 수 있게 합니다.
보시다시피, Aspose.PDF는 방대한 코드베이스를 가진 대규모 복잡한 프로젝트입니다. 라이브러리 메서드는 단순한 데이터 유형뿐만 아니라 컬렉션 및 객체와 같은 복잡한 구조도 반환할 수 있습니다. 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 메서드와 작업을 지원합니다. 여기에는 pop
, index
, count
, sort
, reverse
, copy
, append
, remove
, clear
, contains
메서드와 __iter__
을 사용한 반복, 대괄호([]
)를 통한 요소 접근이 포함됩니다. 이를 통해 랩핑된 라이브러리의 컬렉션과의 상호 작용이 언어의 다른 표준 컬렉션을 사용하는 것처럼 편리하고 직관적입니다.
C# 소스 코드 라인 수 |
---|
397,000 |
Aspose.Email은 이메일을 다루기 위한 라이브러리로, SMTP, POP3, IMAP, Exchange Web Services(EWS), WebDav 등 다양한 사용 시나리오와 프로토콜을 지원합니다.
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)
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용으로 랩핑하는 주요 장점을 강조하고자 합니다:
기업 수준의 .NET 프로젝트를 성공적으로 Python용으로 랩핑하고 싶다면, 저희에게 연락 주시면 목표 달성을 도와드리겠습니다.