C#でiTextからIronPDFに移行する方法
iTextからIronPDFへの移行:完全なC#移行ガイド
iTextからIronPDFへの移行は、.NET PDFワークフローをParagraph, Table,Cellオブジェクトの手作業を必要とするプログラム的APIから、CSS3とJavaScriptを完全にサポートするモダンなHTMLファーストのアプローチに変えます。 このガイドでは、プロの.NET開発者向けに、AGPLライセンスに関する懸念や、pdfHTMLアドオンを別途用意する必要性を排除した、包括的でステップバイステップの移行パスを提供します。
なぜiTextからIronPDFに移行するのか
AGPLライセンスの罠
iTextは、商用アプリケーションに深刻な法的リスクとビジネスリスクをもたらします:
1.AGPLバイラルライセンス: iTextをWebアプリケーションで使用する場合、AGPLは、PDFコードだけでなく、コードベース全体ではなく、アプリケーション全体をオープンソースにすることを要求します。 これは、ほとんどの商用ソフトウェアでは不可能です。
2.永久ライセンスなし: iTextは、総所有コストを増加させる年間サブスクリプションの更新を強制する永久ライセンスを廃止しました。
3.pdfHTMLアドオンのコスト: HTML-to-PDF機能を使用するには、pdfHTMLアドオンが必要です。
4.複雑なライセンシング監査: 企業での導入では、ライセンシングの複雑さと監査リスクに直面します。
5.プログラム専用API:iTextでは、Paragraph、Table、Cellオブジェクトを使った低レベルのPDFを手動で作成する必要があります。
6.限定的なモダンウェブレンダリング:pdfHTMLであっても、複雑なCSSやJavaScriptのコンテンツは、かなりの追加作業を必要とします。
iTextとIronPDFの比較
| フィーチャー | iText 7 / iTextSharp | IronPDF |
|---|---|---|
| ライセンス | AGPL(バイラル)または高価なサブスクリプション | 商用、永久オプション |
| HTMLからPDFへ | pdfHTMLアドオン | 内蔵Chromiumレンダラー |
| CSSサポート | 基本的なCSS | フルCSS3、フレックスボックス、グリッド |
| JavaScript | なし | 完全な実行 |
| APIパラダイム | プログラム(段落、表、セル) | CSSによるHTMLファースト |
| 学習曲線 | スティープ(PDF座標系) | ウェブ開発者フレンドリー |
| オープンソースリスク | オープンソースのウェブアプリケーションが必要 | ウイルス要件なし |
| 価格モデル | サブスクリプションのみ | 永久またはサブスクリプション |
2025年、2026年まで.NET 10とC# 14の導入を計画しているチームにとって、IronPDFはすでにチームが持っているウェブ開発スキルを活用するHTMLファーストのアプローチで、将来を見据えた基盤を提供します。
マイグレーションの複雑さの評価
機能別の見積もり作業
| フィーチャー | 移行の複雑さ | ノート |
|---|---|---|
| HTMLからPDFへ | 低レベル | メソッドの直接置換 |
| PDFのマージ | 低レベル | よりシンプルなAPI |
| テキストと画像 | 低レベル | HTMLはプログラム的なものに取って代わる |
| 表 | 中規模 | HTMLテーブルがiTextテーブルクラスを置き換える |
| ヘッダー/フッター | 中規模 | イベントハンドラ → HTMLテンプレート |
| セキュリティ/暗号化 | 低レベル | プロパティベースのAPI |
パラダイムシフト
このiText移行における基本的なシフトは、プログラムによるPDF作成からHTMLファーストレンダリングへの移行です:
iText: PdfWriter → PdfDocument → Document → Add(Paragraph) → Add(Table)
IronPDF: ChromePdfRenderer → RenderHtmlAsPdf(htmlString) → SaveAs()iTextのオブジェクトモデルを学ぶ代わりに、ウェブ開発者がすでに持っているHTMLとCSSのスキルを使うのです。
始める前に
前提条件
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 iText packages
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp
# Install IronPDF
dotnet add package IronPdf# Remove iText packages
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp
# Install IronPDF
dotnet add package IronPdfライセンス構成
// 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";IRON VB CONVERTER ERROR developers@ironsoftware.comiTextの使用方法を確認する
# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .完全な API リファレンス
クラスマッピング
| iText 7 クラス | iTextSharpクラス | IronPDF 同等物 |
|---|---|---|
| <コード>PdfWriter</コード | <コード>PdfWriter</コード | <コード>ChromePdfRenderer</コード |
| <コード>PdfDocument</コード | <コード>ドキュメント</コード | <コード>PdfDocument</コード |
| <コード>ドキュメント</コード | <コード>ドキュメント</コード | ChromePdfRenderer.RenderHtmlAsPdf()のようになります。 |
| <コード>段落</コード | <コード>段落</コード | HTML <p>、<h1>など。 |
| <コード>表</コード | <コード>PdfPTable</コード | HTML <コード><テーブル><コード></コード |
| <コード>セル</コード | <コード>PdfPCell</コード | HTML <td>、<th>。 |
| <コード>イメージ</コード | <コード>イメージ</コード | HTML <img> |
| <コード>PdfReader</コード | <コード>PdfReader</コード | PdfDocument.FromFile()を使用してください。 |
| <コード>PdfMerger</コード | 該当なし | PdfDocument.Merge()を使用してください。 |
名前空間マッピング
| iText 7 名前空間 | IronPDF 同等物 |
|---|---|
iText.Kernel.Pdf(英語 | IronPdf(アイアンPDF |
| <コード>iText.Layout</コード | IronPdf(アイアンPDF |
| <コード>iText.Layout.Element</コード | HTML要素の使用 |
iText.Html2Pdf(英語 | <コード>IronPdf</コード> (組み込み) |
| <コード>iText.IO.Image</コード | HTML <img>を使用してください。 |
iText.Kernel.Utils(英語 | IronPdf(アイアンPDF |
コード移行の例
例1: HTMLからPDFへの変換
導入前(iText 7):
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comiTextのアプローチでは、別個のiText.Html2pdfパッケージ(pdfHTMLアドオン、別売り)を必要とし、FileStreamを作成し、適切な処理のためにusingステートメントですべてを包みます。 HtmlConverter.ConvertToPdf()メソッドはストリームに直接書き込みます。
IronPDFのアプローチはすっきりしています: ChromePdfRendererを作成し、HTML文字列でRenderHtmlAsPdf()を呼び出し、結果のPdfDocumentでSaveAs()を呼び出します。 別パッケージ、ストリーム管理は不要で、Chromiumレンダリングエンジンは優れたCSS3とJavaScriptをサポートします。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。
例2: 複数のPDFをマージする
導入前(iText 7):
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comiText のマージ操作では、出力用に<コード>PdfWriter</コードを作成し、それを<コード>PdfDocument</コードでラップし、PdfMerger を作成し、各<コード>PdfDocument</コードと<コード>PdfReader</コードに対して入れ子になった using ステートメントでソース ファイルを繰り返し処理するという、かなりの定型文が必要です。 また、merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())でページ範囲を指定する必要があります。
IronPDFはこれを3つのステップに減らします: PdfDocument.FromFile()でドキュメントをロードし、静的なPdfDocument.Merge()メソッドをリストで呼び出し、保存します。 マージ作業全体が読みやすく、保守しやすくなります。 PDFのマージと分割については、こちらをご覧ください。
例3: テキストと画像でPDFを作成する
導入前(iText 7):
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comこの例は、パラダイムシフトを最も明確に示しています。 iTextが必要です:
- トリプルネストの
usingステートメント (PdfWriter,PdfDocument,Document) new Paragraph()で各テキスト要素にParagraphオブジェクトを作成する。ImageDataFactory.Create()を使用して画像を読み込むImageオブジェクトを作成し、SetWidth()を個別に呼び出します。- 各要素に対して
document.Add()を呼び出します。
IronPDFは標準的なHTMLを使用します:見出しには<h1>、段落には<p>、画像には<img>(width属性付き)を使用します。 ウェブ開発者は既存のスキルをすぐに活用でき、デザイナーはすでに知っているCSSを使ってドキュメントをスタイリングできます。
重要な移行に関する注意事項
パラダイムシフト:プログラムからHTMLファーストへ
このiTextの移行で最も大きな変更は、概念的なものです。 iTextはプログラムでPDFを作成します:
// iText approach
document.Add(new Paragraph("Title")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(24)
.SetBold());
var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines// iText approach
document.Add(new Paragraph("Title")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(24)
.SetBold());
var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more linesIRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFはHTMLとCSSを使用しています:
//IronPDFapproach
string html = @"
<style>
h1 { text-align: center; font-size: 24px; font-weight: bold; }
table { width: 100%; border-collapse: collapse; }
th { background-color: #4CAF50; color: white; padding: 8px; }
</style>
<h1>Title</h1>
<table>
<tr><th>ID</th><th>Name</th></tr>
</table>";
var pdf = renderer.RenderHtmlAsPdf(html);//IronPDFapproach
string html = @"
<style>
h1 { text-align: center; font-size: 24px; font-weight: bold; }
table { width: 100%; border-collapse: collapse; }
th { background-color: #4CAF50; color: white; padding: 8px; }
</style>
<h1>Title</h1>
<table>
<tr><th>ID</th><th>Name</th></tr>
</table>";
var pdf = renderer.RenderHtmlAsPdf(html);IRON VB CONVERTER ERROR developers@ironsoftware.comAGPLライセンスは廃止されました。
iTextのAGPLライセンスでは、Webアプリケーション全体をオープンソース化するか、高価な商用ライセンスを購入する必要があります。 IronPdfの商用ライセンスにより、ウイルスライセンス要件なしにプロプライエタリなソフトウェアに導入することができます。
pdfHTMLアドオンは必要ありません。
iTextはHTMLからPDFへの変換のためにpdfHTMLアドオンが必要です。IronPdfにはChromiumベースのHTMLレンダリング機能が含まれています。
メソッド置換パターン
| iTextパターン | IronPDFの置き換え | |
|---|---|---|
SetTextAlignment(TextAlignment.CENTER)を設定してください。 | CSS <コード>text-align: center | |
SetFontSize(24)を設定してください。 | CSS フォントサイズ: 24px | |
| <コード>SetBold()</コード | CSS <コード>font-weight: bold | |
new Table(3). | HTML <コード><テーブル><コード></コード | |
AddHeaderCell(新しいCell().Add(新しいParagraph()))を追加します。 | HTML <コード> | </コード |
AddCell(新しいCell().Add(新しいParagraph()))。 | HTML <td> |
トラブルシューティング
問題 1: PdfWriter/Document パターン
問題:コードは<コード>PdfWriter</コード→<コード>PdfDocument</コード→<コード>ドキュメント</コードの入れ子パターンを使用しています。
解決策:ChromePdfRendererに置き換えてください:
// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))
// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))
// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);IRON VB CONVERTER ERROR developers@ironsoftware.com課題2:HtmlConverterが見つかりません
問題:コードはiText.Html2pdf.HtmlConverterを使用していますが、これはpdfHTMLアドオンを必要とします。
解決策:IronPdfの組み込みHTMLレンダリングを使用してください:
// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);
//IronPDF(built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);
//IronPDF(built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);IRON VB CONVERTER ERROR developers@ironsoftware.com問題 3: PdfMerger の複雑さ
問題:iTextのPdfMergerは、ネストされたリーダーとページ範囲の指定を必要とします。
解決策:IronPdfの静的マージメソッドを使用してください:
// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
// PdfMerger merger = new PdfMerger(pdfDoc);
// foreach (string file in inputFiles)
// {
// using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
// {
// merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
// }
// }
// }
//IronPDF(simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
// PdfMerger merger = new PdfMerger(pdfDoc);
// foreach (string file in inputFiles)
// {
// using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
// {
// merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
// }
// }
// }
//IronPDF(simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com移行チェックリスト
移行前
- [コードベース内のすべての iText API 呼び出しのインベントリ作成
- [プログラムによるPDF構築パターン(段落、表、セル)を特定する。)
- [ドキュメントHtmlConverterの使い方(pdfHTMLアドオン)
- [AGPL コンプライアンスリスクの評価
- [IronPDF ライセンスキーの取得
コードの移行
- [iText NuGetパッケージを削除します:
dotnet remove package itext7を実行してください。 - [ ] IronPdf NuGetパッケージをインストールします:
dotnet add package IronPdf<//code>. - [ ] 名前空間のインポートを更新する (
using iText.*→using IronPdf) - [ ]
PdfWriter/Documentパターンを<コード>ChromePdfRenderer</コードに置き換えてください。 - [
Paragraph/Table/CellをHTML要素に変換してください。 - [ ]
HtmlConverter.ConvertToPdf()をRenderHtmlAsPdf()に置き換えてください。 - [ ] マージ操作を
PdfDocument.Merge()を使用してください。に更新しました。 - [ ] 起動時にライセンスキーの初期化を追加する
テスティング
- [すべてのPDF生成パスのテスト
- [視覚的な出力が期待に沿うか検証してください。
- [複雑なHTML/CSSコンテンツを含むテスト
- [ベンチマーク性能
移行後
- [ ] iTextのライセンスファイルとリファレンスの削除
- [ドキュメントの更新
- [iText サブスクリプションのキャンセル(該当する場合)
- [レガシーiTextコードのアーカイブ
結論
iTextからIronPDFに移行することで、PDF生成コードを簡素化しながらAGPLライセンスの罠を取り除くことができます。 プログラムによる構築からHTMLファーストのレンダリングへのパラダイムシフトは、チームがiTextのオブジェクトモデルを学ぶ代わりに、既存のWeb開発スキルを活用できることを意味します。
この移行における主な変更点は以下のとおりです: 1.ライセンス:AGPL (ウィルス) → 商用 (寛容) 2.HTMLサポート: 別個のpdfHTMLアドオン → 組み込みのChromium 3.APIパラダイム:プログラム(パラグラフ、テーブル、セル) → HTML/CSS 4.マージ:複雑な PdfMerger → 単純な PdfDocument.Merge(). 5.学習曲線:PDF座標系 → ウェブ開発者フレンドリー
IronPDFドキュメント、チュートリアル、APIリファレンスをご覧いただき、iTextへの移行を加速させてください。






