푸터 콘텐츠로 바로가기
IRONPDF 사용하기

.NET MAUI에서 PDF 보기 (단계별) 튜토리얼

.NET MAUI는 단일 코드베이스로 크로스 플랫폼 데스크톱, 웹, 모바일 앱을 빌드할 수 있게 하는 .NET의 차세대 플랫폼으로, Xamarin.Forms를 포함합니다. .NET MAUI를 사용하면 동일한 프로젝트 이름으로 Windows, macOS, iOS, Android, tvOS를 포함한 여러 플랫폼에 앱을 한 번 작성하여 배포할 수 있습니다. .NET MAUI를 통해 각 플랫폼의 최신 UI 기능을 활용할 수 있으며, 예를 들어 macOS의 다크 모드와 터치 지원, Windows 10의 음성 인식을 활용할 수 있습니다.

이 기사에서는 .NET MAUI 앱에서 IronPDF를 사용하여 많은 이점을 제공하는 PDF 문서를 생성하는 방법을 설명합니다.


IronPDF: C# PDF 라이브러리

IronPDF는 PDF 파일을 생성하고 편집할 수 있도록 하는 .NET 라이브러리입니다. .NET MAUI 응용 프로그램에서 사용하기에 완벽하며, 특정 요구에 맞게 조정할 수 있는 다양한 기능을 제공합니다. 사용하기 쉬운 API로 IronPDF는 .NET MAUI 프로젝트에 PDF 기능을 간단히 통합할 수 있게 합니다.

필수 조건

IronPDF를 사용하여 .NET MAUI에서 PDF 및 PDF 뷰어를 생성하기 위한 몇 가지 전제 조건이 있습니다:

  1. 최신 버전의 Visual Studio
  2. .NET Framework 6 또는 7
  3. Visual Studio에 설치된 MAUI 패키지
  4. Visual Studio에서 실행 중인 .NET MAUI 응용 프로그램

1단계: IronPDF 설치

새 프로젝트에 IronPDF를 설치하는 가장 좋은 방법 중 하나는 Visual Studio 내의 NuGet 패키지 관리자 콘솔을 사용하는 것입니다. 이 방법을 사용하여 IronPDF를 설치하는 것에는 몇 가지 장점이 있습니다.

  • 간단하게 할 수 있으며,
  • IronPDF의 최신 버전을 사용하고 있다는 것을 확신할 수 있습니다.

IronPDF 설치 단계

먼저 도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔로 이동하여 패키지 관리자 콘솔을 엽니다.

.NET MAUI에서 PDF를 보는 방법 (단계별) 튜토리얼, 그림 1: 패키지 관리자 콘솔 패키지 관리자 콘솔

다음으로, 다음 명령어를 입력하세요:

Install-Package IronPdf

이것은 패키지와 assets 폴더와 같은 모든 종속성을 설치합니다.

.NET MAUI에서 PDF를 보는 방법 (단계별) 튜토리얼, 그림 2: IronPDF 설치 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" />
<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" />
XML

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" />
<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" />
XML

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" />
<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" />
XML

완전한 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>
<?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>
XML

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);
    }
}
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
$vbLabelText   $csharpLabel

저장 및 보기 기능은 지원할 각 플랫폼(예: 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);
                }
            }
        }
    }
}
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(ByVal filename As String, ByVal contentType As String, ByVal 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 Namespace
$vbLabelText   $csharpLabel

Android와 macOS의 경우, 유사한 SaveAndView 구현을 가진 별도의 파일을 작성해야 합니다. 이 MAUI PDF Viewer GitHub 저장소에서 작동 예제를 확인할 수 있습니다.

4단계: PDF 기능 코드

이제 PDF 기능에 대한 코드를 작성할 시간입니다. URL을 PDF로 변환하는 기능부터 시작하겠습니다.

URL을 PDF로 변환하는 기능

URL을 PDF 기능으로 변환하기 위해 UrlToPdf 함수를 만듭니다. 함수 내에서 ChromePdfRenderer 객체를 인스턴스화하고 URL을 PDF 문서로 변환하기 위해 RenderUrlAsPdf 함수를 사용합니다. 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");
    }

}
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 Sub
$vbLabelText   $csharpLabel

HTML을 PDF로 변환하는 기능

HTML을 PDF로 변환하는 기능을 위해 HtmlToPdf 함수를 만들고 RenderHtmlAsPdf 함수를 사용하세요. 에디터 컨트롤의 텍스트를 활용하여 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");
    }
}
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 Sub
$vbLabelText   $csharpLabel

HTML 파일을 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 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
$vbLabelText   $csharpLabel

출력

프로젝트 실행 후 출력은 다음과 같습니다.

.NET MAUI에서 PDF를 보는 방법 (단계별) 튜토리얼, 그림 3: 출력 출력

이 섹션에 Microsoft 웹사이트 URL을 입력하고 버튼을 클릭하세요.

.NET MAUI에서 PDF를 보는 방법 (단계별) 튜토리얼, 그림 4: URL에서 PDF로 URL을 PDF로 변환

PDF 파일을 생성한 후 파일을 사용자 정의 목적지에 저장할 수 있는 대화 상자가 표시됩니다.

.NET MAUI에서 PDF를 보는 방법 (단계별) 튜토리얼, 그림 5: 파일 저장 파일 저장

파일을 저장한 후, 이 팝업이 나타나 PDF 파일을 보기 위한 PDF 뷰어를 선택하는 옵션을 제공합니다.

.NET MAUI에서 PDF를 보는 방법 (단계별) 튜토리얼, 그림 6: PDF 뷰어 팝업 PDF 뷰어 팝업

