フッターコンテンツにスキップ
ビデオ

.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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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
SHELL

ステップ 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
$vbLabelText   $csharpLabel

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

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

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

コード移行の例

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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

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

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" .
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は現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね