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

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

PDF Duo .NETからIronPDFに移行することで、あなたの.NET PDFワークフローは、メンテナンス状況が不明瞭で、ドキュメントが不十分なライブラリから、安定し、ドキュメントが整備され、活発にメンテナンスされているソリューションに移行します。 このガイドでは、放棄されたライブラリに関連するリスクを排除しながら、PDF Duoでは提供できない高度な機能へのアクセスを得るための、包括的で段階的な移行パスを提供します。

なぜPDF DuoからIronPDFへ移行するのか

PDFデュオのリスク問題

PDF Duo .NETは、.NETエコシステムの中でもとらえどころがなく、あまり知られていないライブラリです。 シンプルさを求める開発者には魅力的だったかもしれませんが、このライブラリの不明瞭さは、プロダクション・アプリケーションにとっては大きな課題となります:

1.出所不明:検証可能な企業の支援のない、不明な開発者。 目に見えるGitHubリポジトリやソースコードはなく、NuGetのダウンロード統計も限られており、ライセンス条件も不明確です。

2.ドキュメントの不足:信頼できる情報を見つけることはほぼ不可能です。 公式のAPIリファレンスはなく、コミュニティの例もまばらで、公式のチュートリアルやガイドもありません。 PDF Duoを利用しようとすると、信頼できる文書が少ないことが妨げになります。

3.放棄または非アクティブなステータス:更新が散発的またはまったく行われていないことから、放置の兆候が明らかです。 サポートフォーラムには、2019年からの投稿が表示され、回答はありません。 翻訳が放棄されるという現実的なリスクがあるため、重要なプロジェクトで使用することはできません。

4.機能が制限されています:基本的な機能のみ。シンプルな HTML から PDF への変換と基本的な PDF の結合のみで、フォーム、セキュリティ、透かしなどの高度な機能はありません。

5.不明なレンダリング エンジン:内部で何が行われているかは不明です。 CSS/JavaScriptのサポートは未知数で、レンダリング品質も予測できず、最新のウェブ機能のサポートも不確かです。

6.サポートリスク:故障時に救済措置がありません。 Professionalなサポートはなく、助けてくれるコミュニティもありません。

PDF DuoとIronPDFの比較

アスペクトPDF Duo .NETIronPDF
メンテナンス不明/活動中積極的な定期更新
ドキュメンテーションまばら/欠落包括的
サポートなしプロのサポートチーム
コミュニティ~ユーザー数4100万以上のNuGetダウンロード
レンダリング未知のエンジンモダンChromium
特徴基本フル機能
安定性不明生産実績
ライセンス不明確透明な

2025年と2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFはアクティブな開発と包括的なドキュメントで安定した基盤を提供し、見捨てられたライブラリに依存する不確実性を排除します。


始める前に

前提条件

  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パッケージの変更

# RemovePDF Duo .NET(if you can find the correct package name)
dotnet remove package PDFDuo.NET
dotnet remove package PDFDuo
dotnet remove package PDF-Duo

# Install IronPDF
dotnet add package IronPdf
# RemovePDF Duo .NET(if you can find the correct package name)
dotnet remove package PDFDuo.NET
dotnet remove package PDFDuo
dotnet remove package PDF-Duo

# Install IronPDF
dotnet add package IronPdf
SHELL

ライセンス構成

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

PDF Duo の使用法を特定する。

# Find all PDF Duo references
grep -r "PDFDuo\|HtmlToPdfConverter\|PdfMerger" --include="*.cs" .
# Find all PDF Duo references
grep -r "PDFDuo\|HtmlToPdfConverter\|PdfMerger" --include="*.cs" .
SHELL

完全な API リファレンス

名前空間の変更

PDF Duo .NETIronPDF
PDFDuoを使用するIronPdf;を使用しています。
PDFDuo.Documentを使用しています。IronPdf;を使用しています。
PDFDuo.Renderingを使用しています。IronPdf.Rendering;を使用しています。
PDFDuo.Settings;を使用しています。IronPdf;を使用しています。

HTMLからPDFへの変換マッピング

PDF Duo .NETIronPDFノート
new HtmlToPdfConverter().new ChromePdfRenderer().メインレンダラー
converter.ConvertHtmlString(html, path).renderer.RenderHtmlAsPdf(html).SaveAs(path)HTML文字列
converter.ConvertUrl(url, path).renderer.RenderUrlAsPdf(url).SaveAs(path)を実行します。URL変換
converter.ConvertFile(htmlPath, pdfPath).renderer.RenderHtmlFileAsPdf(htmlPath).SaveAs(pdfPath)HTMLファイル

ページ構成マッピング

PDF Duo .NETIronPDFノート
settings.PageSize = PageSize.A4.RenderingOptions.PaperSize=PdfPaperSize.A4用紙サイズ
settings.PageSize = PageSize.Letter.RenderingOptions.PaperSize=PdfPaperSize.LetterUSレター
<コード>settings.Orientation = LandscapeRenderingOptions.PaperOrientation = Landscape<//code>.オリエンテーション
new 余白(上、右、下、左)個々のマージン特性以下をご参照ください。

