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

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

SelectPdfからIronPdfに移行することで、PDF生成のワークフローが、時代遅れのレンダリングエンジンを搭載したWindows専用のソリューションから、CSS3とJavaScriptをフルサポートした最新のクロスプラットフォームライブラリに変わります。 このガイドでは、Linux、Docker、Azure Functions、およびSelectPdfがサポートしないその他のクラウドプラットフォームへのデプロイを可能にする、完全でステップバイステップの移行パスを提供します。

なぜSelectPdfからIronPDFへ移行するのか

SelectPdfを理解する

SelectPdfは、C#を使用してHTMLコンテンツをPDFに変換するために設計された商用ライブラリです。 このライブラリは、アプリケーション内にPDF生成機能をシームレスに統合することを必要とする開発者向けに作られています。 SelectPdfの強みはそのシンプルなAPIにあり、PDF生成の初心者にとって魅力的な選択肢となっています。

しかし、潜在的なユーザーは、その重大な制限を認識する必要があります。 クロスプラットフォーム機能を宣伝していますが、SelectPdfはWindows環境でのみ機能します。 これは、Azure FunctionsやDockerのようなコンテナなど、クラウドベースのデプロイソリューションを検討する際に大きな障壁となります。 さらに、無料版はかなり制限されており、積極的な透かしを適用する前に5ページまでしか使用できません。 SelectPdfは、時代遅れのBlinkフォークとWebKitベースのアーキテクチャを利用しているため、CSS Gridや高度なフレックスボックスのような最新のWeb技術との互換性に問題があります。

SelectPdfの重大な制限事項

問題インパクトIronPDF ソリューション
WindowsのみLinux、Docker、Azure Functionsにはデプロイできません。クロスプラットフォームの完全サポート
時代遅れのレンダリングエンジン最新のCSSではレイアウトが崩れる最新のChromium
無料版は5ページまで5ページ以降の積極的な透かし豊富なトライアル
.NET10のサポートはありません将来を見据えた問題.NET 10をフルサポート
クラウド展開がブロックされましたAWS Lambda、Azure Functionsは使用できません。クラウドネイティブ

SelectPdfとIronPdfの比較

フィーチャーセレクトPDFIronPDF
プラットフォームサポートWindowsのみ完全なクロスプラットフォーム、10以上のディストロ
最新のWeb標準のサポート限定的(時代遅れのブリンク)フルCSS3、モダンChromium
最大無料版ページ数5ページ柔軟性、制限なし
価格について499ドルから透明で柔軟な価格設定
.NET 10サポートなしフルサポート
クラウド環境におけるデプロイメントサポート対象外完全サポート
CSSグリッド制限的フルサポート
Flexbox(フレックスボックス制限的フルサポート
CSS変数についてサポートされていませんフルサポート
ドッカーサポート対象外公式画像
Azureファンクションサポート対象外フルサポート
AWSラムダサポート対象外フルサポート

2025年、2026年まで.NET 10とC# 14の採用を計画しているチームにとって、SelectPdfは明確に.NET 10をサポートしていないため、将来的な問題が発生します。 IronPDFは最新のすべての.NETバージョンをフルサポートしています。


始める前に

前提条件

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

NuGetパッケージの変更

# Remove SelectPdf
dotnet remove package Select.HtmlToPdf

# Install IronPDF
dotnet add package IronPdf
# Remove SelectPdf
dotnet remove package Select.HtmlToPdf

# 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

完全な API リファレンス

名前空間の変更

// Before: SelectPdf
using SelectPdf;

// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
// Before: SelectPdf
using SelectPdf;

// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
$vbLabelText   $csharpLabel

コア API マッピング

セレクトPDFIronPDFノート
<コード>HtmlToPdf</コード<コード>ChromePdfRenderer</コードコアコンバータクラス
converter.ConvertHtmlString(html).renderer.RenderHtmlAsPdf(html).HTML文字列の変換
converter.ConvertUrl(url).renderer.RenderUrlAsPdf(url)のようにします。URL変換
doc.Save(パス)を実行します。pdf.SaveAs(path)のようにします。ファイルに保存
<コード>doc.Close()</コード不要IronPDFはクリーンアップを行います。
コンバーター.オプション.PdfPageSizerenderer.RenderingOptions.PaperSize用紙サイズ
コンバーター.オプション.PdfPageOrientationrenderer.RenderingOptions.PaperOrientationオリエンテーション
コンバーター.オプション.マージントップrenderer.RenderingOptions.MarginTopトップマージン
コンバーター.オプション.マージンボトムrenderer.RenderingOptions.MarginBottom下部の余白
converter.Options.MarginLeft<//code>.renderer.RenderingOptions.MarginLeft左余白
コンバーター.オプション.マージン右renderer.RenderingOptions.MarginRight右マージン
PdfPageSize.A4<コード>PdfPaperSize.A4</コードA4サイズ
<コード>PdfPageOrientation.Portrait</コード<コード>PdfPaperOrientation.Portrait</コードポートレート列挙
<コード>PdfPageOrientation.Landscape</コード<コード>PdfPaperOrientation.Landscape</コードランドスケープ列挙
{page_number}<//code><コード>{ページ}</コードページ番号プレースホルダ
{total_pages}<//code><コード>{総ページ数}</コード総ページ数

コード移行の例

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

翻訳前 (SelectPdf):

// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";

        HtmlToPdf converter = new HtmlToPdf();
        PdfDocument doc = converter.ConvertHtmlString(htmlContent);
        doc.Save("document.pdf");
        doc.Close();

        Console.WriteLine("PDF generated from HTML string");
    }
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";

        HtmlToPdf converter = new HtmlToPdf();
        PdfDocument doc = converter.ConvertHtmlString(htmlContent);
        doc.Save("document.pdf");
        doc.Close();

        Console.WriteLine("PDF generated from HTML string");
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("document.pdf");

        Console.WriteLine("PDF generated from HTML string");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("document.pdf");

        Console.WriteLine("PDF generated from HTML string");
    }
}
$vbLabelText   $csharpLabel

この例は、コアAPIの違いを示しています。 SelectPdfはコンバータークラスとしてHtmlToPdfを使用し、ConvertHtmlString()を呼び出してPdfDocumentを作成し、Save()Close()で永続化とクリーンアップを行います。

IronPDFはChromePdfRendererRenderHtmlAsPdf()を使い、SaveAs()で保存されたPdfDocumentを返します。 Close()コールは廃止され、IronPDFが自動的にリソース管理を行います。 包括的な例については、HTML to PDF documentationを参照してください。

例2: URLからPDFへの変換

翻訳前 (SelectPdf):

// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdf converter = new HtmlToPdf();
        PdfDocument doc = converter.ConvertUrl("https://www.example.com");
        doc.Save("output.pdf");
        doc.Close();

        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdf converter = new HtmlToPdf();
        PdfDocument doc = converter.ConvertUrl("https://www.example.com");
        doc.Save("output.pdf");
        doc.Close();

        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 pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        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 pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
$vbLabelText   $csharpLabel

SelectPdfのConvertUrl()メソッドはIronPDFのRenderUrlAsPdf()に直接マッピングされます。 重要な違いはレンダリングエンジンです。SelectPdfは時代遅れのBlink/WebKitフォークを使用しており、最新のCSSと格闘していますが、IronPDFは最新の安定したChromiumを使用しており、CSS3とJavaScriptを完全にサポートしています。 詳しくは、チュートリアルをご覧ください。

例3: カスタムページの設定と余白

翻訳前 (SelectPdf):

// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdf converter = new HtmlToPdf();

        converter.Options.PdfPageSize = PdfPageSize.A4;
        converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
        converter.Options.MarginTop = 20;
        converter.Options.MarginBottom = 20;
        converter.Options.MarginLeft = 20;
        converter.Options.MarginRight = 20;

        string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
        PdfDocument doc = converter.ConvertHtmlString(html);
        doc.Save("custom-settings.pdf");
        doc.Close();

        Console.WriteLine("PDF with custom settings created");
    }
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdf converter = new HtmlToPdf();

        converter.Options.PdfPageSize = PdfPageSize.A4;
        converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
        converter.Options.MarginTop = 20;
        converter.Options.MarginBottom = 20;
        converter.Options.MarginLeft = 20;
        converter.Options.MarginRight = 20;

        string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
        PdfDocument doc = converter.ConvertHtmlString(html);
        doc.Save("custom-settings.pdf");
        doc.Close();

        Console.WriteLine("PDF with custom settings created");
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom-settings.pdf");

        Console.WriteLine("PDF with custom settings created");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom-settings.pdf");

        Console.WriteLine("PDF with custom settings created");
    }
}
$vbLabelText   $csharpLabel

