IRONPDFの使用

.NET MAUIでPDFを表示する方法(ステップバイステップ)チュートリアル

Kannaopat Udonpant
カンナパット・ウドンパント
2023年1月30日
更新済み 2024年2月25日
共有:

.NET MAUIは、Xamarin.Formsを含むクロスプラットフォームのデスクトップ、ウェブ、およびモバイルアプリを単一のコードベースで構築できる、次世代の.NETです。 .NET MAUIを使用すると、同じプロジェクト名でアプリを一度作成し、Windows、macOS、iOS、Android、tvOSなどの複数のプラットフォームに配置できます。 .NET MAUIは、macOS上でのダークモードやタッチサポート、Windows 10での音声認識など、各プラットフォーム上で最新のUI機能を活用することも可能にします。

この記事では、.NET MAUIアプリでIronPDFを使用して、多くの利点があるPDF文書を作成する方法について説明します。


IronPDF: C# PDFライブラリ

IronPDFは、PDFファイルの生成および編集を可能にする.NETライブラリです。 これは .NET MAUI アプリケーションでの使用に最適であり、特定のニーズに合わせてカスタマイズできる多くの機能を提供します。 その使いやすいAPIにより、IronPDFはPDF機能を.NET MAUIプロジェクトに簡単に統合できます。

前提条件

.NET MAUIでIronPDFを使用して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の3つの機能のレイアウトを作成します。

PDFレイアウトへのURL

以下のテキストを使用して、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" />
XML

HTMLからPDFへのレイアウト

HTMLからPDFへのセクションのレイアウトでは、エディターコントロールとボタンを作成します。 エディタコントロールは、ユーザーからのHTMLコンテンツ文字列を受け取るために使用されます。 以下に日本語に翻訳されたコンテンツを示します:


IronPDFは、PDFドキュメントの生成、編集、暗号化、署名、および追加の機能を提供する強力なライブラリです。IronPDF for .NET、IronPDF for Java、IronPDF for Python、およびIronPDF for Node.jsなど、さまざまなプラットフォーム向けに設計されています。このソフトウェアは、PDFファイルをプログラムで操作するための簡単かつ効率的な方法を提供します。


IronOCRは、画像やPDFからテキストを抽出するための優れたツールです。IronOCR for .NETは、文字認識(OCR)をさまざまな形式の文書に適用する高度な機能を提供します。


IronXLは、スプレッドシートの生成、編集、および操作を簡素化するための信頼できるライブラリです。IronXL for .NETおよびIronXL for Pythonは、Excelファイルの読み込みおよび書き込みに優れた機能を提供します。


IronBarcodeは、バーコードの生成および読み取りを容易にするツールです。IronBarcode for .NETを使用すれば、アプリケーションにバーコード機能を簡単に統合できます。


IronQRは、高度なQRコードの作成と解析機能を提供します。IronQR for .NETは、多様なQRコード形式をサポートします。


IronZipは、ファイルの圧縮および解凍を効率的に行うためのライブラリです。IronZip for .NETを使えば、さまざまなアーカイブ形式を操作することができます。


IronWordは、Wordドキュメントの生成、編集、および操作を可能にするツールです。IronWord for .NETは、Microsoft Wordファイルの処理を簡素化します。


IronPrintは、印刷機能をプログラム内に統合するための高度なライブラリです。IronPrint for .NETによって、さまざまな印刷ニーズを満たすことができます。


IronWebScraperは、データのスクレイピングおよびウェブからの情報抽出を効率化するツールです。IronWebScraper for .NETを使用すれば、ウェブサイトから必要なデータを簡単に収集できます。


Iron Suiteには、上記すべての製品が含まれており、総合的なソリューションを提供します。Lite License、Plus License、Professional License、およびUnlimited Licenseなど、さまざまなライセンスオプションが利用可能です。Iron Suite Unlimitedは、制限のない使用を可能にします。


Iron Softwareの製品は、さまざまな開発プラットフォームにおけるPDF処理、OCR、スプレッドシート管理、バーコードおよびQRコード操作、ファイル圧縮、Word文書、印刷、およびWebスクレイピングに関するニーズを満たします。

<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に変換するには、ボタンを1つだけ追加します。 そのボタンを使用すると、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" />
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

ステップ 3: PDFファイルの保存および表示のためのコード

.NET MAUIにはローカルストレージにファイルを保存するための既製機能がありません。 したがって、コードを自分で書く必要があります。 保存および表示機能を作成するために、SaveServiceという名前の部分クラスが作成され、ファイル名、ファイルのコンテンツタイプ、およびファイルを書き込むためのメモリストリームの3つのパラメータを持つ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);
    }
}

保存および表示機能は、サポートを予定している各プラットフォーム(例: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);
                }
            }
        }
    }
}

AndroidとmacOS用には、同等のSaveAndViewの実装を持つ別々のファイルを作成する必要があります。 このMAUI PDF Viewer GitHub リポジトリから動作する例を取得できます。

