IRONSOFTWAREHOME
ビデオ

ASP.NET Core Web AppでRazorページをPDFに変換する方法

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

ABCpdf for .NETからIronPDFへの切り替えは、ライセンスの簡素化、最新のドキュメント、ネイティブのクロスプラットフォーム サポートを目指す開発チームにとって戦略的なアップグレードです。 この徹底的なガイドでは、実際のシナリオからの API マッピングとコード変換の例を含む、ステップバイステップの移行パスが提供されます。

.NET Framework 4.6.2 で作業している場合でも、.NET 9 をターゲットとしている場合でも、この ABCpdf の移行ガイドはIronPDFの Chrome ベースのレンダリングエンジンへの簡単な移行を保証します。

なぜABCpdfへの移行を検討するのですか?

WebSupergoo からの ABCpdf (現在のバージョン: v13.4.4、2026 年 4 月 9 日にリリース) は、長年にわたって高性能な .NET PDF ライブラリでした。 しかし、いくつかの要因により、IronPDF は現代の開発チームにとって魅力的な代替手段となっています。

複雑なライセンス

ABCpdf は、ナビゲートするのに努力を要する階層的ライセンスモデルを使用しています。 スタンダード単一コンピュータライセンスは $329 (32ビット限定); プロフェッショナルは $479; プロフェッショナル再配布は $4,790; グループライセンスは $33,530 です。ライセンスは永続的で、v13 キーは v8–v12 もカバーします。多くの開発者は、プロジェクトの予算編成時に階層の迷宮が大きな管理上の負担と報告しています。

Windows 優先のアーキテクチャ (v13 まで)

ABCpdf はその歴史の大部分で Windows のみでした。 Linuxサポートはv13でABCpdf.ABCChrome123.Linuxランタイムパッケージによって追加されました。 macOS はサポートされておらず、いくつかの Windows 固有の機能 (XPS, WPF) は Linux 上で利用できません。

ドキュメントのスタイル

ABCpdfのドキュメンテーションは徹底していますが、古いスタイルに従っているため、最新のAPIドキュメンテーションの標準と比較すると古く感じることがあります。 新しいユーザーは、特に新しい.NETバージョンで作業するときに、必要な正確な例を見つけるのに苦労することがよくあります。

エンジン構成オーバーヘッド

ABCpdfは明示的なエンジン選択を必要とし、doc.Clear()呼び出しでの手動リソース管理が必要です。 これは、現代の開発者が避けたい定型コードをすべてのPDF操作に追加します。

IronPDFとABCpdfの比較:機能比較

次の比較表は、2つ for .NET PDFライブラリの主な違いを示しています:

フィーチャーABCpdf for .NETIronPDF
レンダリングエンジンABCChrome (Chrome123/117/86/65), Gecko, WebKit, MSHtmlフルChromium(CSS3、JavaScript)
クロスプラットフォームWindows 優先; v13 で Linux が追加 (macOS はなし)ネイティブWindows、Linux、macOS、Docker
ライセンスモデルスタンダード $329 / Pro $479 / Pro 再配布 $4,790 / グループ $33,530、永続的シンプルで透明性のある価格設定
.NETサポート.NET Framework 4.0+, .NET Core 3.0+, .NET 5+.NET Framework 4.6.2から.NET 9へ
リソース管理手動でdoc.Clear()が必要ですIDisposableはusingステートメントと共に使用します
ライセンスセットアップレジストリの使用例シンプルなコードベースのライセンスキー
ドキュメント時代遅れのスタイル豊富な例を含む最新のドキュメント

移行を始める前に

前提条件

開発環境がこれらの要件を満たしていることを確認してください:

  • .NET Framework 4.6.2+または.NET Core 3.1+ / .NET 5-9
  • Visual Studio 2019+またはJetBrains Rider
  • NuGetパッケージマネージャへのアクセス
  • IronPDFライセンスキー (無料トライアルあり)

すべてのABCpdfリファレンスを検索する

ソリューションディレクトリでこれらのコマンドを実行し、ABCpdf for .NETを使用するすべてのファイルを検索してください:

grep -r "using WebSupergoo" --include="*.cs" .
grep -r "ABCpdf" --include="*.csproj" .
SHELL

この監査では、変更が必要なすべてのファイルを特定し、完全な移行カバレッジを確保します。

予想される画期的な変更

ABCpdf for .NETとIronPDFのアーキテクチャの違いを理解することで、移行時の驚きを防ぐことができます:

カテゴリABCpdf の動作IronPDF の動作移行作業
オブジェクトモデルDocクラスは中心ですChromePdfRenderer + PdfDocumentレンダリングとドキュメントの分離
リソースのクリーンアップ手動でdoc.Clear()IDisposableパターンusingステートメントを使用します
エンジンの選択MSHtml内蔵Chromiumエンジン設定の削除
ページインデックス1ベース(doc.Page = 10ベース(pdf.Pages[0]索引参照の調整
コーディネートポイントベースでdoc.Rectを使用CSSベースのマージンCSSまたはRenderingOptionsを使用する

クイックスタート:5分でできる移行

ステップ 1: NuGet パッケージを更新する

# Remove ABCpdf
dotnet remove package ABCpdf

# Install IronPDF
dotnet add package IronPdf
SHELL

ステップ 2: ライセンスキーの設定

アプリケーション起動時、IronPDF操作の前に追加してください:

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

ステップ 3: グローバル検索と置換

コードベース全体のすべての名前空間参照を更新します:

検索置換対象
using WebSupergoo.ABCpdf13;using IronPdf;
using WebSupergoo.ABCpdf13.Objects;using IronPdf;
using WebSupergoo.ABCpdf12;using IronPdf;
using WebSupergoo.ABCpdf11;using IronPdf;

完全な API リファレンス

ドキュメント作成方法

以下の表はABCPDF for .NETのメソッドとIronPDFのメソッドの対応表です:

ABCpdf メソッドIronPDF メソッド
new Doc()new ChromePdfRenderer()
doc.AddImageUrl(url)renderer.RenderUrlAsPdf(url)
doc.AddImageHtml(html)renderer.RenderHtmlAsPdf(html)
doc.AddImageFile(path)renderer.RenderHtmlFileAsPdf(path)
doc.Read(path)PdfDocument.FromFile(path)
doc.Save(path)pdf.SaveAs(path)
doc.GetData()pdf.BinaryData
doc.Clear()usingステートメントを使用します

ページ操作方法

ABCpdf メソッドIronPDF メソッド
doc.PageCountpdf.PageCount
doc.Page = npdf.Pages[n-1]
doc.Delete(pageId)pdf.RemovePages(index)
doc.Append(otherDoc)PdfDocument.Merge(pdf1, pdf2)
doc.Rect.Inset(x, y)RenderingOptions.MarginTop/Bottom/Left/Right

セキュリティと暗号化方法

ABCpdf メソッドIronPDF メソッド
doc.Encryption.Passwordpdf.SecuritySettings.OwnerPassword
doc.Encryption.CanPrintpdf.SecuritySettings.AllowUserPrinting
doc.Encryption.CanCopypdf.SecuritySettings.AllowUserCopyPasteContent
doc.SetInfo("Title", value)pdf.MetaData.Title

コード移行の例

例1: URLからHTMLをPDFに変換する

この例では、最も一般的なPDF生成タスクの1つである、WebページのPDFへの変換を示しています。

ABCpdf for .NET実装:

// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        Doc doc = new Doc();
        doc.HtmlOptions.Engine = EngineType.Chrome123;
        doc.AddImageUrl("https://www.example.com");
        doc.Save("output.pdf");
        doc.Clear();
    }
}

IronPDFの実装:

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

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

IronPDFのアプローチでは、エンジンの明示的な設定や手作業によるクリーンアップの必要性を排除し、Chromeの完全なレンダリング機能を維持しながらコードの複雑さを軽減します。

例2: HTML文字列からPDFへ

HTML文字列をPDFに変換することは、動的なレポートやドキュメントを作成するために不可欠です。

ABCpdf for .NET実装:

// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        Doc doc = new Doc();
        doc.HtmlOptions.Engine = EngineType.Chrome123;
        doc.AddImageHtml(html);
        doc.Save("output.pdf");
        doc.Clear();
    }
}

IronPDFの実装:

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

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

IronPDFバージョンはより少ないコード行数で、デフォルトでChromeレンダリングを使用し、すべてのプラットフォームで一貫した出力を保証します。

例3: 複数のPDFをマージする

複数のPDF文書を結合することは、文書処理ワークフローにおいて頻繁に必要とされる要件です。

ABCpdf for .NET実装:

// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        Doc doc1 = new Doc();
        doc1.Read("document1.pdf");
        
        Doc doc2 = new Doc();
        doc2.Read("document2.pdf");
        
        doc1.Append(doc2);
        doc1.Save("merged.pdf");
        
        doc1.Clear();
        doc2.Clear();
    }
}

IronPDFの実装:

// NuGet: Install-Package IronPdf
using System;
using System.Collections.Generic;
using IronPdf;

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

IronPDFの静的Docインスタンスを追跡およびクリアする必要を排除します。

例4: 余白のある完全な移行パターン

この例では、カスタムの余白を持つPDFを生成するための完全な移行前/移行後を示しています。

導入前 (ABCpdf .NET 向け):

using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

public byte[] GeneratePdf(string html)
{
    Doc doc = new Doc();
    doc.HtmlOptions.Engine = EngineType.Chrome123;
    doc.Rect.Inset(20, 20);
    doc.AddImageHtml(html);
    byte[] data = doc.GetData();
    doc.Clear();  // Manual cleanup required
    return data;
}

