ActivePDFからIronPDFへの移行:(.NET ガイド)
ActivePDFからIronPDFへの移行:完全なC#移行ガイド
ActivePDFは、.NET開発者のための信頼できるPDF操作ツールキットとして長い間役立ってきました。 しかし、Foxitによる買収以来、多くの開発チームは、プラットフォームの将来の方向性、ライセンス条件、継続的な技術革新について不確実性に直面しています。 このガイドでは、ActivePDFから.NET Framework 4.6.2から.NET 9以降をフルサポートし、アクティブにメンテナンスされている最新の.NET PDFライブラリであるIronPDFへの包括的でステップバイステップの移行パスを提供します。
ActivePDFから移行する理由
FoxitによるActivePDFの買収は、.NETアプリケーションでPDF生成・操作ソリューションを構築する開発者に影響を与えるいくつかの課題をもたらしました。
不確かな製品の将来
ActivePDFがFoxitの所有下に移行したことで、ツールキットの長期的な開発軌道について正当な疑問が生じました。 ActivePDFに依存している開発者は、ライブラリがレガシー製品となり、サポートが低下し、技術革新が停滞する潜在的なリスクに直面しています。 2025年や2026年まで続くプロジェクトを計画しているチームにとって、この不確実性は大きな技術的リスクとなります。
ライセンスの複雑さ
この買収により、ライセンスの不確実性が導入され、導入が複雑化する可能性があります。 ActivePDFの伝統的なマシンロック型のライセンスモデルは、アプリケーションがインフラ全体で動的に拡張される最新のクラウドやコンテナ化された環境では摩擦を生みます。
レガシー
アーキテクチャパターンActivePDFのアーキテクチャは、ステートフルツールキットのパターンを中心とした古い設計思想を反映しています。 OpenOutputFile/CloseOutputFileワークフローでは、明示的なファイルハンドル管理が必要ですが、これは最新のC#の規約と一致しておらず、慎重に扱わないとリソース管理の問題を引き起こす可能性があります。
インストールと設定のオーバーヘッド
現代のNuGetベースのパッケージ管理とは異なり、ActivePDFではツールキットをインスタンス化する際に、DLLの参照や明示的なパス設定を手動で行う必要があります。
ActivePDFとIronPDFの比較:主な違い
移行プロセスに入る前に、ActivePDFとIronPdfの基本的な違いを理解することで、必要なコード変更に対する期待値を設定することができます。
| アスペクト | アクティブPDF | IronPDF |
|---|---|---|
| 会社ステータス | Foxit に買収される(将来は不透明) | 独立した明確な開発ロードマップ |
| インストール。 | マニュアルDLLリファレンス | シンプルなNuGetパッケージ。 |
| APIパターン | ステートフル (OpenOutputFile/CloseOutputFile) | 流暢で機能的なAPI |
| ライセンスモデル | マシンロック | コードベースのキー |
| .NETサポート | レガシー.NET Frameworkフォーカス | .NET Framework 4.6.2 から .NET 9+ へ |
| エラー処理。 | 整数のリターンコード | 最新の例外ベース |
| 非同期サポートについて | 不可 | 完全なasync/awaitのサポート |
移行前の準備
コードベースの監査
移行を開始する前に、ソリューション全体にわたるすべてのActivePDFの使用状況を確認してください。 ソリューションディレクトリで以下のコマンドを実行してください:
grep -r "using ActivePDF" --include="*.cs" .
grep -r "using APToolkitNET" --include="*.cs" .
grep -r "APToolkitNET" --include="*.csproj" .grep -r "using ActivePDF" --include="*.cs" .
grep -r "using APToolkitNET" --include="*.cs" .
grep -r "APToolkitNET" --include="*.csproj" .ドキュメントの変更
基本的なAPIの違いを理解することは、移行戦略の立案に役立ちます:
| カテゴリ | ActivePDF の動作 | IronPDF の動作 | 移行作業 |
|---|---|---|---|
| オブジェクトモデル | 単一の ツールキット オブジェクト | <コード>ChromePdfRenderer</コード> + <コード>PdfDocument</コード | 懸念事項 |
| ファイル操作 | OpenOutputFile()/CloseOutputFile()。 | 直接 <コード>SaveAs()</コード | open/closeコールの削除 |
| ページ作成 | NewPage()メソッド | HTMLからの自動翻訳 | ページ作成コールの削除 |
| 戻り値 | 整数エラーコード | 例外 | try/catchの実装 |
| ページサイズ単位 | ポイント (612x792 = 文字) | 列挙型またはミリメートル | 測定値の更新 |
前提条件
あなたの環境がこれらの要件を満たしていることを確認してください:
- .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9
- Visual Studio 2019+またはJetBrains Rider
- NuGetパッケージマネージャへのアクセス
- IronPDFライセンスキー (ironpdf.com にて無料トライアル可能)
ステップごとの移行プロセス
ステップ 1: NuGet パッケージを更新する。
ActivePDFパッケージを削除し、IronPDFをインストールしてください:
# RemoveアクティブPDFpackage
dotnet remove package APToolkitNET
# Install IronPDF
dotnet add package IronPdf# RemoveアクティブPDFpackage
dotnet remove package APToolkitNET
# Install IronPDF
dotnet add package IronPdfまたは、Visual Studioパッケージマネージャーコンソールを使用してください:
Uninstall-Package APToolkitNET
Install-Package IronPdf手動のDLL参照があるプロジェクトでは、.csprojファイルから参照を削除してください:
<!-- Remove this block -->
<Reference Include="APToolkitNET">
<HintPath>path\to\APToolkitNET.dll</HintPath>
</Reference><!-- Remove this block -->
<Reference Include="APToolkitNET">
<HintPath>path\to\APToolkitNET.dll</HintPath>
</Reference>ステップ 2: ライセンス キーの設定
IronPDFライセンスキーはアプリケーション起動時、PDF操作の前に追加してください:
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Verify license status
bool isLicensed = IronPdf.License.IsLicensed;// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Verify license status
bool isLicensed = IronPdf.License.IsLicensed;IRON VB CONVERTER ERROR developers@ironsoftware.comステップ 3: 名前空間参照の更新
ソリューション全体でグローバルな検索と置換を実行してください:
| 検索 | 置換対象 |
|---|---|
ActivePDF.Toolkitを使用しています。 | IronPdf;を使用しています。 |
APToolkitNETを使用しています。 | IronPdf;を使用しています。 |
APToolkitNET.PDFObjectsを使用しています。 | IronPdf;を使用しています。 |
APToolkitNET.Common;を使用しています。 | IronPdf;を使用しています。 |
完全な API 移行のリファレンス
ドキュメント作成方法
| ActivePDFメソッド | IronPDF 同等物 | ノート |
|---|---|---|
new Toolkit(). | new ChromePdfRenderer(). | レンダラでPDFを作成 |
toolkit.OpenOutputFile(パス)。 | 同等のものは不要 | 最後にSaveAs()を呼び出すだけです。 |
toolkit.CloseOutputFile()。 | 同等のものは不要 | 自動クリーンアップ |
toolkit.AddHTML(html)を使用してください。 | renderer.RenderHtmlAsPdf(html). | PdfDocument<//code> を返します。 |
| <コード>toolkit.AddURL(url)<コード></コード | renderer.RenderUrlAsPdf(url)のようにします。 | URLからPDFへの変換。 |
toolkit.SaveAs(パス)。 | pdf.SaveAs(path)のようにします。 | ファイルに保存 |
ファイル操作
| ActivePDFメソッド | IronPDF 同等物 | ノート |
|---|---|---|
toolkit.OpenInputFile(path)を実行します。 | PdfDocument.FromFile(パス)。 | 既存のPDFを読み込む. |
toolkit.AddPDF(パス)。 | PdfDocument.Merge()を使用してください。 | マージ作業 |
toolkit.GetPageCount()。 | <コード>pdf.PageCount</コード | プロパティアクセス |
| <コード>toolkit.GetText()</コード | pdf.ExtractAllText()を使用してください。 | テキスト抽出。 |
ページ構成
| ActivePDFメソッド | IronPDF 同等物 |
|---|---|
toolkit.SetPageSize(612,792)を使用してください。 | RenderingOptions.PaperSize=PdfPaperSize.Letter。 |
toolkit.SetOrientation("Landscape"). | RenderingOptions.PaperOrientation=PdfPaperOrientation.Landscape。 |
toolkit.SetMargins(t、b、l、r)。 | RenderingOptions.MarginTop/Bottom/Left/Right。 |
セキュリティ手法
| ActivePDFメソッド | IronPDF 同等物 |
|---|---|
| <コード>toolkit.Encrypt(password)</コード>。 | pdf.SecuritySettings.OwnerPassword。 |
toolkit.SetUserPassword(pwd)を使用してください。 | pdf.SecuritySettings.UserPassword。 |
toolkit.SetPermissions(flags). | pdf.SecuritySettings.AllowUserXxx。 |
toolkit.AddWatermark(text). | pdf.ApplyWatermark(html). |
コード移行の例
HTMLからPDFへの変換
HTML文字列をPDF文書に変換することは、最も一般的なPDF生成シナリオの1つです。 以下は、移行中にコードがどのように変化するかです。
// NuGet: Install-Package APToolkitNET
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
if (toolkit.OpenOutputFile("output.pdf") == 0)
{
toolkit.AddHTML(htmlContent);
toolkit.CloseOutputFile();
Console.WriteLine("PDF created successfully");
}
}
}// NuGet: Install-Package APToolkitNET
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
if (toolkit.OpenOutputFile("output.pdf") == 0)
{
toolkit.AddHTML(htmlContent);
toolkit.CloseOutputFile();
Console.WriteLine("PDF created successfully");
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
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();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのアプローチは、よりクリーンで読みやすいコードを提供しながら、明示的なファイルハンドル管理を排除します。 高度なHTML to PDFシナリオのために、IronPDFのChromePdfRendererはピクセルパーフェクトなCSSとJavaScriptサポートのためにChromiumベースのレンダリングエンジンを使用しています。
URLからPDFへの変換
Web ページを PDF ドキュメントとしてキャプチャする場合も、同様の近代化パターンに従います。
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string url = "https://www.example.com";
if (toolkit.OpenOutputFile("webpage.pdf") == 0)
{
toolkit.AddURL(url);
toolkit.CloseOutputFile();
Console.WriteLine("PDF from URL created successfully");
}
}
}using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string url = "https://www.example.com";
if (toolkit.OpenOutputFile("webpage.pdf") == 0)
{
toolkit.AddURL(url);
toolkit.CloseOutputFile();
Console.WriteLine("PDF from URL created successfully");
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com複数のPDFをマージする
複数のPDFドキュメントを1つのファイルに結合することで、IronPDFのドキュメント操作に対する機能的なアプローチを示しています。
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("merged.pdf") == 0)
{
toolkit.AddPDF("document1.pdf");
toolkit.AddPDF("document2.pdf");
toolkit.CloseOutputFile();
Console.WriteLine("PDFs merged successfully");
}
}
}using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("merged.pdf") == 0)
{
toolkit.AddPDF("document1.pdf");
toolkit.AddPDF("document2.pdf");
toolkit.CloseOutputFile();
Console.WriteLine("PDFs merged successfully");
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
using IronPdf;
using System;
using System.Collections.Generic;
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");
}
}using IronPdf;
using System;
using System.Collections.Generic;
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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com選択的なページ抽出を含む、より高度なマージシナリオについては、PDFマージドキュメントを参照してください。
ヘッダーとフッターの追加
using ActivePDF.Toolkit;
public void CreatePdfWithHeaderFooter(string html, string outputPath)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile(outputPath) == 0)
{
toolkit.SetHeader("My Document", 12, "Arial");
toolkit.SetFooter("Page %p of %P", 10, "Arial");
toolkit.AddHTML(html);
toolkit.CloseOutputFile();
}
}using ActivePDF.Toolkit;
public void CreatePdfWithHeaderFooter(string html, string outputPath)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile(outputPath) == 0)
{
toolkit.SetHeader("My Document", 12, "Arial");
toolkit.SetFooter("Page %p of %P", 10, "Arial");
toolkit.AddHTML(html);
toolkit.CloseOutputFile();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
using IronPdf;
public void CreatePdfWithHeaderFooter(string html, string outputPath)
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
CenterText = "My Document",
FontSize = 12,
FontFamily = "Arial"
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page} of {total-pages}",
FontSize = 10,
FontFamily = "Arial"
};
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
}using IronPdf;
public void CreatePdfWithHeaderFooter(string html, string outputPath)
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
CenterText = "My Document",
FontSize = 12,
FontFamily = "Arial"
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page} of {total-pages}",
FontSize = 10,
FontFamily = "Arial"
};
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPdfはテキストベースとHTMLヘッダーとフッターの両方をサポートし、柔軟なデザインを提供します。
パスワード保護とセキュリティ
using ActivePDF.Toolkit;
public void ProtectPdf(string inputPath, string outputPath, string password)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenInputFile(inputPath) == 0)
{
toolkit.Encrypt(password);
toolkit.SetUserPassword(password);
toolkit.SetPermissions(4); // Print only
toolkit.SaveAs(outputPath);
toolkit.CloseInputFile();
}
}using ActivePDF.Toolkit;
public void ProtectPdf(string inputPath, string outputPath, string password)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenInputFile(inputPath) == 0)
{
toolkit.Encrypt(password);
toolkit.SetUserPassword(password);
toolkit.SetPermissions(4); // Print only
toolkit.SaveAs(outputPath);
toolkit.CloseInputFile();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
using IronPdf;
public void ProtectPdf(string inputPath, string outputPath, string password)
{
using var pdf = PdfDocument.FromFile(inputPath);
pdf.SecuritySettings.OwnerPassword = password;
pdf.SecuritySettings.UserPassword = password;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs(outputPath);
}using IronPdf;
public void ProtectPdf(string inputPath, string outputPath, string password)
{
using var pdf = PdfDocument.FromFile(inputPath);
pdf.SecuritySettings.OwnerPassword = password;
pdf.SecuritySettings.UserPassword = password;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs(outputPath);
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPdfのセキュリティ設定APIは、整数フラグの代わりに強く型付けされた列挙型を使って、ドキュメントのパーミッションをきめ細かく制御します。
テキスト抽出
using ActivePDF.Toolkit;
public string ExtractText(string pdfPath)
{
Toolkit toolkit = new Toolkit();
string text = "";
if (toolkit.OpenInputFile(pdfPath) == 0)
{
int pageCount = toolkit.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
text += toolkit.GetTextFromPage(i) + "\n";
}
toolkit.CloseInputFile();
}
return text;
}using ActivePDF.Toolkit;
public string ExtractText(string pdfPath)
{
Toolkit toolkit = new Toolkit();
string text = "";
if (toolkit.OpenInputFile(pdfPath) == 0)
{
int pageCount = toolkit.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
text += toolkit.GetTextFromPage(i) + "\n";
}
toolkit.CloseInputFile();
}
return text;
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
using IronPdf;
public string ExtractText(string pdfPath)
{
using var pdf = PdfDocument.FromFile(pdfPath);
return pdf.ExtractAllText();
}using IronPdf;
public string ExtractText(string pdfPath)
{
using var pdf = PdfDocument.FromFile(pdfPath);
return pdf.ExtractAllText();
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装は、複数行のテキスト抽出を単一のメソッド呼び出しに削減します。
透かしの追加
using ActivePDF.Toolkit;
public void AddWatermark(string inputPath, string outputPath, string watermarkText)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenInputFile(inputPath) == 0)
{
int pageCount = toolkit.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
toolkit.SetPage(i);
toolkit.AddWatermark(watermarkText, 45, 0.5f);
}
toolkit.SaveAs(outputPath);
toolkit.CloseInputFile();
}
}using ActivePDF.Toolkit;
public void AddWatermark(string inputPath, string outputPath, string watermarkText)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenInputFile(inputPath) == 0)
{
int pageCount = toolkit.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
toolkit.SetPage(i);
toolkit.AddWatermark(watermarkText, 45, 0.5f);
}
toolkit.SaveAs(outputPath);
toolkit.CloseInputFile();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
using IronPdf;
public void AddWatermark(string inputPath, string outputPath, string watermarkText)
{
using var pdf = PdfDocument.FromFile(inputPath);
pdf.ApplyWatermark(
$"<h1 style='color:lightgray;font-size:72px;'>{watermarkText}</h1>",
rotation: 45,
opacity: 50);
pdf.SaveAs(outputPath);
}using IronPdf;
public void AddWatermark(string inputPath, string outputPath, string watermarkText)
{
using var pdf = PdfDocument.FromFile(inputPath);
pdf.ApplyWatermark(
$"<h1 style='color:lightgray;font-size:72px;'>{watermarkText}</h1>",
rotation: 45,
opacity: 50);
pdf.SaveAs(outputPath);
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのHTMLベースの透かしはCSSスタイリングを可能にし、ページごとの反復作業なしにデザインを完全にコントロールします。
.NETコアの統合
最新のウェブアプリケーションはIronPDFのすっきりとした統合パターンから大きな恩恵を受けています。
ActivePDFパターン:
[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("temp.pdf") == 0)
{
toolkit.AddHTML(request.Html);
toolkit.CloseOutputFile();
byte[] bytes = System.IO.File.ReadAllBytes("temp.pdf");
return File(bytes, "application/pdf", "report.pdf");
}
return BadRequest("PDF generation failed");
}[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("temp.pdf") == 0)
{
toolkit.AddHTML(request.Html);
toolkit.CloseOutputFile();
byte[] bytes = System.IO.File.ReadAllBytes("temp.pdf");
return File(bytes, "application/pdf", "report.pdf");
}
return BadRequest("PDF generation failed");
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFパターン:
[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");
}[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");
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFは一時ファイルの必要性をなくし、PDFバイナリデータをメモリから直接返します。
ウェブ
アプリケーションの非同期サポートActivePDFはネイティブの非同期サポートがありません。 IronPdfはスケーラブルなWebアプリケーションに不可欠な完全な非同期/待機機能を提供します:
using IronPdf;
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
return pdf.BinaryData;
}using IronPdf;
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
return pdf.BinaryData;
}IRON VB CONVERTER ERROR developers@ironsoftware.com依存性注入の構成
.NET 6+アプリケーションでは、IronPDFサービスをDIコンテナに登録してください:
// Program.cs (.NET 6+)
builder.Services.AddSingleton<ChromePdfRenderer>();
// Service wrapper
public interface IPdfService
{
Task<byte[]> GeneratePdfAsync(string html);
Task<byte[]> GeneratePdfFromUrlAsync(string url);
}
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;
}
public async Task<byte[]> GeneratePdfFromUrlAsync(string url)
{
using var pdf = await _renderer.RenderUrlAsPdfAsync(url);
return pdf.BinaryData;
}
}// Program.cs (.NET 6+)
builder.Services.AddSingleton<ChromePdfRenderer>();
// Service wrapper
public interface IPdfService
{
Task<byte[]> GeneratePdfAsync(string html);
Task<byte[]> GeneratePdfFromUrlAsync(string url);
}
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;
}
public async Task<byte[]> GeneratePdfFromUrlAsync(string url)
{
using var pdf = await _renderer.RenderUrlAsPdfAsync(url);
return pdf.BinaryData;
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comエラー処理の移行
ActivePDFは、ルックアップテーブルを必要とする整数のリターンコードを使用します。 IronPDFは最新の例外処理を使用します:
ActivePDFのエラー処理
Toolkit toolkit = new Toolkit();
int result = toolkit.OpenOutputFile(path);
if (result != 0)
{
// Error - need to look up error code
Console.WriteLine($"Error code: {result}");
}Toolkit toolkit = new Toolkit();
int result = toolkit.OpenOutputFile(path);
if (result != 0)
{
// Error - need to look up error code
Console.WriteLine($"Error code: {result}");
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのエラーハンドリング:。
try
{
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
}
catch (IronPdf.Exceptions.IronPdfProductException ex)
{
Console.WriteLine($"IronPDF Error: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"General Error: {ex.Message}");
}try
{
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
}
catch (IronPdf.Exceptions.IronPdfProductException ex)
{
Console.WriteLine($"IronPDF Error: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"General Error: {ex.Message}");
}IRON VB CONVERTER ERROR developers@ironsoftware.comパフォーマンス最適化のヒント
レンダラー インスタンスの再利用
新しいChromePdfRendererを作成するには、初期化のオーバーヘッドがあります。 バッチ処理では、単一のインスタンスを再利用します:
var renderer = new ChromePdfRenderer();
foreach (var html in htmlList)
{
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs($"output_{i}.pdf");
}var renderer = new ChromePdfRenderer();
foreach (var html in htmlList)
{
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs($"output_{i}.pdf");
}IRON VB CONVERTER ERROR developers@ironsoftware.comWebアプリケーションで非同期を使用する
.NET Coreアプリケーションでは、非同期PDF生成によりスループットが向上します:
public async Task<IActionResult> GenerateReport()
{
var renderer = new ChromePdfRenderer();
using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
return File(pdf.BinaryData, "application/pdf");
}public async Task<IActionResult> GenerateReport()
{
var renderer = new ChromePdfRenderer();
using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
return File(pdf.BinaryData, "application/pdf");
}IRON VB CONVERTER ERROR developers@ironsoftware.com適切なリソースの処分
適切なクリーンアップを確実にするために、常にusing文を使用してください:
using var pdf = renderer.RenderHtmlAsPdf(html);
return pdf.BinaryData;using var pdf = renderer.RenderHtmlAsPdf(html);
return pdf.BinaryData;IRON VB CONVERTER ERROR developers@ironsoftware.com画像圧縮
画像圧縮で出力ファイルサイズを削減する:
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.CompressImages(85); // 85% quality
pdf.SaveAs("compressed.pdf");using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.CompressImages(85); // 85% quality
pdf.SaveAs("compressed.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comよくある移行の問題のトラブルシューティング
課題ページサイズの違い
ActivePDFはポイント(612x792 = Letter)を使用し、IronPdfは列挙またはミリメートルを使用します:
// ActivePDF: Points
toolkit.SetPageSize(612, 792);
// IronPDF: Use enum
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
// Or custom in mm:
renderer.RenderingOptions.SetCustomPaperSizeInMillimeters(215.9, 279.4);// ActivePDF: Points
toolkit.SetPageSize(612, 792);
// IronPDF: Use enum
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
// Or custom in mm:
renderer.RenderingOptions.SetCustomPaperSizeInMillimeters(215.9, 279.4);IRON VB CONVERTER ERROR developers@ironsoftware.com問題CloseOutputFile と同等のものがありません。
IronPDFは明示的なファイルハンドル管理のない最新のパラダイムを使用しています:
// ActivePDF
toolkit.OpenOutputFile(path);
toolkit.AddHTML(html);
toolkit.CloseOutputFile(); // Required!
//IronPDF- no open/close needed
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path); // 'using' handles cleanup// ActivePDF
toolkit.OpenOutputFile(path);
toolkit.AddHTML(html);
toolkit.CloseOutputFile(); // Required!
//IronPDF- no open/close needed
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path); // 'using' handles cleanupIRON VB CONVERTER ERROR developers@ironsoftware.com問題です:PDFが真っ白にレンダリングされる
JavaScriptに依存するコンテンツが空白でレンダリングされる場合は、レンダリング遅延を設定してください:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.RenderDelay(2000);
// Or wait for element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded");var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.RenderDelay(2000);
// Or wait for element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded");IRON VB CONVERTER ERROR developers@ironsoftware.com課題CSS/画像が読み込まれない
相対パス解決用にベースURLを設定します:
renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/assets/");renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/assets/");IRON VB CONVERTER ERROR developers@ironsoftware.com移行後のチェックリスト
コードの移行が完了したら、以下を確認してください:
- [既存のすべての単体テストと統合テストを実行する。
- [PDF 出力を以前のバージョンと視覚的に比較する。
- [すべてのPDFワークフローをステージング環境でテストしてください。
- [ ] ライセンスが正しく動作することを確認する (
IronPdf.License.IsLicensed) - [以前の実装とのベンチマーク
- [古いActivePDFのインストールファイルとDLLの参照を削除してください。
- [CI/CD パイプラインの依存関係の更新
- [ ] 開発チームのためのIronPDFパターンの文書化
PDFソリューションの将来性
.NET 10が目前に迫り、C# 14が新しい言語機能を導入する中、開発が活発な.NET PDFライブラリを選択することで、アプリケーションが進化するランタイム機能と互換性を保つことができます。 IronPDFは最新の.NETバージョンをサポートすることに専念しており、プロジェクトが2025年、2026年に拡張されたとしても、移行への投資は報われます。
その他のリソース
ActivePDFからIronPDFへの移行は、よりクリーンなAPI、より優れた.NET統合、積極的な長期サポートによってPDF生成インフラを近代化します。 移行への投資は、コードの保守性の向上、非同期機能、そしてPDFライブラリの継続的な開発への信頼という形で報われます。






