IRONSOFTWAREHOME
ビデオ

How to Convert XAML to PDF in NET MAUI | IronPDF

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

PeachPDFからIronPDFに移行することで、包括的な機能、活発な開発、プロフェッショナルなサポートを備えたエンタープライズグレードのPDF生成にアクセスできます。 このガイドは、PeachPDF の プレ-1.0非同期 HTML-to-PDF ワークフローから、Chromium レンダリング、セキュリティ設定、およびドキュメント操作 API を備えたより完全な機能 PDF ソリューションへのステップバイステップの移行パスを提供します。

なぜPeachPDFからIronPDFに移行するのか

PeachPDFを理解する

PeachPDFは、HTMLをPDFに変換する必要がある開発者向けに設計された、.NETエコシステムの比較的新しい参入者です。 ライブラリとして、PeachPDFは純粋な.NET実装を約束し、外部プロセスに依存しないことで差別化を図り、.NETがサポートされているプラットフォーム間でシームレスに統合できることを保証します。 この特徴により、PeachPDF は、軽量でマネージドなライブラリソリューションをお探しのプロジェクトにとって魅力的な選択肢となります。

PeachPDFは、その可能性にもかかわらず、まだ開発中であり、エキサイティングな可能性と注目すべき制限の両方が浮き彫りになっています。 PeachPDFは、純粋な.NET Coreを採用しているため、多様な環境での簡単な導入が約束されており、魅力的です。 しかし、ユーザーベースやコミュニティ主導のサポートが少ないため、採用が限られることにもつながります。

PeachPDFの限界について

PeachPDFは単一のメンテナーによる、1.0未満 for .NETライブラリ(最新jhaygood86によってリリースされています。 成熟性、機能、および確立されたソリューションのサポートが欠けています。 移行する主な理由

  1. **プレ-1.0 機能セット:**ピーチPDFには組み込まれたデジタル署名、PDF/A 準拠、OCR、フォーム入力、またはページレベルのヘッダー/フッター API はありません。

  2. JavaScriptエンジン不要: PeachPDFはPeachPDF.PdfSharpCoreに基づいたレイアウトレンダラーであり、ブラウザではありません; スクリプトと複雑な Grid/Flexbox レイアウトは実行されません。

  3. net8.0のみ: このパッケージはnet8.0をターゲットにしています; 古い .NET Framework / .NET 6 プロジェクトはアップグレードするか、別のライブラリを選ぶ必要があります。

  4. 小規模なコミュニティ: 単一 GitHub 管理者、限られたドキュメント、限られたサンプル。

  5. エンタープライズサポートがない: 商用サポートや SLA オプションがありません。

PeachPDFとIronPDFの比較

機能/特徴ピーチPDFIronPDF
実装ピュアマネージド.NET(PeachPDF.PdfSharpCore + SixLabors上)組み込み Chromium ランタイムで管理
ライセンスBSD-3-Clause商用
ターゲットフレームワークnet8.0のみ.NET Framework 4.6.2+, .NET 6/7/8
ユーザーベース小規模(1.0未満、0.7.26、2025年10月リリース)大規模
サポートコミュニティ主導(単一のメンテナー、jhaygood86プロフェッショナルな専任サポート
HTMLレンダリングPdfSharpCore に基づく HTML + CSS レイアウトエンジン完全なChromium
CSSサポートHTML+CSSのサブセット、ウェブフォント、@font-face完全なCSS3
JavaScript(JavaScript実行されていませんフルES2024
デジタル署名なしはい
PDF/Aコンプライアンスなしはい
ドキュメント制限付き (単一 README)広範囲
開発ステータス1.0未満(0.7.26、2025年10月)成熟した安定したリリース

IronPDFはHTMLからPDFへの変換だけでなく、OCR、透かし、その他の高度な機能をサポートし、より幅広い機能を備えています。 そのプロフェッショナルなサポート構造により、開発者が直面する問題の迅速な解決への経路を提供します。

現代の .NET を採用しているチーム向けに、IronPDF は包括的な機能と積極的なメンテナンスを提供し、現在の .NET バージョン全体での長期安定性をサポートします。


始める前に

前提条件

  1. .NET環境: .NET Framework 4.6.2+ または.NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGetアクセス: NuGetパッケージをインストールする機能
  3. IronPDFライセンス: IronPDFからライセンスキーを取得します。

NuGetパッケージの変更

# Remove PeachPDF
dotnet remove package PeachPDF

# Install IronPDF
dotnet add package IronPdf
SHELL

ライセンス構成

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

PeachPDFの使用方法を特定する

# AuditピーチPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "PdfGenerator\|PdfGenerateConfig\|GeneratePdf" --include="*.cs" .
SHELL

完全な API リファレンス

名前空間の変更

// Before: PeachPDF
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;

コア API マッピング

ピーチPDFIronPDF
new PdfGenerator()new ChromePdfRenderer()
await generator.GeneratePdf(html, config)renderer.RenderHtmlAsPdf(html)
document.Save(stream)pdf.SaveAs(path)
memStream.ToArray()pdf.BinaryData
new PdfGenerateConfig { NetworkAdapter = new HttpClientNetworkAdapter(...) }renderer.RenderUrlAsPdf(url)
config.PageSize, config.PageOrientationrenderer.RenderingOptions.PaperSize, .PaperOrientation
ソースHTMLに埋め込む(CSS position: fixed)RenderingOptions.HtmlHeader / HtmlFooter
サポートされていませんPdfDocument.FromFile(path)
サポートされていませんPdfDocument.Merge(pdfs) / pdf.AppendPdf(...)

コード移行の例

例1: HTML文字列からPDFへの変換

翻訳前 (PeachPDF):

using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = "<html><body><h1>Hello World</h1></body></html>";

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            PageOrientation = PageOrientation.Portrait
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("output.pdf");
        document.Save(stream);
    }
}

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

この例は、両方のライブラリ間の根本的な違いを示します。 PeachPDFはStreamに書き込むドキュメントを返します。 IronPDFはPdfDocumentオブジェクトを返します。

IronPDFのアプローチの実用的な利点:FileStreamなしでファイルパスを直接受け取ります。 さらなる例については HTML to PDF ドキュメント を参照してください。

例2: URLからPDFへの変換

翻訳前 (PeachPDF):

//ピーチPDFhas no ConvertUrl-style helper; URL fetching is wired via
// HttpClientNetworkAdapter and passing null HTML so the engine fetches the page.
using PeachPDF;
using PeachPDF.Network;
using PeachPDF.PdfSharpCore;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var http = new HttpClient();

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            NetworkAdapter = new HttpClientNetworkAdapter(http, new Uri("https://www.example.com"))
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(null, config);

        using var stream = File.Create("webpage.pdf");
        document.Save(stream);
    }
}
C#

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
    }
}