IronPDF는 URL을 뛰어나게 PDF로 변환합니다. 모든 색상과 이미지를 원래 모양과 형식을 그대로 유지합니다.

.NET MAUI에서 PDF를 보는 방법 (단계별) 튜토리얼, 그림 7: PDF 뷰어 팝업 PDF 뷰어 팝업

다른 모든 기능에서도 같은 절차를 따라야 합니다. IronPDF의 Blazor에서의 동작에 대해 더 알아보려면 이 IronPDF in Blazor Blog Post를 확인하세요.

"How to Convert XAML to PDF in MAUI"를 방문하여 MAUI 페이지를 PDF 문서로 변환하는 방법을 배워보세요.

요약

이 튜토리얼은 .NET MAUI 앱에서 IronPDF를 사용하여 PDF 파일과 PDF 뷰어를 생성하는 방법을 설명합니다. .NET MAUI는 단일 코드베이스로 다중 플랫폼 애플리케이션을 만들기 위한 훌륭한 도구입니다. IronPDF는 모든 .NET 애플리케이션에서 PDF 파일을 쉽게 생성하고 사용자 지정할 수 있도록 도와줍니다. IronPDF는 .NET MAUI 플랫폼과 완벽하게 호환됩니다.

IronPDF는 개발에 무료로 제공됩니다. IronPDF를 프로덕션 환경에서 테스트하려면 무료 체험 키를 받아보세요. IronPDF와 그 기능에 대한 자세한 정보를 보려면 IronPDF 공식 웹사이트를 방문하세요.

자주 묻는 질문

.NET MAUI 애플리케이션에 PDF 뷰어를 어떻게 통합할 수 있나요?

.NET MAUI 애플리케이션에서 PDF 뷰어를 통합하려면 IronPDF를 사용하여 PDF 파일의 렌더링 및 보기를 처리할 수 있습니다. IronPDF는 URL, HTML 문자열 및 HTML 파일로부터 PDF를 렌더링할 수 있으며, 이를 다양한 .NET MAUI 내 PDF 뷰어 도구를 사용하여 저장하고 표시할 수 있습니다.

.NET MAUI를 위한 IronPDF 설치 단계는 무엇인가요?

.NET MAUI를 위한 IronPDF 설정은 Visual Studio의 NuGet 패키지 관리자를 통해 IronPDF 패키지를 설치하고, 프로젝트를 설정하여 PDF 렌더링을 처리하며, IronPDF의 메서드를 사용하여 HTML, URL, 또는 HTML 파일을 PDF 문서로 변환하는 것을 포함합니다.

.NET MAUI에서 PDF 레이아웃이 보존되도록 어떻게 보장할 수 있나요?

IronPDF는 .NET MAUI 애플리케이션에서 PDF 레이아웃을 보존하는 강력한 기능을 제공합니다. RenderHtmlAsPdf 또는 RenderUrlAsPdf와 같은 메소드를 사용하여 원래의 형식과 레이아웃을 유지하면서 PDF로 콘텐츠를 변환할 수 있습니다.

.NET MAUI에서 PDF를 볼 때 일반적인 문제는 무엇이며, 어떻게 해결할 수 있나요?

.NET MAUI에서 PDF를 볼 때 일반적인 문제는 플랫폼별 렌더링 오류와 파일 접근 권한입니다. 이러한 문제는 IronPDF의 플랫폼 간 기능을 사용하고, 애플리케이션의 코드베이스에서 파일 권한을 제대로 처리하여 해결할 수 있습니다.

.NET MAUI 애플리케이션에서 HTML 콘텐츠를 PDF로 변환할 수 있나요?

네, .NET MAUI 애플리케이션에서 IronPDF의 RenderHtmlAsPdf 메소드를 사용하여 HTML 콘텐츠를 PDF로 변환할 수 있습니다. 이를 통해 HTML 문자열을 완전한 형식의 PDF 문서로 효율적으로 변환할 수 있습니다.

.NET MAUI에서 파일 저장 및 보기를 어떻게 처리하나요?

.NET MAUI에서는 IronPDF를 사용하여 PDF 파일을 생성한 다음 플랫폼별 파일 처리 API를 사용하여 파일 저장 및 보기를 구현할 수 있습니다. IronPDF는 PDF 파일을 로컬 저장소에 저장하는 것을 지원하며, 이는 PDF 뷰어로 열 수 있습니다.

.NET MAUI가 대상으로 하는 모든 플랫폼과 IronPDF가 호환되나요?

네, IronPDF는 .NET MAUI에서 목표로 하는 모든 플랫폼과 호환되며, Windows, macOS, iOS, Android 및 tvOS를 포괄하여 이러한 시스템 간의 매끄러운 PDF 생성 및 보기 경험을 제공합니다.

.NET MAUI 프로젝트에서 IronPDF를 완전 배포하기 전에 어떻게 테스트할 수 있나요?

.NET MAUI 프로젝트에서 IronPDF를 테스트하려면 무료 개발 라이선스를 사용할 수 있습니다. 이를 통해 애플리케이션에 PDF 기능을 통합하고 테스트한 후에 완전한 프로덕션 라이선스를 결정할 수 있습니다.

IronPDF는 .NET 10을 지원하며, 이는 어떤 이점을 제공하나요?

네, IronPDF는 .NET 10을 완벽하게 지원합니다. .NET 10을 사용하여 앱을 빌드할 때 어떠한 맞춤형 해결책 없이 바로 작동하며, MAUI, 웹, 데스크탑 및 클라우드 기반 앱을 포함합니다. .NET 10을 사용하면 최신 플랫폼 개선 사항, 성능 향상 및 업데이트된 API를 사용할 수 있습니다.

커티스 차우
기술 문서 작성자

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

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해