翻訳後(IronPDF):

using IronPdf;

public byte[] GeneratePdf(string html)
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.MarginTop = 20;
    renderer.RenderingOptions.MarginBottom = 20;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    using var pdf = renderer.RenderHtmlAsPdf(html);
    return pdf.BinaryData;  // Automatic cleanup with 'using'
}

高度な移行シナリオ

.NETコアWebアプリケーション

.NET 6+ でウェブアプリケーションを構築するチームにとって、こちらが推奨するパターンです:

ABCpdfのパターン:

[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
    Doc doc = new Doc();
    doc.HtmlOptions.Engine = EngineType.Chrome123;
    doc.AddImageHtml(request.Html);
    byte[] pdfBytes = doc.GetData();
    doc.Clear();

    return File(pdfBytes, "application/pdf", "report.pdf");
}

IronPDFパターン:

[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
    var renderer = new ChromePdfRenderer();
    using var pdf = renderer.RenderHtmlAsPdf(request.Html);

    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}

現代のアプリケーションはノンブロッキングオペレーションを必要とします。

ABCpdfはネイティブの非同期をサポートしていません。 IronPDFはasyncメソッドを提供し、ウェブアプリケーションのパフォーマンスを向上させます:

using IronPdf;

public async Task<byte[]> GeneratePdfAsync(string html)
{
    var renderer = new ChromePdfRenderer();
    using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
    return pdf.BinaryData;
}

依存性注入のセットアップ

最新のC#パターンを使用してモダンな.NETアプリケーションにIronPDFを登録します:

// Program.cs (.NET 6+)
builder.Services.AddSingleton<ChromePdfRenderer>();

// Or create a service wrapper
public interface IPdfService
{
    Task<byte[]> GeneratePdfAsync(string html);
}

public class IronPdfService : IPdfService
{
    private readonly ChromePdfRenderer _renderer;

    public IronPdfService()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
    }

    public async Task<byte[]> GeneratePdfAsync(string html)
    {
        using var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
        return pdf.BinaryData;
    }
}

// Register: builder.Services.AddSingleton<IPdfService, IronPdfService>();

パフォーマンス最適化のヒント

バッチ操作のためにレンダラを再利用する

// Good: Single renderer instance
var renderer = new ChromePdfRenderer();
foreach (var html in htmlList)
{
    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"output_{i}.pdf");
}

// Bad: New renderer each time (slower startup)
foreach (var html in htmlList)
{
    var renderer = new ChromePdfRenderer(); // Overhead!
    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"output_{i}.pdf");
}

メモリ使用量の比較

シナリオABCpdf for .NETIronPDF
10ページのPDF~80 MB~50 MB
バッチ 100 PDF高(手動クリーンアップ)~100 MB
大きなHTML(5MB以上)変数~150 MB

よくある移行の問題のトラブルシューティング

PDFが空白のままレンダリングされます

症状: 移行後の出力PDFに空のページがあります。

**解決策:**JavaScriptコンテンツは、レンダリング前に完全に読み込まれない可能性があります:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
// Or wait for specific element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded");

ヘッダー/フッターが表示されません

症状: TextHeader/TextFooter が出力に表示されません。

**解決策:**余白にヘッダー/フッターコンテンツのためのスペースを確保する:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 40; // mm - leave room for header
renderer.RenderingOptions.MarginBottom = 40; // mm - leave room for footer

renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Header Text",
    FontSize = 12
};

移行チェックリスト

移行前

  • grep -r "WebSupergoo" --include="*.cs" .を使ってすべてのABCpdfの使用を監査
  • 現在のPDF出力要件を文書化する
  • 比較のためにサンプルPDF出力を使用してテストケースを作成する
  • IronPDFライセンスキーを取得する
  • バックアップコードベース

移行について

  • ABCpdf NuGetパッケージを削除する -IronPDFNuGetパッケージをインストール
  • アプリケーションの起動時にライセンスキーを追加する
  • すべてのusingステートメントを更新
  • ChromePdfRendererに変換
  • usingステートメントに置き換え
  • APIマッピングごとにメソッド呼び出しを更新
  • 座標ベースのレイアウトをCSSマージンに変換する

移行後

  • 既存のPDFテストをすべて実行
  • PDF出力の視覚的な比較(ABCpdf vs IronPDF)
  • ステージングですべてのPDFワークフローをテストする
  • パフォーマンスベンチマーク比較
  • ABCpdfライセンス設定を削除する
  • CI/CDパイプラインの依存関係を更新する
ご注意: ABCpdfはその関連オーナーの登録商標です。 このサイトは、WebSupergoo Softwareと提携しておらず、承認または後援されていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。