C#でTallComponentsからIronPDFに移行する方法
TallComponentsからIronPDFへの移行:完全なC#開発者ガイド
ApryseがTallComponentsを買収したとき、.NET PDFの状況は大きく変わりました。 TallComponentsの新規ライセンスが終了し、既存ユーザーはiText SDKにリダイレクトされるため、TallPDFとPDFKitを使用している開発者は避けられない決断を迫られています。
このガイドでは、TallComponentsからIronPDFへの完全な移行パスを提供します。ステップバイステップの手順、APIマッピング、実際のコード例を含み、.NET開発者が効率的に移行できるように支援します。
なぜTallComponentsへの移行が必須なのか
TallComponents は、かつて C# PDF 生成の有名企業でした。 ライブラリは、XMLベースのドキュメントワークフローとプログラムによるPDF操作を提供しました。 しかし、Apryseによる買収によって新規ライセンス販売が終了し、開発チームにとっての計算が根本的に変わりました。
TallComponentsの重要な制限事項
TallComponentsは、技術的に大きな負債を抱えています:
製品廃止: Apryseの買収以来、新しいライセンスはありません。トールコンポーネントの公式ウェブサイトでは、新規ライセンスの販売が終了したことを明示し、代わりに iText SDK を採用するよう潜在的なユーザーに案内しています。
HTMLからPDFへのサポートはありません:最新のPDFライブラリとは異なり、TallComponentsはHTMLからPDFへの直接変換をサポートしていません。 サポートプラットフォームの開発者は、この限界を確認しており、Pechkinのようなサードパーティのソリューションを選択肢として指摘しています。
文書化されたレンダリングのバグ:変更履歴には、空白ページのレンダリング、グラフィックスの欠落、信頼性の低い JPEG 画像の処理、不正なフォント表示など、広範なレンダリングの問題が記載されています。 これらのバグは、廃止前に解決されることはありませんでした。
サポートやアップデートはありません:積極的なメンテナンスがない場合、.NET 10およびC# 14のセキュリティ脆弱性や互換性の問題は対処されないままとなります。
IronPDF:最新のTallComponents代替ツール
IronPDFは、TallComponentsを現代の開発ワークフローで問題にしていた核となる制限に対処しています:
| フィーチャー | トールコンポーネント | IronPDF |
|---|---|---|
| 現在の販売状況 | 新規販売終了 | 積極的な開発と販売 |
| HTMLからPDFへのサポート | なし | はい(Chromiumを使用したHTML5/CSS3) |
| レンダリングの忠実度 | 既知のバグと問題 | 実証済みの信頼性 |
| インストール | 複雑、マニュアル | NuGetでシンプルに |
| カスタマーサポート | iText SDK への移行 | 積極的なサポートとコミュニティ |
| 将来のユーザビリティ | 使用終了 | 長期的な有効性 |
TallComponentsは.NET開発の異なる時代からXMLベースのアプローチを提供し、IronPDFは今日の開発者がアプリケーションを構築する方法に沿ったChromiumパワーのHTMLレンダリングを提供します。
クイックスタート:TallComponentsからIronPDFへの移行
ステップ 1: NuGet パッケージを置き換える。
プロジェクトからすべてのTallComponentsパッケージを削除してください:
# Removeトールコンポーネントpackages
dotnet remove package TallComponents.PDF.Kit
dotnet remove package TallComponents.PDF.Layout
dotnet remove package TallComponents.PDF.Layout.Drawing# Removeトールコンポーネントpackages
dotnet remove package TallComponents.PDF.Kit
dotnet remove package TallComponents.PDF.Layout
dotnet remove package TallComponents.PDF.Layout.DrawingIronPDFをインストールします:
# Install IronPDF
dotnet add package IronPdf# Install IronPDF
dotnet add package IronPdf特殊なフレームワークのために、IronPdfは専用の拡張パッケージを提供しています:
Blazorサーバー:。
PM > Install-Package IronPdf.Extensions.BlazorPM > Install-Package IronPdf.Extensions.BlazorMAUI:。
PM > Install-Package IronPdf.Extensions.MauiPM > Install-Package IronPdf.Extensions.MauiMVCフレームワーク:。
PM > Install-Package IronPdf.Extensions.Mvc.FrameworkPM > Install-Package IronPdf.Extensions.Mvc.Frameworkステップ 2: 名前空間の更新
TallComponents名前空間をIronPdf名前空間に置き換えてください:
// Before (TallComponents)
using TallComponents.PDF.Kit;
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Drawing;
using TallComponents.PDF.Layout.Paragraphs;
// After (IronPDF)
using IronPdf;// Before (TallComponents)
using TallComponents.PDF.Kit;
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Drawing;
using TallComponents.PDF.Layout.Paragraphs;
// After (IronPDF)
using IronPdf;IRON VB CONVERTER ERROR developers@ironsoftware.comステップ 3: ライセンスの初期化
アプリケーション起動時のライセンス初期化を追加します:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"TallComponentsからIronPDFへのAPIマッピングリファレンス
TallComponentsのコンセプトがIronPDFにどのようにマッピングされるかを理解することで、移行プロセスが加速されます:
| トールコンポーネント | IronPDF | ノート |
|---|---|---|
| <コード>ドキュメント</コード | <コード>ChromePdfRenderer</コード | PDF生成のためのレンダラー作成 |
| <コード>セクション</コード | 自動翻訳 | HTML構造から派生したセクション |
| <コード>テキストパラグラフ</コード | HTMLテキスト要素 | <p>、<h1>、<div>などを使用してください。 |
| <コード>イメージパラグラフ</コード | <img>タグ | 標準的なHTML画像 |
| <コード>表段落</コード | HTML <コード><テーブル><コード></コード | 標準的なHTMLテーブル |
| <コード>フォント</コード | CSS <コード>font-family</コード | ウェブフォント完全対応 |
| <コード>document.Write()</コード | <コード>pdf.SaveAs()</コード | ファイルに保存 |
| <コード>document.Write(stream)<コード></コード | pdf.BinaryDataまたは pdf.Stream。 | ストリーム出力 |
| <コード>Page.Canvas</コード | HTML/CSSレンダリング | 手作業によるキャンバス操作は不要 |
XmlDocument.Generate()を使用してください。 | <コード>RenderHtmlAsPdf()</コード | HTMLがXMLに代わる |
PdfKit.Merger.Merge(). | PdfDocument.Merge()を使用してください。 | 複数のPDFをマージ |
ドキュメント.セキュリティ | <コード>pdf.SecuritySettings</コード | PDFセキュリティ設定 |
| <コード>ページレイアウト</コード | <コード>レンダリングオプション</コード | ページ設定と余白 |
コード移行の例
HTML を PDF に変換する
TallComponentsは、ネイティブのHTMLからPDFへのサポートを欠いています。 回避策は、テキストからフラグメントを作成することで、実際にはHTMLをレンダリングしません:
TallComponentsのアプローチ:
// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using System.IO;
class Program
{
static void Main()
{
// Create a new document
using (Document document = new Document())
{
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
// Create HTML fragment
Fragment fragment = Fragment.FromText(html);
// Add to document
Section section = document.Sections.Add();
section.Fragments.Add(fragment);
// Save to file
using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
{
document.Write(fs);
}
}
}
}// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using System.IO;
class Program
{
static void Main()
{
// Create a new document
using (Document document = new Document())
{
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
// Create HTML fragment
Fragment fragment = Fragment.FromText(html);
// Add to document
Section section = document.Sections.Add();
section.Fragments.Add(fragment);
// Save to file
using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
{
document.Write(fs);
}
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのChromePdfRendererは本物のChromiumエンジンを使用しており、HTML5とCSS3を完全にサポートしています。 これは、PDFが最新のブラウザで表示されるように正確にレンダリングされることを意味します。 詳しくはHTML to PDFチュートリアルをご覧ください。
複数のPDFをマージする
PDFマージはTallComponentsとIronPDFの冗長性の違いを示しています。
TallComponentsのアプローチ:
// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using System.IO;
class Program
{
static void Main()
{
// Create output document
using (Document outputDoc = new Document())
{
// Load first PDF
using (FileStream fs1 = new FileStream("document1.pdf", FileMode.Open))
using (Document doc1 = new Document(fs1))
{
foreach (Page page in doc1.Pages)
{
outputDoc.Pages.Add(page.Clone());
}
}
// Load second PDF
using (FileStream fs2 = new FileStream("document2.pdf", FileMode.Open))
using (Document doc2 = new Document(fs2))
{
foreach (Page page in doc2.Pages)
{
outputDoc.Pages.Add(page.Clone());
}
}
// Save merged document
using (FileStream output = new FileStream("merged.pdf", FileMode.Create))
{
outputDoc.Write(output);
}
}
}
}// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using System.IO;
class Program
{
static void Main()
{
// Create output document
using (Document outputDoc = new Document())
{
// Load first PDF
using (FileStream fs1 = new FileStream("document1.pdf", FileMode.Open))
using (Document doc1 = new Document(fs1))
{
foreach (Page page in doc1.Pages)
{
outputDoc.Pages.Add(page.Clone());
}
}
// Load second PDF
using (FileStream fs2 = new FileStream("document2.pdf", FileMode.Open))
using (Document doc2 = new Document(fs2))
{
foreach (Page page in doc2.Pages)
{
outputDoc.Pages.Add(page.Clone());
}
}
// Save merged document
using (FileStream output = new FileStream("merged.pdf", FileMode.Create))
{
outputDoc.Write(output);
}
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
// Load PDFs
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
// Merge PDFs
var merged = PdfDocument.Merge(pdf1, pdf2);
// Save merged document
merged.SaveAs("merged.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
// Load PDFs
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
// Merge PDFs
var merged = PdfDocument.Merge(pdf1, pdf2);
// Save merged document
merged.SaveAs("merged.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comTallComponentsバージョンでは、手作業によるページの反復と複製が必要です。 IronPdfはこれを単一のPdfDocument.Merge()呼び出しに削減します。 高度なマージシナリオについては、PDFマージドキュメントを参照してください。
透かしの追加
PDFに透かしを入れることで、開発者の経験におけるもう1つの大きな違いが明らかになります。
TallComponentsのアプローチ:
// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using TallComponents.PDF.Layout;
using System.IO;
using System.Drawing;
class Program
{
static void Main()
{
// Load existing PDF
using (FileStream fs = new FileStream("input.pdf", FileMode.Open))
using (Document document = new Document(fs))
{
// Iterate through pages
foreach (Page page in document.Pages)
{
// Create watermark text
TextShape watermark = new TextShape();
watermark.Text = "CONFIDENTIAL";
watermark.Font = new Font("Arial", 60);
watermark.PenColor = Color.FromArgb(128, 255, 0, 0);
watermark.X = 200;
watermark.Y = 400;
watermark.Rotate = 45;
// Add to page
page.Overlay.Shapes.Add(watermark);
}
// Save document
using (FileStream output = new FileStream("watermarked.pdf", FileMode.Create))
{
document.Write(output);
}
}
}
}// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using TallComponents.PDF.Layout;
using System.IO;
using System.Drawing;
class Program
{
static void Main()
{
// Load existing PDF
using (FileStream fs = new FileStream("input.pdf", FileMode.Open))
using (Document document = new Document(fs))
{
// Iterate through pages
foreach (Page page in document.Pages)
{
// Create watermark text
TextShape watermark = new TextShape();
watermark.Text = "CONFIDENTIAL";
watermark.Font = new Font("Arial", 60);
watermark.PenColor = Color.FromArgb(128, 255, 0, 0);
watermark.X = 200;
watermark.Y = 400;
watermark.Rotate = 45;
// Add to page
page.Overlay.Shapes.Add(watermark);
}
// Save document
using (FileStream output = new FileStream("watermarked.pdf", FileMode.Create))
{
document.Write(output);
}
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
// Load existing PDF
var pdf = PdfDocument.FromFile("input.pdf");
// Create watermark
var watermark = new TextStamper()
{
Text = "CONFIDENTIAL",
FontSize = 60,
Opacity = 50,
Rotation = 45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
// Apply watermark to all pages
pdf.ApplyStamp(watermark);
// Save watermarked PDF
pdf.SaveAs("watermarked.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
// Load existing PDF
var pdf = PdfDocument.FromFile("input.pdf");
// Create watermark
var watermark = new TextStamper()
{
Text = "CONFIDENTIAL",
FontSize = 60,
Opacity = 50,
Rotation = 45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
// Apply watermark to all pages
pdf.ApplyStamp(watermark);
// Save watermarked PDF
pdf.SaveAs("watermarked.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPdfのTextStamperクラスは直感的な配置オプションと自動ページ反復処理を提供します。 スタンプと透かしのガイドでは、その他のカスタマイズオプションについても説明しています。
デジタル署名
文書署名は、企業アプリケーションにとって非常に重要です。
TallComponentsのアプローチ:
using TallComponents.PDF.Kit;
using TallComponents.PDF.Kit.Signing;
Document document = new Document("unsigned.pdf");
// Load certificate
X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");
// Create signature
SignatureHandler handler = new SignatureHandler(cert);
document.Sign(handler);
document.Write("signed.pdf");using TallComponents.PDF.Kit;
using TallComponents.PDF.Kit.Signing;
Document document = new Document("unsigned.pdf");
// Load certificate
X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");
// Create signature
SignatureHandler handler = new SignatureHandler(cert);
document.Sign(handler);
document.Write("signed.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのアプローチ:
using IronPdf;
using IronPdf.Signing;
var pdf = PdfDocument.FromFile("unsigned.pdf");
// Sign with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "support@company.com",
SigningLocation = "New York",
SigningReason = "Document Approval"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");using IronPdf;
using IronPdf.Signing;
var pdf = PdfDocument.FromFile("unsigned.pdf");
// Sign with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "support@company.com",
SigningLocation = "New York",
SigningReason = "Document Approval"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comIronPdfの署名APIには、連絡先、場所、署名理由などのメタデータプロパティが追加されています。 完全な実装の詳細については、デジタル署名ドキュメントを参照してください。
機能の比較:TallComponents vs IronPdf
| フィーチャー | トールコンポーネント | IronPDF |
|---|---|---|
| <ステータス | 販売終了 ❌ 販売終了 | アクティブ |
| サポート | ❌ なし | フル |
| 更新情報 | ❌ なし | レギュラー |
| コンテンツ作成 | ||
| HTMLからPDFへ | なし | 完全なChromium |
| URLからPDFへ | なし | はい |
| CSSサポート | なし | 完全なCSS3 |
| JavaScript | なし | フルES2024 |
| XMLテンプレート | はい | 不要 |
| PDFオペレーション | ||
| PDFのマージ | はい | はい |
| PDFの分割 | はい | はい |
| 透かし | マニュアル | 内蔵 |
| ヘッダー/フッター | XMLベース | HTML/CSS |
| セキュリティ。 | ||
| パスワード保護 | はい | はい |
| デジタル署名 | はい | はい |
| 暗号化 | はい | はい |
| PDF/A | 制限的 | はい |
| 既知の問題 | ||
| 空白ページ | ⚠️ 文書化されたバグ | なし |
| 不足しているグラフィック | ⚠️ 文書化されたバグ | なし |
| フォントの問題 | ⚠️ 文書化されたバグ | なし |
| 開発分野 | ||
| 学習曲線 | 高(XML) | 低レベル(HTML) |
| ドキュメンテーション | 古い | 広範囲 |
| コミュニティ | なし | 活発 |
TallComponents移行チェックリスト
マイグレーション前のタスク
コードベースを監査して、TallComponents の使用法をすべて特定してください:
grep -r "using TallComponents" --include="*.cs" .
grep -r "Document\|Section\|TextParagraph" --include="*.cs" .grep -r "using TallComponents" --include="*.cs" .
grep -r "Document\|Section\|TextParagraph" --include="*.cs" .既存のXMLテンプレートとレイアウトを文書化し、HTMLに変換する。 現在使用されているセキュリティ設定を特定し、パスワード設定とデジタル署名の実装に言及すること。
コード更新タスク
1.NuGet経由でTallComponentsパッケージを削除する 2.IronPdfパッケージをインストールする 3.XMLレイアウトをHTMLテンプレートに変換 4.セクション/パラグラフモデルをHTML要素に置き換える 5.標準的なHTMLテーブルを使用するようにテーブルコードを更新 6.HtmlHeaderFooterでヘッダー/フッターを HTML に変換します。 7.pdf.SecuritySettingsを使用するようにセキュリティ設定を更新してください。 8.起動時のライセンス初期化を追加
ヘッダーとフッターの移行
TallComponentsはXMLベースのヘッダーを使用します。 IronPdfは動的プレースホルダーを持つHTMLベースのヘッダーを提供します:
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
MaxHeight = 25
};renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
MaxHeight = 25
};IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのヘッダーとフッターについてはこちらをご覧ください。
テスト段階
1.TallComponentsとIronPDFのビジュアル出力の比較 2.空白ページの問題が解決されていることを確認 3.すべてのドキュメントテンプレートのテスト 4.PDFマージ機能の検証 5.デジタル署名のテスト 6.セキュリティ設定が正しく適用されることを確認する
推奨される移行スケジュール
TallComponentsはサポートが終了しているため、早急に移行を進める必要があります:
第1週:コードベースを監査し、すべてのTallComponentsの使用法を特定する。 第2週:ドキュメントテンプレートをXMLからHTMLに変換する 第3週:セキュリティの更新、マージ、コードの署名 第4週: テストと本番デプロイメント
翻訳が遅れるということは、レンダリングバグが文書化された未サポートのソフトウェアを実行するということであり、2026年に向けてプロの開発チームが受け入れるべきリスクではありません。
主な移行のメリット
TallComponentsからIronPDFに移行することで、すぐにメリットが得られます:
最新のChromiumレンダリングエンジン:完全なCSSとJavaScriptのサポートにより、PDFが期待通りにレンダリングされ、TallComponentsで文書化された空白ページやグラフィックが欠落するバグを排除します。
積極的なメンテナンスとセキュリティアップデート: IronPDFは定期的にアップデートを行い、.NET 10を含む現在および将来の.NETバージョンとの互換性を保証します。
より優れた.NET統合:ネイティブのasync/awaitサポートと最新のAPIパターンは、現代のC#開発プラクティスと一致しています。
結論
ApryseによるTallComponentsの買収は、.NET開発者にとって明確な移行の必要性を生み出しました。 新しいライセンスが利用できず、既存ユーザーへのサポートもなく、レンダリングのバグも文書化されていますが、修正されることはありません。
IronPDFは、よりクリーンなAPI、モダンなHTMLベースのレンダリング、アクティブな開発により、直接的な移行パスを提供します。 このガイドのコード例では、TallComponentsのパターンがどのようにIronPdfと同等のものに変換されるかを示しています。
IronPDFの無料トライアルで今すぐ移行を開始し、PDF生成インフラを長期的な成功に導いてください。






