
ASPXからPDFへの変換
.NET MAUI (マルチプラットフォーム アプリケーションUI) は、C#とXAMLを使用してネイティブモバイルおよびデスクトップアプリを作成するためのクロスプラットフォーム フレームワークです。 .NET MAUI を使用すると、単一のコードベースで Android、iOS、macOS、および Windows を操作できます。 .NET MAUI はオープンソースで、Xamarin Forms の改善版です。 UI コントロールは、パフォーマンスと拡張性のために一から書き直されました。 さらに、それはモバイルプラットフォームからデスクトップのユースケースを含むように拡張されました。 もしクロスプラットフォームのユーザーインターフェースを作成するために Xamarin Forms を使用したことがあるならば、.NET MAUI フレームワークはそれと多くの共通点があることがわかるでしょう。
しかし、いくつかの違いがあります。 .NET MAUI フレームワークを使用して単一のプロジェクトでマルチプラットフォーム アプリを構築できますが、必要に応じてプラットフォーム固有のコードとリソースを追加できます。 .NET MAUI の主要な目標の 1 つは、可能な限りアプリのロジックと UI レイアウトを単一のコード ベースで記述できるようにすることです。 .NET MAUI はすべてのプラットフォームで利用可能であり、既存の MVVM および XAML パターンをサポートします。
.NET MAUIは、モバイル開発やWindowsプラットフォームなど、さまざまなプラットフォームで開発者が作業できるようにします。
IronPDFの機能
IronPDF は、ブラウザが処理できるほぼすべてのタスクを処理できる強力なPDFコンバーターです。 開発者向けの .NET ライブラリにより、PDF ファイルの作成、読み取り、および操作が簡単になります。 IronPDF は、Google Chrome エンジンを使用して HTML を PDF ファイルに変換します。 その他の Web テクノロジーの中で、IronPDF は HTML、ASPX、Razor ページを IronPDF で PDF に変換、MVC View をサポートします。 IronPDFはMicrosoft .NETアプリケーション(ASP.NET Webアプリケーションと従来のWindowsアプリケーションの両方)をサポートしています。 IronPDFを使用して魅力的なPDFドキュメントを作成することもできます。
IronPDFはJavaScriptおよびCSSを含むHTMLファイルからPDFファイルを作成することができます。
IronPDFを使用してHTMLファイルをPDFに変換できるだけでなく、画像ファイルをPDFに変換することもできます。
IronPDFは、インタラクティブなPDFドキュメントを作成し、IronPDFでインタラクティブなフォームを記入して送信し、PDFドキュメントをマージおよび分割し、PDFからテキストと画像を抽出し、PDFドキュメント内のテキストを検索し、PDFページを画像にラスタライズし、PDFをHTMLに変換し、IronPrintを使用してPDFドキュメントを印刷することができます。
IronPDFは、URLからドキュメントを生成できます。 HTMLのログイン フォームに IronPDF を使用して、カスタムネットワークログイン資格情報、ユーザーエージェント、プロキシ、クッキー、HTTPヘッダー、およびフォーム変数の使用も可能です。
IronPDFはPDFドキュメントを読み取り、記入することができ、ドキュメントから画像を抽出することもできます。 PDFファイルにヘッダーとフッターを追加し、テキスト、写真、ナビゲーションを容易にするブックマーク、透かし文字などをドキュメントに追加することができます。 新規または既存のドキュメントでページを結合および分割することもできます。 IronPDFは、Acrobatビューアを使用せずにドキュメントをPDFオブジェクトに変換することができます。 CSSファイルをPDFドキュメントに変換することも可能であり、CSSメディアタイプファイルをドキュメントに変換できます。
.NET MAUIでPDFファイルを作成する方法
- Visual Studioで新しい.NET MAUI PDFプロジェクトを作成
- NuGetを使用してIronPDFライブラリをインストール
- .NET MAUIコンテンツページのUIをデザイン
- PDFファイルを生成するには、
ChromePdfRenderer.RenderHtmlAsPdfメソッドを使用します。 - プラットフォーム特有のコードでユーザーのデバイスにPDFファイルを保存。
Visual Studioで新しいプロジェクトを作成する
まず、Visual Studio Code および Visual Studio の両方を使用してプロジェクトを作成します。 Visual Studio Code を使用するときは、プロジェクト タイプ テンプレートをインストールするためにコマンドライン ツールを使用する必要があります。
Microsoft Visual Studio ソフトウェアを開き、"ファイル"メニューに移動します。 "新規プロジェクト"を選択し、新しいプロジェクト ウィンドウで".NET MAUI App"を選択します。この記事では、.NET MAUI App を使用して PDF ドキュメントを生成し、適切な場所に保存します。
Visual Studioで新しいプロジェクトを作成
プロジェクトを構成する
Visual Studio プロジェクトは、.NET MAUI アプリケーション プラットフォームに従って、選択したアプリケーションの構造を生成するようになります。 今度はMainPage.csファイルが開かれて、コードを追加し、アプリケーションをビルド/実行します。
MainPage.cs ファイルにコードを追加
次に、コードをテストするためにライブラリをインストールします。
IronPDFライブラリのインストール
IronPDFライブラリは4つの方法でダウンロードとインストールが可能です。
以下のような方法です:
- Visual Studio を使用。
- Visual Studioコマンドラインを使用します。
- NuGet Webサイトからの直接ダウンロード。 Direct download from the IronPDF website.
Visual Studioを使用する
Visual Studioソフトウェアは、ソリューションにパッケージを直接インストールするためのNuGetパッケージマネージャーオプションを提供します。 以下のスクリーンショットは、NuGetパッケージマネージャーを開く方法を示しています。
NuGet パッケージ マネージャー UI に移動
これは、NuGet Web サイトからパッケージの一覧を表示する検索ボックスを提供します。NuGet パッケージ マネージャーで、"IronPDF"というキーワードを検索します。スクリーンショットのように
NuGet パッケージ マネージャー UIからIronPDFパッケージを選択
上記の画像では、関連する検索項目がリストされており、ソリューションにパッケージをインストールするために最初のオプションを選択します。 Android、iOS、および Windows プラットフォームなど、すべての .NET MAUI アプリケーション プラットフォームにインストールされます。
Visual Studio コマンドラインの使用
Visual Studioでは、ツール > NuGet パッケージ マネージャー > パッケージ マネージャー コンソールに移動します。
パッケージマネージャーコンソールタブに次の行を入力します:
パッケージは現在のプロジェクトのすべての .NET MAUI プラットフォームにダウンロード/インストールされ、使用準備が整いました。
パッケージ マネージャー コンソールにパッケージをインストール
NuGetサイトからの直接ダウンロード
3番目の方法は、WebサイトからこのIronPDF NuGet repository pageをアクセスして直接NuGetパッケージをダウンロードすることです。
- 右側のメニューからダウンロードパッケージオプションを選択します。
- ダウンロードしたパッケージをダブルクリックします。 自動的にインストールされます。 ソリューションを再読み込みすると、プロジェクトでパッケージを使用できるようになります。
IronPDF Web サイトからの直接ダウンロード
最新のIronPDF ZIPパッケージを公式サイトから直接ダウンロードしてください。ダウンロードが完了したら、以下の手順に従ってプロジェクトにパッケージを追加します。
- ソリューションウィンドウからプロジェクトの依存関係オプションを右クリックします。
- 特定のプラットフォームを選択し、オプションの参照を選択して、ダウンロードした参照の場所を参照します。
- [OK]をクリックして参照を追加します。
さらに、すべての .NET MAUI 対応プラットフォームへの参照を追加する必要があります。
IronPDF を使用して .NET MAUI アプリで PDF を作成する
プロジェクトが作成されると、MainPage.xamlという自動生成のファイルがあります。 これは、.NET MAUI アプリケーションの UI を配置する場所です。
次のコードに従います。
<?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="MAUI_PDF.MainPage"
>
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Image
Source="dotnet_bot.png"
SemanticProperties.Description="Cute .NET bot waving hi to you!"
HeightRequest="200"
HorizontalOptions="Center" />
<Label
Text="Welcome to IronPDF!"
SemanticProperties.HeadingLevel="Level1"
FontSize="32"
HorizontalOptions="Center" />
<Button
x:Name="PdfBtn"
Text="Click me to generate PDF"
SemanticProperties.Hint="Click button to generate PDF"
Clicked="GeneratePDF"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
上記のコードをMainPage.xaml.csファイルを開き、MainPageクラス内に以下のメソッドを含めます。
private void GeneratePDF(object sender, EventArgs e)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
var doc = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF!</h1> <p>I'm using IronPDF MAUI!</p>");
// Saves the memory stream as file.
SaveService saveService = new SaveService();
saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", doc.Stream);
}Private Sub GeneratePDF(ByVal sender As Object, ByVal e As EventArgs)
Dim renderer As New ChromePdfRenderer()
Dim doc = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF!</h1> <p>I'm using IronPDF MAUI!</p>")
' Saves the memory stream as file.
Dim saveService As New SaveService()
saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", doc.Stream)
End SubGeneratePDFメソッドは、"Hello, IronPDF!..."というテキストを含む新しいPDFドキュメントを生成し、指定された場所にユーザーのコンピュータに保存します。
上記のメソッドでは、新しいChromePdfRendererオブジェクトを作成し、RenderHtmlAsPdfメソッドを呼び出して、"Hello IronPDF!"という言葉を含む新しいPDFドキュメントを生成します。 ... HTMLマークアップの文字列から。次に、ユーザーのデバイス上にファイルを保存するために、SaveServiceという別のクラスに委任されます。このクラスは次のステップで作成されます。
完全なMainPage.xaml.csファイルは以下に示されています。 次のステップに進む前に、ファイルの内容が下に示されているものと一致していることを確認してください。
// Change the namespace as desired, but make sure that all source files use this same namespace,
// or there will be errors!
namespace MAUI_IronPDF;
// This namespace is required to make use of IronPDF functionality
using IronPdf;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void GeneratePDF(object sender, EventArgs e)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
var doc = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF!</h1> <p>I'm using IronPDF MAUI!</p>");
// Saves the memory stream as file.
SaveService saveService = new SaveService();
saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", doc.Stream);
}
}Imports IronPdf
' Change the namespace as desired, but make sure that all source files use this same namespace,
' or there will be errors!
Namespace MAUI_IronPDF
' This namespace is required to make use of IronPDF functionality
Partial Public Class MainPage
Inherits ContentPage
Public Sub New()
InitializeComponent()
End Sub
Private Sub GeneratePDF(ByVal sender As Object, ByVal e As EventArgs)
Dim renderer As New ChromePdfRenderer()
Dim doc = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF!</h1> <p>I'm using IronPDF MAUI!</p>")
' Saves the memory stream as file.
Dim saveService As New SaveService()
saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", doc.Stream)
End Sub
End Class
End Namespace今度は、プロジェクトのルートにSaveService.csという新しいクラスファイルを作成し、以下のソースコードを追加してください。
// Change the namespace as desired, but make sure that all source files use this same namespace,
// or there will be errors!
namespace MAUI_IronPDF
{
// SaveService partial class declaration ... this allows a layer of abstraction
// as we implement the save file details specially for each platform on which this app will
// operate!
public partial class SaveService
{
public void SaveAndView(string filename, string contentType, MemoryStream stream)
{
SaveFile(filename, contentType, stream);
}
// Additional partial files will provide implementations for this method specifically.
partial void SaveFile(string filename, string contentType, MemoryStream stream);
}
}' Change the namespace as desired, but make sure that all source files use this same namespace,
' or there will be errors!
Namespace MAUI_IronPDF
' SaveService partial class declaration ... this allows a layer of abstraction
' as we implement the save file details specially for each platform on which this app will
' operate!
Partial Public Class SaveService
Public Sub SaveAndView(ByVal filename As String, ByVal contentType As String, ByVal stream As MemoryStream)
SaveFile(filename, contentType, stream)
End Sub
' Additional partial files will provide implementations for this method specifically.
Partial Private Sub SaveFile(ByVal filename As String, ByVal contentType As String, ByVal stream As MemoryStream)
End Sub
End Class
End NamespaceWindows、Android、macOS など、各プラットフォームでのユーザー デバイスへのコンテンツの保存の実装の詳細が異なるため、アプリケーションがサポートする各デバイスタイプに対してプラットフォーム固有のコードを記述する必要があります。 これを可能にするために、抽象化目的のために、1つの部分的なメソッドSaveServiceを定義します。 これに続いて、このメソッドの実装がソリューションエクスプローラー内のPlatformsフォルダーにネストされた1つ以上のフォルダーのための別のSaveService.cs部分クラスで定義されます(下の画像を参照)。
クロスプラットフォームを実装するためのフォルダー構造
シンプルにするために、このチュートリアルでは Windows プラットフォームのみの前述の部分ファイルを定義します。 Windowsプラットフォームフォルダーの下に、新しいSaveService.csファイルを作成し、以下のコードを含めます。
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.UI.Popups;
namespace MAUI_IronPDF;
public partial class SaveService
{
async partial void SaveFile(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();
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 MAUI_IronPDF
Partial Public Class SaveService
Private Async Sub SaveFile(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 NamespaceMAUI アプリケーションをビルドおよび実行します。 以下に示すインターフェイスを含むウィンドウが表示されます。
MAUI アプリの UI
"PDFを生成"ボタンをクリックします。 数瞬後、生成された PDF ファイルの保存先を選択するポップアップが表示されます。
PDFファイルを保存する場所を選択
結論
IronPDFは、PDFの生成、読み取り、編集、形式設定を可能にする、最も一般的に使用されるPDF変換ライブラリの1つです。 IronPDF ライブラリは多くの利点と機能を提供し、指定された URL を PDF ファイルに変換するのに役立つブラウザー エンジンを提供し、CSS を HTML 文字列に追加し、PDF ファイルに変換し、PDF フォームに記入することもできます。 IronPDF のすべての機能は 1 つのライブラリに含まれています。
IronPDF にはさまざまな価格構造があります。 IronPDFの基本価格は$999から始まります。 製品サポートと更新は、1 年間の料金でも利用できます。 ロイヤリティフリーの再配布カバレッジも追加オプションとして購入できます。
要約すると、IronPDFは、PDFを扱う開発者にとって優れたパフォーマンスと多数の機能を提供しているため、おすすめです。 これは.NET MAUIなどのユニバーサルプラットフォームをサポートしています。 優れたサポートとドキュメントが付属し、IronPDFの機能を十分に活用できます。

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。
関連する記事


