IRONSOFTWAREHOME
ビデオ

.NETでC#を使ってHTMLをPDFに変換する方法10|IronPDF

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

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

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とZetPDFの比較:機能の比較

アーキテクチャの違いを理解することは、技術的な意思決定者が移行への投資を評価するのに役立ちます:

フィーチャーZetPDFIronPDF
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
SHELL

ステップ 2: 名前空間の更新

ZetPDFの名前空間をIronPDFの名前空間に置き換えます:

// Before (ZetPDF)
using ZetPDF;
using ZetPDF.Drawing;
using ZetPDF.Fonts;

// After (IronPDF)
using IronPdf;

ステップ 3: ライセンスの初期化

アプリケーション起動時のライセンス初期化を追加します:

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");
    }
}
C#

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");
    }
}

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");
    }
}
C#

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");
    }
}

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");
    }
}
C#

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");
    }
}

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");

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");
C#

ZetPDFのアプローチでは、フォントオブジェクトを作成し、正確なピクセル位置を計算し、グラフィックのコンテキストを手動で管理する必要があります。 IronPDFのアプローチでは、ウェブ開発者がすでに知っている標準的なHTMLとCSSを使用しています。フォント、色、レイアウトは使い慣れたCSSプロパティで処理されます。

##ZetPDFAPIからIronPDFへのマッピングリファレンス

このマッピングは、APIと同等のものを直接示すことで、移行を加速します:

ZetPDFIronPDF
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.BlackCSS 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;
}
Text

課題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>
HTML

課題3: カラーハンドリング

ZetPDF: XBrushesと色オブジェクトを使用します。

**解決策:**標準的なCSSの色を使用する:

.header { color: navy; background-color: #f5f5f5; }
.warning { color: rgb(255, 0, 0); }
Text

課題4:マニュアルの改ページ

**ZetPDF:**Y位置を追跡し、コンテンツがオーバーフローしたときに手動で新しいページを作成します。

ソリューション: IronPDFは自動改ページを処理します。 明示的な制御にはCSSを使用してください:

.section { page-break-after: always; }
.keep-together { page-break-inside: avoid; }
Text

課題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>
HTML

ZetPDF移行チェックリスト

マイグレーション前のタスク

コードベースを監査して、すべてのZetPDFの使用方法を確認してください:

grep -r "using ZetPDF" --include="*.cs" .
grep -r "XGraphics\|XFont\|XBrushes\|PdfReader" --include="*.cs" .
SHELL

HTMLへの変換が必要な座標ベースの描画コードを文書化すること。 フォントと色の使用パターンに注意してください。 レイアウト構造をHTMLに対応させる。

コード更新タスク

  1. マニュアル.csprojから削除します
  2. IronPDFのNuGetパッケージをインストールします(dotnet add package IronPdf
  3. 名前空間インポートをIronPdfに更新します
  4. ZetPDFを使用した自社開発のHTML-to-PDFラッパーをChromePdfRenderer.RenderHtmlAsPdf()に置き換えます
  5. URL-to-PDFラッパーをChromePdfRenderer.RenderUrlAsPdf()に置き換えます
  6. 手動のページコピー合体ループをPdfDocument.Merge()に置き換えます
  7. DrawString()呼び出しをHTMLテキスト要素に変換します
  8. XFontをCSS font-familyに変換します
  9. XBrushesをCSSの色に置き換えます
  10. 起動時に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操作機能があります。

ご注意: PDFSharpとZetPDFはそれぞれの所有者の登録商標です。 このサイトはZetPDFまたはempira Software GmbHとは提携、承認、支援されていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。