マージンのマッピング

PDF Duo .NETIronPDFノート
new 余白(上、右、下、左)個々のプロパティマージンなし
<コード>margins.top</コードRenderingOptions.MarginTop上マージン (mm)
<コード>margins.right</コード<コード>RenderingOptions.MarginRight</コード右マージン (mm)
<コード>margins.bottom</コードRenderingOptions.MarginBottom下マージン (mm)
<コード>margins.left</コードRenderingOptions.MarginLeft(レンダリングオプション.マージンレフト)。左マージン (mm)

ドキュメント操作マッピング

PDF Duo .NETIronPDFノート
PDFDocument.Load(パス)PdfDocument.FromFile(パス)PDFを読み込む
document.Save(パス)を実行します。pdf.SaveAs(path)のようにします。PDFを保存
<コード>document.ToBytes()</コード<コード>pdf.BinaryData</コードバイト配列を取得
new PdfMerger().PdfDocument.Merge()を使用してください。静的メソッド
merger.AddFile(パス)PdfDocument.FromFile(パス)ロードしてからマージ
<コード>merger.Merge(output)</コード></コードマージされた.SaveAs(出力)マージ後

PDF Duoでは利用できない新機能

フィーチャーIronPDF
ヘッダー/フッターRenderingOptions.HtmlHeaderHtmlFooter
ページ数{page}<//code>, <code>{total-pages}プレースホルダ
透かしpdf.ApplyWatermark(html).
パスワード保護<コード>pdf.SecuritySettings</コード
フォーム入力<コード>pdf.Form.Fields</コード
デジタル署名<コード>pdf.SignWithFile()</コード
テキスト抽出pdf.ExtractAllText()を使用してください。
PDFから画像へpdf.RasterizeToImageFiles()

コード移行の例

例1: HTMLからPDFへの変換

翻訳前(PDF Duo):

// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        converter.ConvertHtmlString(htmlContent, "output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        converter.ConvertHtmlString(htmlContent, "output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
$vbLabelText   $csharpLabel

ここでの基本的な違いは、APIパターンです。 PDF Duo の HtmlToPdfConverter.ConvertHtmlString() は、HTML と出力パスの両方を 1 回の呼び出しで受け取り、変換と保存を一緒に処理します。 IronPDFのChromePdfRenderer.RenderHtmlAsPdf()はまずPdfDocumentオブジェクトを返し、それをSaveAs()で保存します。

このオブジェクト指向のアプローチには大きな利点があります。PDFを操作(透かしの追加、文書の結合、セキュリティの追加、テキストの抽出)してから保存することができます。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。

例2: URLからPDFへの変換

翻訳前(PDF Duo):

// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.ConvertUrl("https://www.example.com", "webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.ConvertUrl("https://www.example.com", "webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
$vbLabelText   $csharpLabel

PDF Duo は、ConvertUrl(url, outputPath)<//code> による URL 変換に同じ HtmlToPdfConverter<//code> クラスを使用します。 IronPdfは専用のRenderUrlAsPdf(url)メソッドでChromePdfRendererを使い、PdfDocumentオブジェクトを返します。

主な利点は、IronPDFのChromiumベースのレンダリングエンジンが最新のCSS3とJavaScriptをサポートするのに対し、PDF Duoの未知のレンダリングエンジンではCSS/JavaScriptのサポートが不確実で、レンダリングの品質も予測できません。 URLからPDFへの変換の詳細については、こちらをご覧ください。

例 3: PDF のマージ

翻訳前(PDF Duo):

// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var merger = new PdfMerger();
        merger.AddFile("document1.pdf");
        merger.AddFile("document2.pdf");
        merger.Merge("merged.pdf");
        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var merger = new PdfMerger();
        merger.AddFile("document1.pdf");
        merger.AddFile("document2.pdf");
        merger.Merge("merged.pdf");
        Console.WriteLine("PDFs merged successfully!");
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
        Console.WriteLine("PDFs merged successfully!");
    }
}
$vbLabelText   $csharpLabel

この例は、基本的なアーキテクチャの違いを示しています。 PDF Duo は専用の PdfMerger<//code> クラスを使用し、<code>AddFile() メソッドでファイルをキューに入れ、Merge() で結合と保存をワンステップで行います。

IronPDFは異なるパターンを使っています: PdfDocument.FromFile()を使って各PDFをPdfDocumentとして読み込み、静的なPdfDocument.Merge()メソッドを使って結合します。 これは新しいPdfDocumentオブジェクトを返し、SaveAs()で別途保存します。

IronPDFのアプローチはより柔軟性があり、マージする前にPDFを操作したり、マージ結果に透かしを入れたり、セキュリティ設定を適用したりすることができます。 多数のファイルをマージするには、LINQを使用できます:

var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
$vbLabelText   $csharpLabel

