Search
Duplicate

C#으로 UWP 데스크톱 앱 만들기 5/5: 인쇄 기능 추가로 앱 완성하기

Published On
2024/09/13
Lang
KR
Tags
Programming
Window Development
UWP

시리즈

안녕하세요! 이번 포스트에서는 포토 부스 앱에 인쇄 기능을 추가하고, 앱을 실행 파일로 패키징하는 방법을 다루겠습니다. 이로써 앱을 완성하고 배포할 준비가 완료됩니다. UI는 이미 준비되어 있으므로, 인쇄 관련 함수만 작성하여 사용자가 촬영한 사진을 바로 프린터로 출력할 수 있도록 설정해보겠습니다.

1. 인쇄 기능 구현

UWP에서는 Windows.Graphics.Printing API를 사용해 인쇄 기능을 구현할 수 있습니다. 우리는 PrintManagerPrintDocument를 사용하여, 인쇄 미리보기를 제공하고 프린터로 출력을 지원할 것입니다.

1.1 PrintManager 초기화 및 인쇄 미리보기 생성

인쇄 작업을 처리하기 위해 PrintManagerPrintDocument를 초기화하고, 촬영된 이미지를 인쇄할 준비를 합니다.
private PrintManager printManager; private PrintDocument printDocument; private IPrintDocumentSource printDocumentSource; private UIElement printPreview; // 인쇄 미리보기를 저장할 변수 public MainPage() { this.InitializeComponent(); EnterFullScreenMode(); InitializeCameraAsync(); // PrintManager 초기화 printManager = PrintManager.GetForCurrentView(); printManager.PrintTaskRequested += PrintManager_PrintTaskRequested; }
C#
복사
PrintManager는 인쇄 요청을 처리하는 핵심 클래스입니다. 이를 초기화하고, 사용자가 인쇄를 요청하면 인쇄 작업을 처리할 수 있도록 설정합니다.

1.2 인쇄 버튼 클릭 이벤트 처리

사용자가 인쇄 버튼을 클릭했을 때 호출되는 이벤트입니다. 이 함수에서는 PrintManager.ShowPrintUIAsync()를 사용하여 인쇄 대화 상자를 띄우고, 인쇄 작업을 시작합니다.
private async void PrintButton_Click(object sender, RoutedEventArgs e) { try { // 인쇄 미리보기 업데이트 printPreview = CreatePrintPage(); // PrintDocument 재초기화 printDocument = new PrintDocument(); printDocumentSource = printDocument.DocumentSource; printDocument.Paginate += PrintDocument_Paginate; printDocument.GetPreviewPage += PrintDocument_GetPreviewPage; printDocument.AddPages += PrintDocument_AddPages; // 인쇄 작업 시작 await PrintManager.ShowPrintUIAsync(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine($"PrintButton_Click에서 오류 발생: {ex.Message}"); } }
C#
복사
PrintButton_Click 함수는 사용자가 인쇄 버튼을 클릭할 때 인쇄 미리보기를 생성하고, PrintManager를 통해 인쇄 UI를 띄워줍니다.

1.3 인쇄 작업 처리

PrintManager_PrintTaskRequestedPrintDocument를 이용해 인쇄 작업을 처리합니다. 인쇄할 페이지를 만들고, 그에 대한 미리보기를 제공하여 인쇄 과정을 사용자에게 보여줍니다.
private void PrintManager_PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs args) { var printTask = args.Request.CreatePrintTask("PhotoBooth Print", sourceRequestedArgs => { sourceRequestedArgs.SetSource(printDocumentSource); }); printTask.Completed += PrintTask_Completed; } private void PrintDocument_Paginate(object sender, PaginateEventArgs e) { printDocument.SetPreviewPageCount(1, PreviewPageCountType.Final); } private void PrintDocument_GetPreviewPage(object sender, GetPreviewPageEventArgs e) { // 미리 생성된 인쇄 미리보기 사용 printDocument.SetPreviewPage(1, printPreview); } private void PrintDocument_AddPages(object sender, AddPagesEventArgs e) { // 미리 생성된 인쇄 미리보기 사용 printDocument.AddPage(printPreview); printDocument.AddPagesComplete(); }
C#
복사
PrintManager_PrintTaskRequested는 인쇄 작업이 요청되었을 때 인쇄할 내용을 설정하며, PrintDocument를 통해 인쇄할 페이지의 미리보기를 제공합니다.

1.4 인쇄할 이미지 생성

인쇄할 이미지를 담을 페이지를 구성하는 함수입니다. 여기서는 촬영된 사진을 CapturedImage.Source에서 가져와 인쇄할 페이지에 추가합니다.
private UIElement CreatePrintPage() { Image printImage = new Image { Source = CapturedImage.Source, // 합성된 이미지 Stretch = Windows.UI.Xaml.Media.Stretch.UniformToFill, // 이미지가 화면에 맞게 크기 조정 HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, }; StackPanel printPanel = new StackPanel(); printPanel.Children.Add(printImage); return printPanel; }
C#
복사
이 함수에서는 합성된 이미지를 담은 Image 객체를 생성하여 인쇄할 준비를 마칩니다.

2. 실행 파일로 패키징

이제 인쇄 기능을 추가했으니 앱을 실행 파일로 패키징하여 배포할 차례입니다. UWP 앱을 실행 파일로 패키징하려면 Visual Studio에서 다음 단계를 따라 진행하면 됩니다.

2.1 프로젝트 빌드

1.
Visual Studio에서 프로젝트가 정상적으로 빌드되고 실행되는지 확인합니다.
2.
메뉴에서 Build > Build Solution을 클릭하여 프로젝트를 빌드합니다.

2.2 앱 패키징

1.
Visual Studio 메뉴에서 Project > Publish > Create App Packages를 선택합니다.
2.
"Yes"를 선택하여 앱 패키지를 만듭니다.
3.
배포할 방법으로 Sideloading을 선택하고, 앱 패키지를 생성합니다.

2.3 설치 파일 배포

패키지 생성이 완료되면 .appx 파일과 함께 필요한 인증 파일(.cer)이 포함된 패키지가 생성됩니다. 이 파일을 다른 사용자에게 제공하여 앱을 설치할 수 있습니다.

3. 마무리

이번 포스트에서는 포토 부스 앱에 인쇄 기능을 추가하고, 앱을 실행 파일로 패키징하여 배포하는 과정을 설명했습니다. 이로써 사용자는 촬영된 사진을 프린터로 출력할 수 있게 되었고, 앱을 배포할 수 있는 상태로 마무리되었습니다.

최종 요약

이 5부작 시리즈를 통해 우리는 C#과 UWP를 사용해 포토 부스 앱을 개발했습니다. 앱은 카메라 촬영, 이미지 합성, 인쇄 기능을 포함하고 있으며, 이제 배포까지 완료되었습니다. 앞으로도 UWP와 C#을 활용해 다양한 기능을 구현하고 확장할 수 있기를 바랍니다.

다른 언어로 읽기:

작가 후원하기:

제 기사가 마음에 드셨다면, 커피 한 잔으로 응원해 주세요!
Search
September 2024
Today
S
M
T
W
T
F
S