フッターコンテンツにスキップ
移行ガイド

C#でPeachPDFからIronPDFに移行する方法

PeachPDFからIronPdfに移行することで、包括的な機能、活発な開発、プロフェッショナルなサポートを備えたエンタープライズグレードのPDF生成にアクセスできます。 このガイドは、基本的なHTMLからPDFへのワークフローを、最新のChromiumレンダリング、高度なセキュリティオプション、および広範な操作機能を備えたフル機能のPDFソリューションに変換する、完全でステップバイステップの移行パスを提供します。

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

PeachPDFを理解する

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

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

PeachPDFの限界について

PeachPDF は比較的新しく、あまり知られていない PDF ライブラリで、確立されたソリューションのような成熟度、機能、サポートがありません。 移行する主な理由

1.機能セットの制限:ピーチPDFには、デジタル署名、PDF/A 準拠、高度なテキスト抽出などの高度な機能が欠けています。

2.小規模なコミュニティ:ドキュメント、例、コミュニティ サポートが限られています。 ユーザーベースが小さいため、コミュニティサポートがまばらで、サポートを得たり、広範なドキュメントを見つけることが困難な場合があります。

3.不確かな将来:実績が確立されていない新しいライブラリには、導入リスクが伴います。

4.基本的な HTML サポート:制限された CSS およびJavaScriptレンダリング機能。

5.エンタープライズ サポートなし:プロフェッショナル サポートや SLA オプションはありません。

PeachPDFとIronPDFの比較

機能/特徴ピーチPDFIronPDF
実装純粋な.NET幅広い互換性で管理
ライセンスオープンソース (BSD-3 条)商用
ユーザーベース小規模大規模(40M以上のダウンロード)
サポートコミュニティ主導プロフェッショナルな専任サポート
HTMLレンダリング基本完全なChromium
CSSサポート制限的完全なCSS3
JavaScript(ジャバスクリプト基本フルES2024
デジタル署名なしはい
PDF/Aコンプライアンスなしはい
ドキュメント制限的広範囲
開発ステータス開発中成熟した安定したリリース

IronPdfはHTMLからPDFへの変換だけでなく、OCR、透かし、その他の高度な機能をサポートし、より幅広い機能を備えています。 Professionalなサポート体制は、開発者が直面する問題を迅速に解決するための決定的な利点です。

2025年と2026年まで.NET 10とC# 14の採用を計画しているチームに対して、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.comからライセンスキーを取得します。

NuGetパッケージの変更

# Remove PeachPDF
dotnet remove package PeachPDF

# Install IronPDF
dotnet add package IronPdf
# Remove PeachPDF
dotnet remove package PeachPDF

# Install IronPDF
dotnet add package IronPdf
SHELL

ライセンス構成

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

PeachPDFの使用方法を特定する

# AuditピーチPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|Convert\|ConvertUrl" --include="*.cs" .
# AuditピーチPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|Convert\|ConvertUrl" --include="*.cs" .
SHELL

完全な API リファレンス

名前空間の変更

// Before: PeachPDF
using PeachPDF;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PeachPDF
using PeachPDF;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
$vbLabelText   $csharpLabel

コア API マッピング

ピーチPDFIronPDFノート
new HtmlToPdfConverter().new ChromePdfRenderer().レンダラーの作成
converter.Convert(html).renderer.RenderHtmlAsPdf(html).HTMLからPDFへ
converter.ConvertUrl(url).renderer.RenderUrlAsPdf(url)のようにします。URLからPDFへ
<コード>converter.Header</コードrenderer.RenderingOptions.HtmlHeaderヘッダーコンテンツ
<コード>コンバーター.フッター</コードrenderer.RenderingOptions.HtmlFooterフッターコンテンツ
File.WriteAllBytes(path, pdf).pdf.SaveAs(path)のようにします。ファイルを保存
pdf (byte[])<コード>pdf.BinaryData</コードバイト
PdfReader.LoadFromFile(path)を実行します。PdfDocument.FromFile(パス)PDFを読み込む
document.MergeWith(other)を使用してください。PdfDocument.Merge(pdfs).PDFのマージ

コード移行の例

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

翻訳前 (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
$vbLabelText   $csharpLabel

翻訳後(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");
    }
}
// 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");
    }
}
$vbLabelText   $csharpLabel

この例は、2つのライブラリの基本的な違いを示しています。 PeachPDFは、バイト[]を返すConvert()メソッドを持つHtmlToPdfConverterを使用しており、保存にはFile.WriteAllBytes()が必要です。 IronPDFは組み込みのSaveAs()メソッドを持つPdfDocumentオブジェクトを返すRenderHtmlAsPdf()を持つChromePdfRendererを使用します。

PeachPDFのバイト配列が最終的な出力であるのに対し、IronPdfのアプローチの主な利点は、保存する前にPdfDocumentオブジェクトをさらに操作(透かしの追加、結合、セキュリティ設定)できることです。 IronPDFのアプローチは、よりきれいな構文と最新の.NETアプリケーションとのより良い統合を提供します。 包括的な例については、HTML to PDF documentationを参照してください。

例2: URLからPDFへの変換

翻訳前 (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        var pdf = converter.ConvertUrl(url);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        var pdf = converter.ConvertUrl(url);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
$vbLabelText   $csharpLabel

翻訳後(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");
    }
}
// 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");
    }
}
$vbLabelText   $csharpLabel