PDFのマージと分割については、こちらをご覧ください。


移行後の新機能

IronPDFに移行した後は、PDF Duoでは提供できない機能を得ることができます:

ページ番号を含むヘッダーとフッター

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    MaxHeight = 25
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    MaxHeight = 25
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
$vbLabelText   $csharpLabel

PDF Duoはヘッダーやフッターに対応しておらず、同等の機能はありません。 IronPDFはHTML/CSSをフルサポートし、ページ番号のような動的コンテンツ用のプレースホルダーを内蔵しています。 ヘッダーとフッターガイドを参照してください。

ウォーターマーク

using IronPdf;
using IronPdf.Editing;

var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(
    "<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
    45,
    VerticalAlignment.Middle,
    HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");
using IronPdf;
using IronPdf.Editing;

var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(
    "<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
    45,
    VerticalAlignment.Middle,
    HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");
$vbLabelText   $csharpLabel

PDF Duoは透かしに対応していません。 IronPdfはHTMLベースの透かしを提供し、完全なCSSスタイリングをサポートします。

パスワード保護

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
$vbLabelText   $csharpLabel

PDF Duoはパスワード保護やセキュリティ設定に対応していません。

テキスト抽出

var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
$vbLabelText   $csharpLabel

PDF Duoはテキスト抽出に対応していません。


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

個々のプロパティへのマージンオブジェクト

PDF Duo は単一の Margins<//code> オブジェクトを使用します; IronPDFは個々のプロパティを使用します:

// PDF Duo:
new Margins(top: 20, right: 15, bottom: 20, left: 15)

// IronPDF:
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
// PDF Duo:
new Margins(top: 20, right: 15, bottom: 20, left: 15)

// IronPDF:
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
$vbLabelText   $csharpLabel

セーブメソッドの命名

保存のための異なるメソッド名:

// PDF Duo:
document.Save("output.pdf");

// IronPDF:
pdf.SaveAs("output.pdf");
// PDF Duo:
document.Save("output.pdf");

// IronPDF:
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

PDFの読み込み

ローディングのための異なるメソッド名:

// PDF Duo:
PDFDocument.Load("document.pdf")

// IronPDF:
PdfDocument.FromFile("document.pdf")
// PDF Duo:
PDFDocument.Load("document.pdf")

// IronPDF:
PdfDocument.FromFile("document.pdf")
$vbLabelText   $csharpLabel

プロパティへの設定オブジェクト

PDF Duo は、コンストラクタに渡された設定オブジェクトを使用します; IronPDFはプロパティを使用します:

// PDF Duo:
var settings = new PDFSettings { PageSize = PageSize.A4 };
var converter = new HtmlToPdfConverter(settings);

// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// PDF Duo:
var settings = new PDFSettings { PageSize = PageSize.A4 };
var converter = new HtmlToPdfConverter(settings);

// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
$vbLabelText   $csharpLabel

機能比較

フィーチャーPDF Duo .NETIronPDF
HTMLからPDFへ基本完全なCSS3、JavaScript
URLからPDFへ基本認証サポート付き
PDFマージはいはい
ヘッダー/フッターなしHTMLフルサポート
ページ数なし組み込みプレースホルダ
透かしなしHTMLベース
パスワード保護なし完全なセキュリティオプション
フォーム入力なしはい
デジタル署名なしはい
テキスト抽出なしはい
PDFから画像へなしはい
非同期サポート不明完全なasync/await
.NET Core/5+不明フルサポート

移行チェックリスト

移行前

  • コードベース内のすべての PDF Duo 参照を検索
  • 現在の設定(ページ サイズ、余白など)を文書化します
  • 使用されたすべてのPDF操作を一覧表示します
  • 新しい機能(ヘッダー、透かし、セキュリティ)の機会を特定する
  • IronPDFライセンスキーを取得する

パッケージの変更

  • PDFDuo.NET NuGetパッケージを削除する
  • IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf
  • 名前空間のインポートをusing PDFDuo;からusing IronPdf;に更新します。

コードの変更

  • 起動時にライセンスキー設定を追加する
  • HtmlToPdfConverter ChromePdfRendererに置き換える
  • ConvertHtmlString(html, path) RenderHtmlAsPdf(html).SaveAs(path)に置き換えます。
  • ConvertUrl(url, path) RenderUrlAsPdf(url).SaveAs(path)に置き換えます
  • PdfMergerパターンをPdfDocument.Merge()パターンに置き換えます
  • Marginsオブジェクトを個別のマージンプロパティに変換します
  • Save()SaveAs()に置き換えます
  • Load()FromFile()に置き換えます

移行後

  • PDF出力を比較する回帰テストを実行する
  • ページサイズと余白が一致していることを確認する
  • 複雑な HTML/CSS でテストする (IronPDF の最新エンジンの方がより適切に処理できるはずです)
  • 新しい機能の追加(ヘッダー、フッター、透かし、セキュリティ)
  • ドキュメントの更新

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

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

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