ページ設定のパターンはほぼ同じで、プロパティ名が変更されています: -コンバーター.オプション.PdfPageSizerenderer.RenderingOptions.PaperSize. -コンバーター.オプション.PdfPageOrientationrenderer.RenderingOptions.PaperOrientation. -PdfPageSize.A4→<コード>PdfPaperSize.A4</コードです。 -<コード>PdfPageOrientation.Portrait</コード→<コード>PdfPaperOrientation.Portrait</コードです。

マージンプロパティは、同じ名前と単位を維持します。


Windowsだけの問題

SelectPdfのプラットフォームの制限

マーケティング上の主張にもかかわらず、SelectPdf は次のことを明示的にサポートしていません。

  • Linux(ディストリビューションを問わず)
  • macOS
  • Dockerコンテナ
  • Azure 関数
  • AWSラムダ
  • Google クラウド機能
  • ARMベースのシステム

SelectPdfはWindows固有のライブラリに依存しているため、移植はできません。

プラットフォーム サポートの比較

プラットフォームセレクトPDFIronPDF
Windows Server 2019+
Windows 10/11
Ubuntu 20.04+
Debian 10 以上
CentOS 7 以上
アルパインリナックス
Amazon Linux 2
macOS 10.15+
Azure App Service(Linux)
Azure Functions
AWSラムダ
Docker (Linux)
Kubernetes

時代遅れのレンダリングエンジン

CSS機能サポートの比較

SelectPdfは時代遅れのBlink/WebKitフォークを使用しており、最新のWeb標準に追いついていません:

CSS機能セレクトPDFIronPDF
CSSグリッド⚠️ 一部/破損フル
フレックスボックス(基本)
Flexbox(ギャッププロパティ)
CSS変数
CSS calc()⚠️ 有限会社
メディアプリント⚠️ 有限会社
フォントフェイス⚠️ 有限会社
ウェブフォント⚠️ 有限会社
SVG⚠️ 基本フル
CSSトランスフォーム⚠️ 有限会社
CSSアニメーション

移行後の新機能

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

クロスプラットフォームデプロイメント

// ✅IronPDF- Works everywhere
using IronPdf;

//Azure App Service(Linux)- WORKS
// Docker container - WORKS
//AWSラムダ- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
// ✅IronPDF- Works everywhere
using IronPdf;

//Azure App Service(Linux)- WORKS
// Docker container - WORKS
//AWSラムダ- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

最新の CSS サポート

// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; --gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; --gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
$vbLabelText   $csharpLabel

Close()は必要ありません。

IronPDFはリソース管理を自動的に行います:

// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed

// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
}
// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed

// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
}
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • コードベース内のすべてのSelectPdfの使用を監査する
  • マッピング用の電流コンバータオプションを文書化します
  • ヘッダー/フッターの実装を特定する
  • ページ番号プレースホルダー構文を確認してください({page_number}<//code>→<コード>{ページ}</コード)
  • ベースURLの処理パターンに注意してください
  • ターゲット展開プラットフォームを確認する
  • ironpdf.comからIronPDFライセンスキーを取得します

コードの更新

  • Select.HtmlToPdf NuGet パッケージを削除します
  • IronPdf NuGetパッケージをインストールする
  • 名前空間のインポートを更新します ( using SelectPdf;using IronPdf; ) -<コード>HtmlToPdf</コードChromePdfRendererに置き換える
  • ConvertHtmlString()RenderHtmlAsPdf()に置き換えます
  • ConvertUrl()RenderUrlAsPdf()に置き換えます
  • オプションプロパティ名を更新します( Options.PdfPageSizeRenderingOptions.PaperSize
  • PdfPageSize PdfPaperSizeに変換する
  • PdfPageOrientation PdfPaperOrientationに変換する
  • doc.Save()pdf.SaveAs()に置き換えます
  • すべてのdoc.Close()呼び出しを削除します
  • ページ番号のプレースホルダーを修正しました({page_number}<//code>→<コード>{ページ}</コード、{total_pages}<//code>→<コード>{総ページ数}</コード)
  • アプリケーションの起動時にライセンスの初期化を追加

移行後

  • すべてのユニットテストを実行する
  • CSSレンダリング(特にGrid/Flexbox)を検証する
  • JavaScriptの実行をテストする
  • ヘッダー/フッターのページ番号を確認する
  • ターゲット プラットフォーム (Linux、Docker など) でテストする
  • パフォーマンステスト
  • PDF出力品質の比較
  • CI/CDパイプラインを更新する
  • クラウド展開をテストする(該当する場合)

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

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

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