ステップ4:PDF機能のコード

さて、PDF機能のコードを記述する時が来ました。 URLからPDFへの機能を始めましょう。

URL から PDF への機能

URLをPDFに変換する機能のためのUrlToPdf関数を作成します。 関数内で、ChromePdfRenderer オブジェクトをインスタンス化し、RenderUrlAsPdf 関数を使用してURLをPDFドキュメントに変換します。 RenderUrlAsPdf 関数は、Web サーバーから URL のデータを取得し、それを処理して PDF ドキュメントに変換します。 パラメーターでは、URLエントリーコントロールでテキストを渡し、SaveServiceクラスのオブジェクトを作成し、SaveAndView関数を使用します。 SaveAndView 関数のパラメーターには、生成されたPDFファイルのストリームを渡します。

SaveAndView 関数は、任意のカスタマイズされたパスにファイルを保存し、PDFファイルを表示するオプションを提供します。 最後に、PDFファイルの作成に関する情報をアラートボックスで表示します。ユーザーが空の入力コントロールでPDFファイルを作成しようとすると、エラーメッセージと警告が表示されるアラートボックスが表示されます。

private void UrlToPdf(object sender, EventArgs e)
{
    if (URL.Text != null)
    {
        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 (URL.Text != null)
    {
        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");
    }

}

HTMLをPDFに変換する機能

HTMLをPDFに変換する機能のために、HtmlToPdf関数を作成し、RenderHtmlAsPdf関数を使用します。 エディターコントロールのテキストを使用し、それをRenderHtmlAsPdf関数のパラメーターに渡します。 上記の関数と同様に、PDFファイルを保存した後に表示する機能を有効にするためにSaveAndView関数を使用します。

private void HtmlToPdf(object sender, EventArgs e)
{
    if (HTML.Text != null)
    {
        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 (HTML.Text != null)
    {
        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");
    }
}

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");
}

出力

プロジェクトを実行した後、出力はこのようになります。

.NET MAUIでPDFを表示する方法(ステップバイステップ)チュートリアル、図3:出力

出力

MicrosoftのウェブサイトURLをこのセクションに入力し、ボタンをクリックしてください。

.NET MAUIでPDFを表示する方法(ステップバイステップ)チュートリアル、図4: PDFへのURL

URL の PDF 変換

PDFファイルを作成した後、カスタマイズされた保存先にファイルを保存するためのダイアログボックスが表示されます。

.NET MAUIでPDFを表示する方法(ステップバイステップ)チュートリアル、図5:ファイルを保存

ファイルを保存

ファイルを保存した後、このポップアップが表示され、PDFファイルを表示するためのPDFビューアーを選択するオプションが提供されます。

.NET MAUIでPDFを表示する方法(ステップバイステップ)チュートリアル、図6: PDFビューアーポップアップ

PDFビューアポップアップ

IronPDFはURLを優れたPDFに変換します。 それはすべての色と画像をオリジナルの形とフォーマットで保持します。

.NET MAUIでPDFを表示する方法(ステップバイステップ)チュートリアル、図7: PDFビューアポップアップ

PDFビューアポップアップ

すべての他の機能にも同じ手順を従う必要があります。 Blazor における IronPDF の動作について詳しく知るには、こちらの Blazor ブログ投稿 をご覧ください。

MAUIのページをXAMLとしてPDFドキュメントに変換する方法について学ぶには、"MAUIでXAMLをPDFに変換する方法"をご覧ください。

サマリー

このチュートリアルでは、.NET MAUIアプリでIronPDFを使用してPDFファイルおよびPDFビューアを作成しました。 .NET MAUIは、単一のコードベースでマルチプラットフォームアプリケーションを作成するための素晴らしいツールです。 IronPDFは、任意の.NETアプリケーションでPDFファイルを簡単に作成およびカスタマイズするのに役立ちます。 IronPDFは.NET MAUIプラットフォームと完全に互換性があります。

IronPDFは開発に無料です。 無料トライアルキーを取得して、IronPDFを本番環境でテストできます。 IronPDFとその機能に関する詳細は、IronPDF公式ウェブサイトをご覧ください。

Kannaopat Udonpant
カンナパット・ウドンパント
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、カンナパットは日本の北海道大学から環境資源学の博士号を取得しました。学位を取得する過程で、カンナパットはバイオプロダクション工学部に所属する車両ロボティクス研究所のメンバーにもなりました。2022年には、C#のスキルを活かしてIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。カンナパットは、IronPDFで使用されているコードの大部分を作成した開発者から直接学べることに価値を見いだしています。同僚との学び合いに加えて、Iron Softwareで働くことの社会的側面も楽しんでいます。コードやドキュメントを書いていない時には、カンナパットは通常、PS5でゲームをしたり、『The Last of Us』を再視聴したりしています。
< 以前
C#でPPT(PowerPoint)をPDFに変換する方法(チュートリアル例)
次へ >
IronPDFを使用したC#でのPDFiumの代替案