PeachPDF にはファーストクラスのURLからPDFへヘルパーがありません; エンジンがページをフェッチするように、構成のnull HTMLを渡します。 IronPDFはRenderUrlAsPdf(url)を直接公開しています。ピーチPDFはJavaScriptを実行しないため、シングルページアプリケーションと動的コンテンツは通常ネットワークアダプタルートを介して正しくレンダリングされません;IronPDFの Chromium エンジンは最新の CSS とJavaScriptを処理します。 詳しくは、チュートリアルをご覧ください。

例3: ヘッダーとフッターを追加する

翻訳前 (PeachPDF):

//ピーチPDFv0.7.x has no header/footer API. The closest approach is
// to embed the header/footer markup directly inside the source HTML
// using CSS positioning.
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = @"
            <html><head><style>
              .header { position: fixed; top: 0; left: 0; right: 0; text-align:center; }
              .footer { position: fixed; bottom: 0; left: 0; right: 0; text-align:center; }
            </style></head>
            <body>
              <div class='header'>My Header</div>
              <h1>Document Content</h1>
              <div class='footer'>Footer text</div>
            </body></html>";

        var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("document.pdf");
        document.Save(stream);
    }
}
C#

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}

この例は、重要なアーキテクチャの違いを示しています。 PeachPDFはPdfGenerateConfigでヘッダー/フッターAPIを公開していないので、ページChromeはCSSポジショニングを使用してソースHTML内に収める必要があります。 IronPDFはRenderingOptions.HtmlFooterに割り当て、ページのChromeと文書のコンテンツを分離します。

IronPDFのアプローチでは、ヘッダー/フッターのサイズ制御のための{total-pages}プレースホルダーをサポートします。

IronPDFに必要な追加の名前空間に注意してください: HtmlHeaderFooterクラスに必要です。


重要な移行に関する注意事項

ジェネレーター/レンダラークラスの変更

PeachPDFはPdfGenerator + PdfGenerateConfigペアを使用します; IronPDFは単一のChromePdfRendererを使用します:

// PeachPDF
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();

// IronPDF
var renderer = new ChromePdfRenderer();

非同期 vs 同期、およびリターンタイプ

PeachPDFのStreamを受け取るドキュメントを返します。 IronPDFのPdfDocumentを返します:

// PeachPDF: async, save to a Stream
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create("output.pdf");
document.Save(fs);

// IronPDF: synchronous PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;

ヘッダー/フッターのプロパティの変更

// PeachPDF: no header/footer API -- embed in source HTML
// (e.g. via CSS position:fixed)

// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Header</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Footer</div>"
};

メソッド名の変更

ピーチPDFIronPDF
await generator.GeneratePdf(html, config)renderer.RenderHtmlAsPdf(html)
NetworkAdapter = new HttpClientNetworkAdapter(...) + GeneratePdf(null, config)renderer.RenderUrlAsPdf(url)
document.Save(stream)pdf.SaveAs(path)

移行後の新機能

IronPDFに移行すると、PeachPDFでは提供できない機能が得られます:

PDFマージ

var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
C#

HTMLによるウォーターマーク

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");

パスワード保護

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");

デジタル署名

using IronPdf.Signing;

var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Document Approval",
    SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");

非同期オペレーション

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");

機能比較の概要

フィーチャーピーチPDFIronPDF
HTMLからPDFへPdfSharpCore ベースのレイアウト完全なChromium
URLからPDFへHttpClientNetworkAdapter経由(JSなし)はい
CSSグリッド/フレックスボックス部分的 / 保証されていませんはい
JavaScript実行されていませんフルES2024
PDFのマージいいえ (HTML→PDF のみ)はい
PDFの分割なしはい
透かしHTML 経由で手動フルHTML
ヘッダー/フッターHTML/CSS 経由で手動フルHTML
デジタル署名なしはい
PDF/Aなしはい
フォーム入力なしはい
テキスト抽出なしはい
画像抽出なしはい
非同期サポート非同期専用 APIはい
クロスプラットフォームnet8.0(Windows / Linux / macOS)はい

よくある移行の問題

課題1: 異なるAPIパターン

問題: PeachPDFはPdfGenerateConfig(設定)を分離しており、非同期です; IronPDFは単一のPdfDocumentを返します。

ソリューション:

//ピーチPDFpattern (async, stream-out)
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create(path);
document.Save(fs);

//IronPDFpattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
C#

問題 2: 保存先がパスではなくストリームをターゲット

問題: PeachPDFのStreamのみを受け取ります; IronPDFのpdf.SaveAs(path)はパス文字列を受け取ります。

解決策: pdf.SaveAs("file.pdf")を直接使用します。

問題 3: 既存 PDF の操作がない

**問題:**ピーチPDFは HTML-to-PDF のみです; 既存の PDF をロード、マージ、分割、編集することはできません。

解決策: マイグレート後、これらの操作をIronPDFのpdf.AppendPdfに置き換えます。


移行チェックリスト

移行前

  • コードベースでのPeachPDFの使用状況を監査する
  • カスタム構成を文書化する
  • すべてのヘッダー/フッターの実装をメモします
  • IronPDFからIronPDFライセンスキーを取得します
  • まずはIronPDFの試用ライセンスでテストしてください

パッケージの変更

  • PeachPDF NuGetパッケージの削除
  • IronPdf NuGetパッケージをインストール:dotnet add package IronPdf

コードの変更

  • 名前空間のインポートを更新(using PeachPDF;using IronPdf;
  • ヘッダー/フッターの機能のためにusing IronPdf.Rendering;を追加
  • PdfGenerator + ChromePdfRendererに置き換える
  • RenderHtmlAsPdfAsync)に置き換える
  • HttpClientNetworkAdapter + renderer.RenderUrlAsPdf(url)に置き換える
  • pdf.SaveAs(path)に置き換える
  • HTML埋め込みのヘッダー/フッターをHtmlFooterオブジェクトに置き換えます
  • アプリケーションの起動時にライセンスの初期化を追加

移行後

  • HTMLレンダリング品質をテストする
  • PDF出力が期待値と一致していることを確認
  • ページ番号付きのヘッダー/フッターのレンダリングをテストする
  • 必要に応じて新しい機能(セキュリティ、透かし、結合)を追加します

PeachPDFは、その所有者の登録商標です。 このサイトは、PeachPDFと提携しておらず、後援または推奨もされていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。)}]

Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。