.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 문서를 생성하는 방법을 설명합니다.
.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 패키지 관리자 > 패키지 관리자 콘솔로 이동하여 패키지 관리자 콘솔을 엽니다.
패키지 관리자 콘솔
다음으로, 다음 명령어를 입력하세요:
Install-Package IronPdf
이것은 패키지와 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" />
<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" />
<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" />
<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>
<?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);
}
}
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);
}
}
}
}
}
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
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
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
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
출력
프로젝트 실행 후 출력은 다음과 같습니다.
출력
이 섹션에 Microsoft 웹사이트 URL을 입력하고 버튼을 클릭하세요.
URL을 PDF로 변환
PDF 파일을 생성한 후 파일을 사용자 정의 목적지에 저장할 수 있는 대화 상자가 표시됩니다.
파일 저장
파일을 저장한 후, 이 팝업이 나타나 PDF 파일을 보기 위한 PDF 뷰어를 선택하는 옵션을 제공합니다.
PDF 뷰어 팝업
IronPDF는 URL을 뛰어나게 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를 사용할 수 있습니다.