PeachPDFはConvertUrl()を使用し、IronPDFはRenderUrlAsPdf()を使用します。 IronPDFのメソッド名はより説明的で、URLがPDFとしてレンダリングされることを明示的に示しています。 どちらのライブラリもURLからPDFへの変換を同様に扱いますが、IronPDFの完全なChromiumエンジンは複雑なCSSやJavaScriptを含む最新のウェブページの優れたレンダリングを提供します。 詳しくは、チュートリアルをご覧ください。

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

翻訳前 (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.Header = "<div style='text-align:center'>My Header</div>";
        converter.Footer = "<div style='text-align:center'>Page {page}</div>";
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("document.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.Header = "<div style='text-align:center'>My Header</div>";
        converter.Footer = "<div style='text-align:center'>Page {page}</div>";
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("document.pdf", pdf);
    }
}
$vbLabelText   $csharpLabel

翻訳後(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");
    }
}
// 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");
    }
}
$vbLabelText   $csharpLabel

この例は、重要なアーキテクチャの違いを示しています。ピーチPDFはヘッダーとフッターに単純な文字列プロパティ (converter.Headerconverter.Footer) を使用します。 IronPDFはRenderingOptions.HtmlHeaderRenderingOptions.HtmlFooterに割り当てられたHtmlHeaderFooterオブジェクトを使用します。

HtmlHeaderFooterオブジェクトはヘッダー/フッターのサイズをコントロールするためのMaxHeightのような追加プロパティを含むことができます。どちらのライブラリもページ番号のプレースホルダとして{page}を使うことに注意してください。 IronPDFは総ページ数の{total-pages}<//code>もサポートしています。

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


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

コンバータ クラスの変更

PeachPDFはHtmlToPdfConverterを使用しています; IronPDFはChromePdfRendererを使用しています:

// PeachPDF
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PeachPDF
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

返品タイプの変更

PeachPDF は byte[] を返します; IronPDFはPdfDocumentを返します:

// PeachPDF: Returns byte array
byte[] pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);

// IronPDF: Returns PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
// PeachPDF: Returns byte array
byte[] pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);

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

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

// PeachPDF: Simple string properties
converter.Header = "<div>Header</div>";
converter.Footer = "<div>Footer</div>";

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

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

メソッド名の変更

ピーチPDFIronPDF
<コード>変換(html)</コードRenderHtmlAsPdf(html)を使用してください。
ConvertUrl(url)を使用してください。RenderUrlAsPdf(url)を使用してください。
<コード>File.WriteAllBytes()</コード<コード>SaveAs()</コード

移行後の新機能

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");
var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
$vbLabelText   $csharpLabel

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

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

パスワード保護

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

デジタル署名

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

非同期オペレーション

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

機能比較の概要

フィーチャーピーチPDFIronPDF
HTMLからPDFへ基本完全なChromium
URLからPDFへ制限的はい
CSSグリッド/フレックスボックスなしはい
JavaScript制限的フルES2024
PDFのマージはいはい
PDFの分割制限的はい
透かし制限的フルHTML
ヘッダー/フッター基本フルHTML
デジタル署名なしはい
PDF/Aなしはい
フォーム入力制限的はい
テキスト抽出基本はい
画像抽出なしはい
非同期サポート制限的はい
クロスプラットフォーム不明はい

よくある移行の問題

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

問題: PeachPDFはバイト配列出力のコンバーターパターンを使用しています; IronPDFはPdfDocument出力のレンダラパターンを使用します。

ソリューション:

//ピーチPDFpattern
var converter = new HtmlToPdfConverter();
var pdf = converter.Convert(html);
File.WriteAllBytes(path, pdf);

//IronPDFpattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
//ピーチPDFpattern
var converter = new HtmlToPdfConverter();
var pdf = converter.Convert(html);
File.WriteAllBytes(path, pdf);

//IronPDFpattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
$vbLabelText   $csharpLabel

課題2: 保存方法の違い

問題: PeachPDFはFile.WriteAllBytes()を必要とします; IronPDFにはSaveAs()が組み込まれています。

解決策: File.WriteAllBytes("path", pdf)pdf.SaveAs("path") に置き換えてください。

課題3: ヘッダー/フッターオブジェクト

問題 PeachPDFは文字列プロパティを使用します; IronPDFはオブジェクトプロパティを使用します。

解決策: HtmlFragmentプロパティを使用して、HtmlHeaderFooterオブジェクトでHTML文字列をラップします。


移行チェックリスト

移行前

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

パッケージの変更

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

コードの変更

  • 名前空間のインポートを更新します ( using PeachPDF;using IronPdf; )
  • ヘッダー/フッター機能のためにusing IronPdf.Rendering;を追加します
  • HtmlToPdfConverter ChromePdfRendererに置き換える
  • converter.Convert(html)renderer.RenderHtmlAsPdf(html)に置き換えます
  • converter.ConvertUrl(url)renderer.RenderUrlAsPdf(url)に置き換えます
  • File.WriteAllBytes(path, pdf)pdf.SaveAs(path)に置き換えます -<コード>converter.Header</コード/ Footer RenderingOptions.HtmlHeader / HtmlFooterオブジェクトに置き換えます
  • アプリケーションの起動時にライセンスの初期化を追加

移行後

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

カーティス・チャウ
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。