.NETでC#を使ってHTMLをPDFに変換する方法10|IronPDF
ZetPDF(zetpdf.com)は商業ライセンスを持つ.NET PDF SDKで、APIの表面がPDFsharpに非常に似ています — PDFsharpコミュニティは閉じたフォークであるかどうかを疑問視しています。 ベンダーは独自で、100%マネージコードエンジンとしてこれをマーケティングしています。 ZetPDFはNuGet経由で配布されていません — インストールはhttps://zetpdf.com/download/からのZIPダウンロードであり、プロジェクトは2021年からの公開リリース活動を示していません。価格設定は永続的です: $299 シングルプロジェクト / $449 マルチ / $599 OEM。
このガイドは、ZetPDFからIronPDFへの移行経路を提供し、.NET開発者がこの移行を評価するためのステップバイステップの指示、コードの比較、および例を提供します。
なぜZetPDFから移行するのか
ZetPDFのPDFsharp風の座標描画APIには、最新のドキュメント作成ワークフローを制限する建築的な制約が含まれています。 チームが移行を検討する一般的な理由には以下が含まれます:
座標ベースのAPI: ZetPDFはすべての要素を正確なXGraphics座標で配置します。 手動で配置すると、要件が変更されるとメンテナンスの負担が生じます。
CSSサポートなし: スタイリングシステムがなく、フォントと色はコード内で各要素ごとに管理されます。
JavaScriptレンダリングなし: PDF 生成中に動的な Web コンテンツをレンダリングしたり、 JavaScriptを実行したりできません。
ネイティブHTML-to-PDFなし: ZetPDFの文書化された機能リストにはHTML-to-PDFやURL-to-PDFコンバーターは含まれていません; レンダリングは低レベルのXGraphics描画のみです。
NuGetなし、リリース停止: 配布はhttps://zetpdf.com/download/のベンダーZIPであり、2021年からの公開リリース活動はありません。
手動ページブレーク: 自動ページネーションではなく、ページオーバーフローを手動で計算および管理する必要があります。
テキスト測定が必要: テキスト折り返しのための手動計算は開発の負担を増します。
基本的な問題
ZetPDFとPDFsharpは、すべての要素を正確な座標で配置することを強制します。
// ZetPDF: マニュアル positioning nightmare
graphics.DrawString("Name:", font, brush, new XPoint(50, 100));
graphics.DrawString("John Doe", font, brush, new XPoint(100, 100));
graphics.DrawString("Address:", font, brush, new XPoint(50, 120));
graphics.DrawString("123 Main St", font, brush, new XPoint(100, 120));
// ... hundreds of lines for a simple form
// ZetPDF: マニュアル positioning nightmare
graphics.DrawString("Name:", font, brush, new XPoint(50, 100));
graphics.DrawString("John Doe", font, brush, new XPoint(100, 100));
graphics.DrawString("Address:", font, brush, new XPoint(50, 120));
graphics.DrawString("123 Main St", font, brush, new XPoint(100, 120));
// ... hundreds of lines for a simple form
' ZetPDF: マニュアル positioning nightmare
graphics.DrawString("Name:", font, brush, New XPoint(50, 100))
graphics.DrawString("John Doe", font, brush, New XPoint(100, 100))
graphics.DrawString("Address:", font, brush, New XPoint(50, 120))
graphics.DrawString("123 Main St", font, brush, New XPoint(100, 120))
' ... hundreds of lines for a simple form
IronPDFはHTML/CSSを使用し、レイアウトエンジンがすべてを処理します:
// IronPDF: Simple HTML
var html = @"
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF: Simple HTML
var html = @"
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
' IronPDF: Simple HTML
Dim html As String = "
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
IronPDFとZetPDFの比較:機能の比較
アーキテクチャの違いを理解することは、技術的な意思決定者が移行への投資を評価するのに役立ちます:
| フィーチャー | ZetPDF | IronPDF |
|---|---|---|
| APIスタイル。 | PDFsharp形のXGraphics描画 |
高レベルのHTMLレンダリング |
| HTMLからPDFへの変換。 | 文書化された機能リストには含まれていません | はい(フルChromium) |
| 商用ライセンス | はい、永続的 ($299 / $449 / $599) | はい |
| 分布 | ZIPダウンロード(NuGetパッケージなし) | NuGet (IronPdf) |
| 最後の公開活動 | 2021年以来リリース一覧なし | アクティブで頻繁なリリース |
| CSSサポート | なし | 完全なCSS3 |
| JavaScript(JavaScript | なし | フルES2024 |
| 自動レイアウト。 | なし | はい |
| 自動改ページ | なし | はい |
| テーブル | マニュアル図面 | HTML <table> |
| ヘッダー/フッター | マニュアル | HTML/CSS |
| ウォーターマーク。 | マニュアルコード | 内蔵 |
| PDFをマージする。 | 一級のヘルパーはありません | はい |
| PDFを分割する。 | 一級のヘルパーはありません | はい |
| デジタル署名。 | なし | はい |
| PDF/A | なし | はい |
クイックスタートZetPDFからIronPDFへの移行
これらの基本的なステップを踏めば、すぐにでも移行を開始できます。
ステップ1: ZetPDF参照をIronPDF NuGetパッケージに置き換えます
ZetPDFはNuGetにはありません— https://zetpdf.com/download/からZIPで提供され、プロジェクトに`ZetPDF.dll`を追加することで参照されます。 移行後、このDLL参照を削除し、IronPDFをNuGetからインストールします:
# Remove the ZetPDF.dll reference from your csproj manually, then:
dotnet add package IronPdf
# Remove the ZetPDF.dll reference from your csproj manually, then:
dotnet add package IronPdf
ステップ 2: 名前空間の更新
ZetPDFの名前空間をIronPDFの名前空間に置き換えます:
// Before (ZetPDF)
using ZetPDF;
using ZetPDF.Drawing;
using ZetPDF.Fonts;
// After (IronPDF)
using IronPdf;
// Before (ZetPDF)
using ZetPDF;
using ZetPDF.Drawing;
using ZetPDF.Fonts;
// After (IronPDF)
using IronPdf;
Imports IronPdf
ステップ 3: ライセンスの初期化
アプリケーション起動時のライセンス初期化を追加します:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
コード移行の例
HTML を PDF に変換する
ZetPDFの公開された機能リストはネイティブHTML-to-PDFやURL-to-PDFコンバーターを含んでおらず — ドキュメント化された表面はPDFの表示/印刷、注釈、AES256暗号化、フォームフィールド、テキスト抽出をカバーしています。 下記の疑似ラッパーは、通常ZetPDFの上にHTML-to-PDFエントリポイントをスタブする方法を示しています; 実際には作業が外部HTMLレンダラーや低レベルのXGraphics描画に戻ることになります。
ZetPDFアプローチ(例示的 — ネイティブHTML-to-PDFはありません):
//ZetPDFis NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
class Program
{
static void Main()
{
// なし native HtmlToPdfConverter exists inZetPDF— illustrative call only.
var converter = new HtmlToPdfConverter();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
converter.ConvertHtmlToPdf(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully");
}
}
//ZetPDFis NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
class Program
{
static void Main()
{
// なし native HtmlToPdfConverter exists inZetPDF— illustrative call only.
var converter = new HtmlToPdfConverter();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
converter.ConvertHtmlToPdf(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports ZetPDF
Imports System
Class Program
Shared Sub Main()
' なし native HtmlToPdfConverter exists inZetPDF— illustrative call only.
Dim converter As New HtmlToPdfConverter()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
converter.ConvertHtmlToPdf(htmlContent, "output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
IronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var 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()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Module
IronPDFはPdfDocumentオブジェクトを返します—ファイルに保存したり、バイナリデータを取得したり、保存前に追加の操作を行ったりできます。
高度なHTMLからPDFへのシナリオについては、HTMLからPDFへの変換ガイドをご覧ください。
URLをPDFに変換する
ZetPDFにはネイティブURL-to-PDFコンバーターもありません; HTML/URLレンダリングは文書化された機能リストには含まれていません。実際の移行経路では通常ZetPDFを外部のHTMLレンダラーと組み合わせたり、IronPDFのようなChromiumベースのライブラリに移行します。
ZetPDFアプローチ(例示的 — ネイティブURL-to-PDFはありません):
//ZetPDFis NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
class Program
{
static void Main()
{
// なし native ConvertUrlToPdf exists inZetPDF— illustrative call only.
var converter = new HtmlToPdfConverter();
var url = "https://www.example.com";
converter.ConvertUrlToPdf(url, "webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
//ZetPDFis NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
class Program
{
static void Main()
{
// なし native ConvertUrlToPdf exists inZetPDF— illustrative call only.
var converter = new HtmlToPdfConverter();
var url = "https://www.example.com";
converter.ConvertUrlToPdf(url, "webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
Imports ZetPDF
Imports System
Class Program
Shared Sub Main()
' なし native ConvertUrlToPdf exists in ZetPDF— illustrative call only.
Dim converter As New HtmlToPdfConverter()
Dim url As String = "https://www.example.com"
converter.ConvertUrlToPdf(url, "webpage.pdf")
Console.WriteLine("PDF from URL created successfully")
End Sub
End Class
IronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
Dim url As String = "https://www.example.com"
Dim pdf = renderer.RenderUrlAsPdf(url)
pdf.SaveAs("webpage.pdf")
Console.WriteLine("PDF from URL created successfully")
End Sub
End Module
IronPDFのChromePdfRenderer上で動作し、JavaScript実行や最新のCSSなどを含むウェブページキャプチャのための完全なChromiumレンダリングエンジンを活用しています。
認証とカスタムヘッダーオプションについては、URL to PDF documentationを参照してください。
複数のPDFをマージする
ZetPDFは一行のPdfMerger.MergeFiles()ヘルパーを提供していません。 マージはPDFsharpと同じパターン(これがZetPDFの特徴です)に従います:Save()を行います。 以下の例示的なラッパーはIronPDFの表面を比較のためにミラーリングします; 実際のZetPDFコードでは手動でループを書く必要があります。
ZetPDFアプローチ(例示的 — 組み込みのPdfMergerはありません):
//ZetPDFis NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
//ZetPDFhas no built-in PdfMerger — illustrative call only.
var merger = new PdfMerger();
var files = new List<string> { "document1.pdf", "document2.pdf" };
merger.MergeFiles(files, "merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
//ZetPDFis NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
//ZetPDFhas no built-in PdfMerger — illustrative call only.
var merger = new PdfMerger();
var files = new List<string> { "document1.pdf", "document2.pdf" };
merger.MergeFiles(files, "merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
Imports ZetPDF
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
' ZetPDFhas no built-in PdfMerger — illustrative call only.
Dim merger As New PdfMerger()
Dim files As New List(Of String) From {"document1.pdf", "document2.pdf"}
merger.MergeFiles(files, "merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
IronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim pdfs As New List(Of PdfDocument) From {
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
}
Dim merged As PdfDocument = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
IronPDFはPdfDocument.Merge()メソッドでマージします。 オブジェクト指向のアプローチは、保存前にマージされたドキュメントに追加の操作を許可します。
その他のマージ オプションについては、PDF マージ ドキュメントを参照してください。
座標ベースの描画 vs HTML
座標ベースのグラフィックを使用する既存のZetPDFコードを持つ開発者のための移行パスには、描画コマンドをHTML/CSSに変換することが含まれます。
ZetPDFの座標ベースのアプローチ:
using ZetPDF;
using ZetPDF.Drawing;
var document = new PdfDocument();
var page = document.AddPage();
page.Width = XUnit.FromMillimeter(210);
page.Height = XUnit.FromMillimeter(297);
var graphics = XGraphics.FromPdfPage(page);
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Arial", 12);
graphics.DrawString("Company Report", titleFont, XBrushes.Navy,
new XPoint(50, 50));
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black,
new XPoint(50, 80));
graphics.DrawString("Generated: " + DateTime.Now.ToString(), bodyFont, XBrushes.Gray,
new XPoint(50, 100));
document.Save("report.pdf");
using ZetPDF;
using ZetPDF.Drawing;
var document = new PdfDocument();
var page = document.AddPage();
page.Width = XUnit.FromMillimeter(210);
page.Height = XUnit.FromMillimeter(297);
var graphics = XGraphics.FromPdfPage(page);
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Arial", 12);
graphics.DrawString("Company Report", titleFont, XBrushes.Navy,
new XPoint(50, 50));
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black,
new XPoint(50, 80));
graphics.DrawString("Generated: " + DateTime.Now.ToString(), bodyFont, XBrushes.Gray,
new XPoint(50, 100));
document.Save("report.pdf");
Imports ZetPDF
Imports ZetPDF.Drawing
Dim document As New PdfDocument()
Dim page = document.AddPage()
page.Width = XUnit.FromMillimeter(210)
page.Height = XUnit.FromMillimeter(297)
Dim graphics = XGraphics.FromPdfPage(page)
Dim titleFont As New XFont("Arial", 24, XFontStyle.Bold)
Dim bodyFont As New XFont("Arial", 12)
graphics.DrawString("Company Report", titleFont, XBrushes.Navy, New XPoint(50, 50))
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black, New XPoint(50, 80))
graphics.DrawString("Generated: " & DateTime.Now.ToString(), bodyFont, XBrushes.Gray, New XPoint(50, 100))
document.Save("report.pdf")
IronPDF HTMLアプローチ:。
using IronPdf;
var html = $@"
<html>
<head>
<style>
body {{font-family: Arial, sans-serif; padding: 50px;}}
h1 {{color: navy;}}
.date {{color: gray;}}
</style>
</head>
<body>
<h1>Company Report</h1>
<p>This is the introduction paragraph.</p>
<p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;
var html = $@"
<html>
<head>
<style>
body {{font-family: Arial, sans-serif; padding: 50px;}}
h1 {{color: navy;}}
.date {{color: gray;}}
</style>
</head>
<body>
<h1>Company Report</h1>
<p>This is the introduction paragraph.</p>
<p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
Imports IronPdf
Dim html As String = $"
<html>
<head>
<style>
body {{font-family: Arial, sans-serif; padding: 50px;}}
h1 {{color: navy;}}
.date {{color: gray;}}
</style>
</head>
<body>
<h1>Company Report</h1>
<p>This is the introduction paragraph.</p>
<p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report.pdf")
ZetPDFのアプローチでは、フォントオブジェクトを作成し、正確なピクセル位置を計算し、グラフィックのコンテキストを手動で管理する必要があります。 IronPDFのアプローチでは、ウェブ開発者がすでに知っている標準的なHTMLとCSSを使用しています。フォント、色、レイアウトは使い慣れたCSSプロパティで処理されます。
ZetPDFAPIからIronPDFへのマッピングリファレンス
このマッピングは、APIと同等のものを直接示すことで、移行を加速します:
| ZetPDF | IronPDF |
|---|---|
new PdfDocument() |
new ChromePdfRenderer() |
document.AddPage() |
自動翻訳 |
XGraphics.FromPdfPage(page) |
該当なし (HTML/CSS代わりに) |
graphics.DrawString() |
HTMLテキスト要素 |
graphics.DrawImage() |
<img>タグ |
graphics.DrawLine() |
CSSのボーダー / <hr> |
graphics.DrawRectangle() |
CSS border + div |
new XFont() |
CSS font-family |
XBrushes.Black |
CSS color |
document.Save() |
pdf.SaveAs() |
PdfReader.Open() |
PdfDocument.FromFile() |
| (no native HTML-to-PDF) | ChromePdfRenderer.RenderHtmlAsPdf() |
| (no native URL-to-PDF) | ChromePdfRenderer.RenderUrlAsPdf() |
| (manual page-copy loop) | PdfDocument.Merge() |
一般的な移行の問題と解決策
課題1: 座標ベースのレイアウト
ZetPDF:すべてにおいて、正確なX,Y座標と手動での位置決めが必要です。
ソリューション: HTML/CSSフローレイアウトを使用する。 絶対位置指定が必要な場合は、CSSを使用してください:
.positioned-element {
position: absolute;
top: 100px;
left: 50px;
}
課題2:フォントオブジェクト管理
ZetPDF: 各フォントバリエーションに対してXFontオブジェクトを作成します。
ソリューション: CSS font-familyを使用してください:
<style>
body { font-family: Arial, sans-serif; }
h1 { font-family: 'Times New Roman', serif; font-size: 24px; font-weight: bold; }
</style>
<style>
body { font-family: Arial, sans-serif; }
h1 { font-family: 'Times New Roman', serif; font-size: 24px; font-weight: bold; }
</style>
課題3: カラーハンドリング
ZetPDF: XBrushesと色オブジェクトを使用します。
解決策:標準的なCSSの色を使用する:
.header { color: navy; background-color: #f5f5f5; }
.warning { color: rgb(255, 0, 0); }
課題4:マニュアルの改ページ
ZetPDF:Y位置を追跡し、コンテンツがオーバーフローしたときに手動で新しいページを作成します。
ソリューション: IronPDFは自動改ページを処理します。 明示的な制御にはCSSを使用してください:
.section { page-break-after: always; }
.keep-together { page-break-inside: avoid; }
課題5:テーブルの作成
ZetPDF:長方形、線、テキストの位置決めを手動で描画する必要があります。
ソリューション: CSSスタイリングで標準的なHTMLテーブルを使用してください:
<table style="border-collapse: collapse; width: 100%;">
<tr>
<th style="border: 1px solid black; padding: 8px;">Header</th>
</tr>
<tr>
<td style="border: 1px solid black; padding: 8px;">Data</td>
</tr>
</table>
<table style="border-collapse: collapse; width: 100%;">
<tr>
<th style="border: 1px solid black; padding: 8px;">Header</th>
</tr>
<tr>
<td style="border: 1px solid black; padding: 8px;">Data</td>
</tr>
</table>
ZetPDF移行チェックリスト
マイグレーション前のタスク
コードベースを監査して、すべてのZetPDFの使用方法を確認してください:
grep -r "using ZetPDF" --include="*.cs" .
grep -r "XGraphics\|XFont\|XBrushes\|PdfReader" --include="*.cs" .
grep -r "using ZetPDF" --include="*.cs" .
grep -r "XGraphics\|XFont\|XBrushes\|PdfReader" --include="*.cs" .
HTMLへの変換が必要な座標ベースの描画コードを文書化すること。 フォントと色の使用パターンに注意してください。 レイアウト構造をHTMLに対応させる。
コード更新タスク
- マニュアル
.csprojから削除します - IronPDFのNuGetパッケージをインストールします(
dotnet add package IronPdf) - 名前空間インポートを
IronPdfに更新します - ZetPDFを使用した自社開発のHTML-to-PDFラッパーを
ChromePdfRenderer.RenderHtmlAsPdf()に置き換えます - URL-to-PDFラッパーを
ChromePdfRenderer.RenderUrlAsPdf()に置き換えます - 手動のページコピー合体ループを
PdfDocument.Merge()に置き換えます DrawString()呼び出しをHTMLテキスト要素に変換しますXFontをCSSfont-familyに変換しますXBrushesをCSSの色に置き換えます- 起動時にIronPDFライセンスの初期化を追加します(
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";)
移行後のテスト
移行後、これらの点を検証してください:
- ビジュアル出力を比較し、外観が一致または改善されていることを確認します。
- CSSスタイリングでフォントが期待通りに表示されることを確認する。
- 自動ページネーションで改ページが正しく行われることをテストする
- 画像が正しく配置され、表示されていることを確認する
- PDF のマージ操作が正しい出力を生成することをテストする
- すべての既存機能が新しい実装で動作することを確認する。
IronPDFに移行する主な利点
ZetPDFからIronPDFに移行することで、いくつかの重要な利点が得られます:
最新の Chromium レンダリング エンジン:IronPDFはHTML から PDF への変換に Chromium を使用し、完全な CSS3 および ES2024 JavaScriptサポートを保証します。 最新のフレームワークとレスポンシブデザインを正しくレンダリングすること。
HTML ベースのコンテンツ作成: Web 開発者は既存の HTML および CSS スキルを活用できます。 座標ベースの描画APIを学んだり、フォント・オブジェクトを管理したりする必要はありません。
自動レイアウトとページ区切り:テキストの折り返し、ページ区切り、フロー レイアウトは自動的に行われます。 要素の位置を手動で計算する必要はありません。
簡素化された API:一般的な操作に対する単一メソッド呼び出し。 PdfDocument.Merge()は複雑なファイルパス扱いのパターンを置き換えます。
アクティブな開発: IronPDFの定期的なリリーステンポにより、ライブラリがZetPDFの2021年以降の公的リリース活動不足に対しても最新 for .NETバージョンを維持します。
包括的な機能セット: ZetPDFの文書化された表面には欠けている組み込みのウォーターマーキング、デジタル署名、PDF/A準拠、および高度なPDF操作機能があります。

