
여러 페이지를 하나의 PDF 파일로 스캔하는 방법
.NET MAUI는 단일 코드베이스로 크로스 플랫폼 데스크톱, 웹, 모바일 앱을 빌드할 수 있게 하는 .NET의 차세대 플랫폼으로, Xamarin.Forms를 포함합니다. .NET MAUI를 사용하면 동일한 프로젝트 이름으로 Windows, macOS, iOS, Android, tvOS를 포함한 여러 플랫폼에 앱을 한 번 작성하여 배포할 수 있습니다. .NET MAUI를 통해 각 플랫폼의 최신 UI 기능을 활용할 수 있으며, 예를 들어 macOS의 다크 모드와 터치 지원, Windows 10의 음성 인식을 활용할 수 있습니다.
이 기사에서는 .NET MAUI 앱에서 IronPDF를 사용하여 많은 이점을 제공하는 PDF 문서를 생성하는 방법을 설명합니다.
.NET MAUI에서 PDF 파일 보기 방법
- .NET MAUI에서 PDF 파일을 보기 위해 IronPDF 설치
- MAUI 프로젝트의 프론트엔드 디자인 설정
- 로컬 저장소에 파일 저장 및 PDF 보기 처리
- URL, HTML 문자열 또는 파일을 위한 렌더링 메소드 사용
- 3단계에서 커스텀 핸들러로 렌더링된 PDF 전달
IronPDF: C# PDF 라이브러리
IronPDF는 PDF 파일을 생성하고 편집할 수 있도록 하는 .NET 라이브러리입니다. .NET MAUI 응용 프로그램에서 사용하기에 완벽하며, 특정 요구에 맞게 조정할 수 있는 다양한 기능을 제공합니다. 사용하기 쉬운 API로 IronPDF는 .NET MAUI 프로젝트에 PDF 기능을 간단히 통합할 수 있게 합니다.
필수 조건
IronPDF를 사용하여 .NET MAUI에서 PDF 및 PDF 뷰어를 생성하기 위한 몇 가지 전제 조건이 있습니다:
- 최신 버전의 Visual Studio
- .NET Framework 6 또는 7
- Visual Studio에 설치된 MAUI 패키지
- Visual Studio에서 실행 중인 .NET MAUI 응용 프로그램
1단계: IronPDF 설치
새 프로젝트에 IronPDF를 설치하는 가장 좋은 방법 중 하나는 Visual Studio 내의 NuGet 패키지 관리자 콘솔을 사용하는 것입니다. 이 방법을 사용하여 IronPDF를 설치하는 것에는 몇 가지 장점이 있습니다.
- 간단하게 할 수 있으며,
- IronPDF의 최신 버전을 사용하고 있다는 것을 확신할 수 있습니다.
IronPDF 설치 단계
먼저 도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔로 이동하여 패키지 관리자 콘솔을 엽니다.
패키지 관리자 콘솔
다음으로, 다음 명령어를 입력하세요:
이 패키지와 모든 종속성을 assets 폴더와 함께 설치합니다.
IronPDF 설치
이제 MAUI 프로젝트에서 IronPDF를 사용할 수 있습니다.
2단계: .NET MAUI에서 프런트엔드 디자인 설정하기
먼저, IronPDF의 기능 세 가지에 대한 레이아웃을 만드세요.
URL을 PDF로 변환하는 레이아웃
.NET MAUI 레이블 컨트롤을 사용하여 'PDF로 변환할 URL 입력'이라는 텍스트가 있는 레이블을 만드세요. 그런 후에 수평 스택 레이아웃을 적용하여 Entry 컨트롤과 버튼을 수평으로 배열합니다. 그런 다음, 컨트롤 후에 선을 넣어서 다음 섹션의 컨트롤을 나눕니다.
<Label
Text="Enter URL to Convert PDF"
SemanticProperties.HeadingLevel="Level1"
FontSize="18"
HorizontalOptions="Center"
/>
<HorizontalStackLayout
HorizontalOptions="Center">
<Border Stroke="White"
StrokeThickness="2"
StrokeShape="RoundRectangle 5,5,5,5"
HorizontalOptions="Center">
<Entry
x:Name="URL"
HeightRequest="50"
WidthRequest="300"
HorizontalOptions="Center"
/>
</Border>
<Button
x:Name="urlPDF"
Text="Convert URL to PDF"
Margin="30,0,0,0"
Clicked="UrlToPdf"
HorizontalOptions="Center" />
</HorizontalStackLayout>
<Line Stroke="White" X2="1500" />
HTML을 PDF로 변환하는 레이아웃
HTML을 PDF로 변환하는 레이아웃의 경우, Editor 컨트롤과 버튼을 만드세요. Editor 컨트롤은 사용자의 HTML 콘텐츠 문자열을 받을 때 사용됩니다. 추가적으로, 구분선으로 사용할 선을 추가하세요.
<Label
Text="Enter HTML to Convert to PDF"
SemanticProperties.HeadingLevel="Level2"
FontSize="18"
HorizontalOptions="Center" />
<Border
Stroke="White"
StrokeThickness="2"
StrokeShape="RoundRectangle 5,5,5,5"
HorizontalOptions="Center">
<Editor
x:Name="HTML"
HeightRequest="200"
WidthRequest="300"
HorizontalOptions="Center"
/>
</Border>
<Button
x:Name="htmlPDF"
Text="Convert HTML to PDF"
Clicked="HtmlToPdf"
HorizontalOptions="Center" />
<Line Stroke="White" X2="1500" />
HTML 파일을 PDF로 변환하는 레이아웃
HTML 파일을 PDF로 변환하기 위해서는 버튼 하나만 추가하세요. 그 버튼은 IronPDF를 사용하여 HTML 파일을 PDF 문서로 변환하는 데 도움을 줍니다.
<Label
Text="Convert HTML file to PDF"
SemanticProperties.HeadingLevel="Level2"
FontSize="18"
HorizontalOptions="Center" />
<Button
x:Name="htmlFilePDF"
Text="Convert HTML file to PDF"
Clicked="FileToPdf"
HorizontalOptions="Center" />
완전한 UI 코드
.NET MAUI 프런트 엔드의 전체 소스 코드는 아래와 같습니다.
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="PDF_Viewer.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Label
Text="Enter URL to Convert PDF"
SemanticProperties.HeadingLevel="Level1"
FontSize="18"
HorizontalOptions="Center"
/>
<HorizontalStackLayout
HorizontalOptions="Center">
<Border Stroke="White"
StrokeThickness="2"
StrokeShape="RoundRectangle 5,5,5,5"
HorizontalOptions="Center">
<Entry
x:Name="URL"
HeightRequest="50"
WidthRequest="300"
HorizontalOptions="Center"
/>
</Border>
<Button
x:Name="urlPDF"
Text="Convert URL to PDF"
Margin="30,0,0,0"
Clicked="UrlToPdf"
HorizontalOptions="Center" />
</HorizontalStackLayout>
<Line Stroke="White" X2="1500" />
<Label
Text="Enter HTML to Convert to PDF"
SemanticProperties.HeadingLevel="Level2"
FontSize="18"
HorizontalOptions="Center" />
<Border
Stroke="White"
StrokeThickness="2"
StrokeShape="RoundRectangle 5,5,5,5"
HorizontalOptions="Center">
<Editor
x:Name="HTML"
HeightRequest="200"
WidthRequest="300"
HorizontalOptions="Center"
/>
</Border>
<Button
x:Name="htmlPDF"
Text="Convert HTML to PDF"
Clicked="HtmlToPdf"
HorizontalOptions="Center" />
<Line Stroke="White" X2="1500" />
<Label
Text="Convert HTML file to PDF"
SemanticProperties.HeadingLevel="Level2"
FontSize="18"
HorizontalOptions="Center" />
<Button
x:Name="htmlFilePDF"
Text="Convert HTML file to PDF"
Clicked="FileToPdf"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
3단계: PDF 파일 저장 및 보기 코드
.NET MAUI에는 로컬 저장소에 파일을 저장하는 사전 구축 기능이 없습니다. 따라서 코드를 직접 작성해야 합니다. 저장 및 보기 기능을 만들기 위해 SaveService라는 부분 클래스를 생성하고, SaveAndView라는 세 가지 매개변수를 가진 부분 void 함수를 파일 이름, 파일 콘텐츠 유형, 파일을 쓰기 위한 메모리 스트림으로 생성합니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDF_Viewer
{
public partial class SaveService
{
public partial void SaveAndView(string filename, string contentType, MemoryStream stream);
}
}Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Namespace PDF_Viewer
Partial Public Class SaveService
Public Partial Private Sub SaveAndView(ByVal filename As String, ByVal contentType As String, ByVal stream As MemoryStream)
End Sub
End Class
End Namespace저장 및 보기 기능은 지원할 각 플랫폼(예: Android, macOS 및/또는 Windows)에 대해 구현해야 합니다. Windows 플랫폼에서는 'SaveWindows.cs'라는 파일을 만들고 SaveAndView라는 부분 메서드를 구현하십시오.
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.UI.Popups;
namespace PDF_Viewer
{
public partial class SaveService
{
public async partial void SaveAndView(string filename, string contentType, MemoryStream stream)
{
StorageFile stFile;
string extension = Path.GetExtension(filename);
//Gets process windows handle to open the dialog in application process.
IntPtr windowHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
//Creates file save picker to save a file.
FileSavePicker savePicker = new FileSavePicker();
savePicker.DefaultFileExtension = ".pdf";
savePicker.SuggestedFileName = filename;
//Saves the file as PDF file.
savePicker.FileTypeChoices.Add("PDF", new List<string>() { ".pdf" });
WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle);
stFile = await savePicker.PickSaveFileAsync();
}
else
{
StorageFolder local = ApplicationData.Current.LocalFolder;
stFile = await local.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
}
if (stFile != null)
{
using (IRandomAccessStream zipStream = await stFile.OpenAsync(FileAccessMode.ReadWrite))
{
//Writes compressed data from memory to file.
using Stream outstream = zipStream.AsStreamForWrite();
outstream.SetLength(0);
//Saves the stream as file.
byte [] buffer = stream.ToArray();
outstream.Write(buffer, 0, buffer.Length);
outstream.Flush();
}
//Create message dialog box.
MessageDialog msgDialog = new("Do you want to view the document?", "File has been created successfully");
UICommand yesCmd = new("Yes");
msgDialog.Commands.Add(yesCmd);
UICommand noCmd = new("No");
msgDialog.Commands.Add(noCmd);
WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle);
//Showing a dialog box.
IUICommand cmd = await msgDialog.ShowAsync();
if (cmd.Label == yesCmd.Label)
{
//Launch the saved file.
await Windows.System.Launcher.LaunchFileAsync(stFile);
}
}
}
}
}Imports Windows.Storage
Imports Windows.Storage.Pickers
Imports Windows.Storage.Streams
Imports Windows.UI.Popups
Namespace PDF_Viewer
Partial Public Class SaveService
Public Async Sub SaveAndView(filename As String, contentType As String, stream As MemoryStream)
Dim stFile As StorageFile
Dim extension As String = Path.GetExtension(filename)
'Gets process windows handle to open the dialog in application process.
Dim windowHandle As IntPtr = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle
If Not Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons") Then
'Creates file save picker to save a file.
Dim savePicker As New FileSavePicker()
savePicker.DefaultFileExtension = ".pdf"
savePicker.SuggestedFileName = filename
'Saves the file as PDF file.
savePicker.FileTypeChoices.Add("PDF", New List(Of String)() From {".pdf"})
WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle)
stFile = Await savePicker.PickSaveFileAsync()
Else
Dim local As StorageFolder = ApplicationData.Current.LocalFolder
stFile = Await local.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting)
End If
If stFile IsNot Nothing Then
Using zipStream As IRandomAccessStream = Await stFile.OpenAsync(FileAccessMode.ReadWrite)
'Writes compressed data from memory to file.
Using outstream As Stream = zipStream.AsStreamForWrite()
outstream.SetLength(0)
'Saves the stream as file.
Dim buffer() As Byte = stream.ToArray()
outstream.Write(buffer, 0, buffer.Length)
outstream.Flush()
End Using
End Using
'Create message dialog box.
Dim msgDialog As New MessageDialog("Do you want to view the document?", "File has been created successfully")
Dim yesCmd As New UICommand("Yes")
msgDialog.Commands.Add(yesCmd)
Dim noCmd As New UICommand("No")
msgDialog.Commands.Add(noCmd)
WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle)
'Showing a dialog box.
Dim cmd As IUICommand = Await msgDialog.ShowAsync()
If cmd.Label = yesCmd.Label Then
'Launch the saved file.
Await Windows.System.Launcher.LaunchFileAsync(stFile)
End If
End If
End Sub
End Class
End NamespaceAndroid 및 macOS에서는 동일한 SaveAndView 구현을 가진 별도의 파일을 생성해야 합니다. 이 MAUI PDF Viewer GitHub 저장소에서 작동 예제를 확인할 수 있습니다.
4단계: PDF 기능 코드
이제 PDF 기능에 대한 코드를 작성할 시간입니다. URL을 PDF로 변환하는 기능부터 시작하겠습니다.
URL을 PDF로 변환하는 기능
URL을 PDF로 변환하는 기능을 위한 UrlToPdf 함수를 만드십시오. 함수 내부에서 ChromePdfRenderer 객체를 인스턴스화하고, RenderUrlAsPdf 함수를 사용하여 URL을 PDF 문서로 변환하십시오. RenderUrlAsPdf 함수는 웹 서버에서 URL의 데이터를 가져와 PDF 문서로 변환합니다. 매개변수에서는 URL 입력 컨트롤에 있는 텍스트를 전달하고, SaveService 클래스의 객체를 생성하고, SaveAndView 함수를 사용하십시오. SaveAndView 함수의 매개변수에서는 생성된 PDF 파일의 스트림을 전달하십시오.
SaveAndView 함수는 파일을 사용자 정의 경로에 저장하고 PDF 파일을 볼 수 있는 옵션을 제공합니다. 마지막으로, PDF 파일 생성 정보를 제공하는 경고 상자를 표시합니다. 사용자가 빈 입력 컨트롤로 PDF 파일 생성을 시도하면 오류 메시지와 경고가 포함된 경고 상자가 표시됩니다.
private void UrlToPdf(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(URL.Text))
{
var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf(URL.Text.Trim());
SaveService saveService = new SaveService();
saveService.SaveAndView("URLtoPDF.pdf", "application/pdf", pdf.Stream);
DisplayAlert("Success", "PDF from URL Created!", "OK");
}
else
{
DisplayAlert("Error", "Field can't be empty! \nPlease enter URL!", "OK");
}
}Imports Microsoft.VisualBasic
Private Sub UrlToPdf(ByVal sender As Object, ByVal e As EventArgs)
If Not String.IsNullOrEmpty(URL.Text) Then
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf(URL.Text.Trim())
Dim saveService As New SaveService()
saveService.SaveAndView("URLtoPDF.pdf", "application/pdf", pdf.Stream)
DisplayAlert("Success", "PDF from URL Created!", "OK")
Else
DisplayAlert("Error", "Field can't be empty! " & vbLf & "Please enter URL!", "OK")
End If
End SubHTML을 PDF로 변환하는 기능
HTML을 PDF로 변환하는 기능을 위해 HtmlToPdf 함수를 만들고 RenderHtmlAsPdf 함수를 사용하십시오. Editor 컨트롤의 텍스트를 사용하여 RenderHtmlAsPdf 함수의 매개변수로 전달하십시오. 위 함수와 비슷하게, PDF 파일을 저장한 후에 볼 수 있는 기능을 사용하도록 SaveAndView 함수를 사용하십시오.
private void HtmlToPdf(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(HTML.Text))
{
var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(HTML.Text);
SaveService saveService = new SaveService();
saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", pdf.Stream);
DisplayAlert("Success", "PDF from HTML Created!", "OK");
}
else
{
DisplayAlert("Error", "Field can't be empty! \nPlease enter valid HTML!", "OK");
}
}Imports Microsoft.VisualBasic
Private Sub HtmlToPdf(ByVal sender As Object, ByVal e As EventArgs)
If Not String.IsNullOrEmpty(HTML.Text) Then
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(HTML.Text)
Dim saveService As New SaveService()
saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", pdf.Stream)
DisplayAlert("Success", "PDF from HTML Created!", "OK")
Else
DisplayAlert("Error", "Field can't be empty! " & vbLf & "Please enter valid HTML!", "OK")
End If
End SubHTML 파일을 PDF로 변환하는 기능
HTML 파일을 PDF 파일로 변환하기 위한 FileToPdf 함수를 만드십시오. RenderHtmlFileAsPdf 함수를 사용하고 HTML 파일 경로를 매개변수로 전달하십시오. 모든 HTML 콘텐츠를 PDF로 변환하고 출력 파일을 저장합니다.
private void FileToPdf(object sender, EventArgs e)
{
var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf(@"C:\Users\Administrator\Desktop\index.html");
SaveService saveService = new SaveService();
saveService.SaveAndView("HTML File to PDF.pdf", "application/pdf", pdf.Stream);
DisplayAlert("Success", "PDF from File Created!", "OK");
}Private Sub FileToPdf(ByVal sender As Object, ByVal e As EventArgs)
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("C:\Users\Administrator\Desktop\index.html")
Dim saveService As New SaveService()
saveService.SaveAndView("HTML File to PDF.pdf", "application/pdf", pdf.Stream)
DisplayAlert("Success", "PDF from File Created!", "OK")
End Sub출력
프로젝트 실행 후 출력은 다음과 같습니다.
산출
이 섹션에 Microsoft 웹사이트 URL을 입력하고 버튼을 클릭하세요.
URL을 PDF로 변환
PDF 파일을 생성한 후 파일을 사용자 정의 목적지에 저장할 수 있는 대화 상자가 표시됩니다.
파일 저장
파일을 저장한 후, 이 팝업이 나타나 PDF 파일을 보기 위한 PDF 뷰어를 선택하는 옵션을 제공합니다.
PDF 뷰어 팝업
IronPDF는 URL을 뛰어나게 PDF로 변환합니다. 모든 색상과 이미지를 원래 모양과 형식을 그대로 유지합니다.
PDF 뷰어 팝업
다른 모든 기능에서도 같은 절차를 따라야 합니다. IronPDF의 Blazor에서의 동작에 대해 더 알아보려면 이 IronPDF in Blazor Blog Post를 확인하세요.
"MAUI에서 XAML을 PDF로 변환하는 방법"을 방문하여 MAUI 페이지를 XAML로 PDF 문서로 변환하는 방법을 배우세요.
요약
이 튜토리얼은 .NET MAUI 앱에서 IronPDF를 사용하여 PDF 파일과 PDF 뷰어를 생성하는 방법을 설명합니다. .NET MAUI는 단일 코드베이스로 다중 플랫폼 애플리케이션을 만들기 위한 훌륭한 도구입니다. IronPDF는 모든 .NET 애플리케이션에서 PDF 파일을 쉽게 생성하고 사용자 지정할 수 있도록 도와줍니다. IronPDF는 .NET MAUI 플랫폼과 완벽하게 호환됩니다.
IronPDF는 개발에 무료로 제공됩니다. IronPDF를 프로덕션 환경에서 테스트하려면 무료 체험 키를 받아보세요. IronPDF와 그 기능에 대한 자세한 정보를 보려면 IronPDF 공식 웹사이트를 방문하세요.

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.
관련 기사


