HiQPdfとIronPDFの比較:技術比較ガイド
.NET 開発者が HTML から PDF へのソリューションを評価する場合、WebKit ベースのレンダリングを利用する商用ライブラリとしてHiQPdfが際立っています。HiQPdfは HTML5/CSS3 をサポートしていますが、古い WebKit エンジンは最新の JavaScript フレームワークと互換性がない可能性があり、無料バージョンでは目立つ透かしが付いた 3 ページまでに制限されています。 対照的に、IronPDF は最新の Chromium ベースのレンダリング エンジンを使用し、完全な JavaScript サポートとすべての .NET プラットフォームにわたる統合パッケージを提供します。
この比較では、関連する技術的側面から両方のライブラリを評価し、プロの開発者やアーキテクトが .NET PDF のニーズに応じて情報に基づいた決定を下せるよう支援します。
HiQPdfの概要
HiQPdfは、WebKitベースのレンダリングエンジンを採用した商用HTML-PDF変換ライブラリです。ライブラリのメインコンバータクラスであるHtmlToPdfには、生のbyte[]データを返すConvertHtmlToMemory()やConvertUrlToMemory()などのメソッドが含まれています。 構成は、 Document.Header 、 Document.Footer 、 Document.PageSizeなどのDocumentオブジェクトのプロパティ チェーンを通じて管理されます。
HiQPdf の無料バージョンには、邪魔な透かしが入った PDF 出力が最大 3 ページという重大な制限があり、評価中に大規模なドキュメントを徹底的にテストすることが困難になります。 ライブラリは、さまざまなプラットフォーム向けに複数の NuGet パッケージ バリアント (HiQPdf、HiQPdf.Free、HiQPdf.NetCore、HiQPdf.NetCore.x64、HiQPdf.Client) を提供していますが、ドキュメントでは .NET Core または .NET 5+ のサポートが明確に指定されていません。
ヘッダーとフッターには、Document.HeaderとDocument.Footerコレクションに追加されたHtmlToPdfVariableElementオブジェクトを使用します。 ページ番号プレースホルダーでは、現在のページには{CrtPage}構文を使用し、合計ページには{PageCount}構文を使用します。
IronPDFの概要
IronPDF は、最新の Chromium レンダリング エンジンを活用した .NET PDF ライブラリであり、React、Angular、Vue などの HTML5、CSS3、JavaScript フレームワークを完全にサポートします。 ライブラリの主なレンダリング クラスChromePdfRendererには、 PdfDocumentオブジェクトを返すRenderHtmlAsPdf()やRenderUrlAsPdf()などのメソッドが含まれています。
IronPDF は、.NET 6、7、8、9、10 との互換性が文書化された、すべてのプラットフォーム向けの単一の統合 NuGet パッケージを提供します。構成では、レンダラーで直接RenderingOptionsプロパティを使用します。 ヘッダーとフッターは、CenterTextやFontSizeなどのプロパティを持つTextHeaderFooterを使用できます。 ページ番号のプレースホルダには、{page}<//code>と{total-pages}<//code>構文を使用します。
レンダリング エンジンと互換性の比較
これらのライブラリの基本的な違いは、レンダリングエンジンとプラットフォームサポートにあります。
| アスペクト | HiQPdf | IronPDF |
|---|---|---|
| レンダリングエンジン | WebKitベース(古い) | モダンChromium |
| 無料レベル | 3ページ以内+透かし | 30日間フルトライアル |
| モダンJSサポート | 制限的 | フル(React、Angular、Vue) |
| .NET Core/5+サポート。 | 複数のパッケージが必要 | 統一パッケージ |
| APIデザイン。 | 複雑なプロパティチェーン | クリーンで流暢なAPI |
| CSS3のサポート。 | 部分的 | サポート対象 |
| ドキュメント | 断片化 | 徹底的な |
| NuGetパッケージ。 | 複数のバリエーション | 単一パッケージ |
HiQPdfのWebKitベースのエンジンは古い技術であるため、最新のJavaScriptフレームワークや複雑なHTML構造には対応できません。 IronPdfのChromeエンジンはGoogle Chromeと同じレンダリング品質を提供し、最新のウェブコンテンツの正確な変換を保証します。
コードの比較:一般的なPDF操作
HTMLとURLからPDFへの変換
最も基本的な操作は、API設計の違いを示しています。
HiQPdf:
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
byte[] pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory("https://example.com");
System.IO.File.WriteAllBytes("output.pdf", pdfBuffer);
// Convert HTML string
string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
byte[] pdfFromHtml = htmlToPdfConverter.ConvertHtmlToMemory(html, "");
System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml);
}
}// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
byte[] pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory("https://example.com");
System.IO.File.WriteAllBytes("output.pdf", pdfBuffer);
// Convert HTML string
string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
byte[] pdfFromHtml = htmlToPdfConverter.ConvertHtmlToMemory(html, "");
System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml);
}
}IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("output.pdf");
// Convert HTML string
string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdfFromHtml = renderer.RenderHtmlAsPdf(html);
pdfFromHtml.SaveAs("fromhtml.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("output.pdf");
// Convert HTML string
string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdfFromHtml = renderer.RenderHtmlAsPdf(html);
pdfFromHtml.SaveAs("fromhtml.pdf");
}
}HiQPdfはHtmlToPdfコンバータを作成し、ConvertUrlToMemory()またはConvertHtmlToMemory()を呼び出して生のbyte[]データを取得し、File.WriteAllBytes()を使って手動でディスクに書き込みます。 ConvertHtmlToMemory()メソッドには、ベースURLの第2パラメータが必要です(不要な場合は空文字列)。
IronPDFはChromePdfRendererを作成し、RenderUrlAsPdf()またはRenderHtmlAsPdf()を呼び出してPdfDocumentオブジェクトを取得し、SaveAs()で直接保存します。 APIは、オブジェクト指向のドキュメント処理でより簡潔になります。
高度なHTMLレンダリングオプションについては、HTMLからPDFへの変換ガイドをご覧ください。
複数のPDFをマージする
PDFマージは、文書操作のさまざまなアプローチを示します。
HiQPdf:
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
// Create first PDF
HtmlToPdf converter1 = new HtmlToPdf();
byte[] pdf1 = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "");
System.IO.File.WriteAllBytes("doc1.pdf", pdf1);
// Create second PDF
HtmlToPdf converter2 = new HtmlToPdf();
byte[] pdf2 = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "");
System.IO.File.WriteAllBytes("doc2.pdf", pdf2);
// Merge PDFs
PdfDocument document1 = PdfDocument.FromFile("doc1.pdf");
PdfDocument document2 = PdfDocument.FromFile("doc2.pdf");
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");
}
}// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
// Create first PDF
HtmlToPdf converter1 = new HtmlToPdf();
byte[] pdf1 = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "");
System.IO.File.WriteAllBytes("doc1.pdf", pdf1);
// Create second PDF
HtmlToPdf converter2 = new HtmlToPdf();
byte[] pdf2 = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "");
System.IO.File.WriteAllBytes("doc2.pdf", pdf2);
// Merge PDFs
PdfDocument document1 = PdfDocument.FromFile("doc1.pdf");
PdfDocument document2 = PdfDocument.FromFile("doc2.pdf");
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");
}
}IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Create first PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>");
pdf1.SaveAs("doc1.pdf");
// Create second PDF
var pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>");
pdf2.SaveAs("doc2.pdf");
// Merge PDFs
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Create first PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>");
pdf1.SaveAs("doc1.pdf");
// Create second PDF
var pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>");
pdf2.SaveAs("doc2.pdf");
// Merge PDFs
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}HiQPdfでは、まずPDFをディスクに保存し、PdfDocument.FromFile()で読み込み、AddDocument()で別のPDFに追加し、最後にWriteToFile()で結果を保存します。 これは、最初のドキュメントを修正するものです。
IronPDFは静的なPdfDocument.Merge()メソッドを使ってメモリ上で直接ドキュメントをマージすることができます。 このアプローチは、よりクリーンで、中間ファイルI/Oを必要としません。
ページ番号を含むヘッダーとフッター
ヘッダーとフッターの構成は、動的コンテンツへのさまざまなアプローチを示しています。
HiQPdf:
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// Add header
htmlToPdfConverter.Document.Header.Height = 50;
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page Header</div>", "");
htmlToPdfConverter.Document.Header.Add(headerHtml);
// Add footer with page number
htmlToPdfConverter.Document.Footer.Height = 50;
HtmlToPdfVariableElement footerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "");
htmlToPdfConverter.Document.Footer.Add(footerHtml);
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "");
System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer);
}
}// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// Add header
htmlToPdfConverter.Document.Header.Height = 50;
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page Header</div>", "");
htmlToPdfConverter.Document.Header.Add(headerHtml);
// Add footer with page number
htmlToPdfConverter.Document.Footer.Height = 50;
HtmlToPdfVariableElement footerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "");
htmlToPdfConverter.Document.Footer.Add(footerHtml);
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "");
System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer);
}
}IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Configure header and footer
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Page Header",
FontSize = 12
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page} of {total-pages}",
FontSize = 10
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>");
pdf.SaveAs("header-footer.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Configure header and footer
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Page Header",
FontSize = 12
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page} of {total-pages}",
FontSize = 10
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>");
pdf.SaveAs("header-footer.pdf");
}
}HiQPdfは、Document.HeaderとDocument.Footerプロパティを通してヘッダーとフッターを設定し、Heightを設定し、HtmlToPdfVariableElementオブジェクトを追加します。 ページ番号のプレースホルダは、現在のページには{CrtPage}<//code>を使用し、総ページには{PageCount}<//code>を使用します。
IronPDFはTextHeaderFooterオブジェクトでRenderingOptions.TextHeader<//code>とRenderingOptions.TextFooter<//code>を使用します。 CenterTextやFontSizeのようなプロパティは、直接設定を提供します。 ページ番号のプレースホルダには、{page}<//code>と{total-pages}<//code>を使用します。
ヘッダーとフッターの設定については、IronPDFチュートリアルをご覧ください。
APIマッピングリファレンス
HiQPdfの移行を評価したり、機能を比較したりする開発者のために、このマッピングは同等の操作を示しています:
メインクラスのマッピング
| HiQPdfクラス | IronPDF クラス |
|---|---|
| <コード>HtmlToPdf</コード | <コード>ChromePdfRenderer</コード |
| <コード>PdfDocument</コード | <コード>PdfDocument</コード |
| <コード>PdfPage</コード | <コード>pdf.Pages[i]</コード |
| <コード>PdfDocumentControl</コード | <コード>レンダリングオプション</コード |
PdfHeader / PdfDocumentHeader | <コード>HtmlHeaderFooter</コード |
PdfFooter / PdfDocumentFooter | <コード>HtmlHeaderFooter</コード |
| <コード>HtmlToPdfVariableElement</コード | <コード>HtmlHeaderFooter.HtmlFragment</コード |
変換メソッドマッピング
| HiQPdfメソッド | IronPDF メソッド |
|---|---|
ConvertHtmlToMemory(html、baseUrl)。 | RenderHtmlAsPdf(html, baseUrl). |
ConvertUrlToMemory(url)を使用してください。 | RenderUrlAsPdf(url)を使用してください。 |
ConvertHtmlToFile(html, baseUrl, path). | RenderHtmlAsPdf(html).SaveAs(path)を実行してください。 |
| <コード>ConvertUrlToFile(url, path) | RenderUrlAsPdf(url).SaveAs(path)を実行してください。 |
プロパティ マッピング
| HiQPdf プロパティ | IronPDF プロパティ |
|---|---|
| <コード>ブラウザ幅</コード | RenderingOptions.ViewPortWidth。 |
| <コード>ブラウザハイト</コード | RenderingOptions.ViewPortHeight。 |
| <コード>Document.PageSize</コード | <コード>RenderingOptions.PaperSize</コード |
| <コード>Document.PageOrientation</コード | <コード>RenderingOptions.PaperOrientation</コード |
| <コード>Document.Margins.Top</コード | RenderingOptions.MarginTop。 |
ドキュメント.マージン.ボトム | RenderingOptions.MarginBottom。 |
ドキュメント.余白.左 | RenderingOptions.MarginLeft(レンダリングオプション.マージンレフト)。 |
ドキュメント.余白.右 | <コード>RenderingOptions.MarginRight</コード |
| <コード>Document.Header.Height</コード | <コード>HtmlHeader.MaxHeight</コード |
| <コード>Document.Footer.Height</コード | <コード>HtmlFooter.MaxHeight</コード |
| <コード>シリアル番号</コード | <コード>IronPdf.License.LicenseKey</コード |
プレースホルダーの構文マッピング
ヘッダーとフッターのプレースホルダーは、ライブラリによって異なります:
| HiQPdf | IronPDF |
|---|---|
{CrtPage}<//code> | <コード>{ページ}</コード |
| <コード>{ページ数}</コード | <コード>{総ページ数}</コード |
{CrtPageUri}<//code> | {url}<//code> |
{CrtPageTitle}<//code> | {html-title}<//code> |
機能比較の概要
| フィーチャー | HiQPdf | IronPDF |
|---|---|---|
| クロムレンダリング | ❌ (WebKit) | ✅ |
| モダンJavaScript(React、Angular、Vue) | ⚠️ 有限会社 | ✅ |
| CSS3をフルサポート | ⚠️ 部分 | ✅ |
| .NET 6/7/8/9/10サポート | ⚠️ 不明確なドキュメント | ✅ |
| 単一のNuGetパッケージ | ❌ (複数のバリエーション) | ✅ |
| 無料フルトライアル | ❌ (3ページ制限 + 透かし) | ✅ (30日間) |
| HTMLからPDFへ | ✅ | ✅ |
| URLからPDFへ | ✅ | ✅ |
| PDFマージ | ✅ (<コード>AddDocument</コード>) | ✅ (<コード>マージ</コード>) |
| ヘッダー/フッター | ✅ (<コード>HtmlToPdfVariableElement</コード>) | ✅ (<コード>TextHeaderFooter</コード>) |
チームがHiQPdfからIronPDFへの移行を検討するとき
開発チームがHiQPdfからIronPdfへの移行を評価する理由はいくつかあります:
制限のある無料バージョン:HiQPdfの無料バージョンでは、邪魔な透かしが入った 3 ページ制限が課せられるため、実質的に本番環境では使用できず、徹底的に評価することが困難です。 IronPdfは30日間のフル機能トライアルを提供しています。
古い WebKit エンジン:HiQPdfの WebKit ベースのレンダリング エンジンは、React、Angular、Vue などの最新の JavaScript フレームワークでは機能しません。 IronPdfのChromeエンジンはGoogle Chromeと同じレンダリング品質を提供し、複雑な最新のウェブコンテンツの正確な変換を保証します。
.NET Core のサポートが不明瞭:HiQPdfのドキュメントでは、.NET Core または .NET 5+ のサポートが明確に示されておらず、ライブラリではプラットフォームごとに個別の NuGet パッケージが必要です。 IronPDFは.NET 6, 7, 8, 9, 10を文書化した統一パッケージを提供します。
断片化された NuGet パッケージ:HiQPdfでは、シナリオに応じて異なるパッケージ バリアント (HiQPdf、HiQPdf.Free、HiQPdf.NetCore、HiQPdf.NetCore.x64、HiQPdf.Client) が必要です。 IronPDFはすべてのプラットフォームで単一のパッケージを使用します。
複雑な API 設計:HiQPdfでは、 Document.Header.HeightやDocument.Footer.Add()などのプロパティ チェーンを介した詳細な構成が必要です。 RenderingOptionsプロパティによるIronPdfの流暢なAPIは、よりすっきりとした設定を提供します。
異なるプレースホルダー構文:HiQPdfは{CrtPage}および{PageCount}プレースホルダーを使用しますが、IronPDF は{page}および{total-pages}を使用します。 移行には、すべてのヘッダー/フッターテンプレートの更新が必要です。
長所と考慮点
HiQPdfの強み
- HTML5/CSS3 サポート: HTML5 および CSS3 レンダリング機能を提供します -確立されたライブラリ:既存のユーザーベースを持つ商用ライブラリ
HiQPdfについての考察
- WebKit エンジン:最新の JavaScript サポートが限定されている古いレンダリング技術
- 3ページ制限:無料版では大幅な制限があります -断片化されたパッケージ:異なるプラットフォーム用の複数の NuGet パッケージ
- .NET サポートが不明瞭:ドキュメントでは最新の .NET との互換性が明確に説明されていない -複雑なプロパティチェーン:ネストされたプロパティによる詳細な設定 -ポイントベースの単位:測定にはポイント(1インチあたり72)を使用します
IronPDFの強み
IronPDFについての考察
-商用ライセンス:実稼働環境での使用に必要 -ミリメートル単位:余白にポイントではなくミリメートルを使用します
結論
HiQPdfとIronPDFは.NETアプリケーションにおけるHTML-to-PDFテクノロジーの異なる世代を代表します。 HiQPdfのWebKitベースのエンジンは、基本的なHTML5/CSS3をサポートしていますが、最新のJavaScriptフレームワークとの互換性に問題があり、.NET Coreとの互換性が不明確で、複数の断片的なパッケージがあります。 無料版では3ページの制限があるため、評価が大幅に制限されます。
IronPdfはReact、Angular、VueアプリケーションのJavaScriptをフルサポートした最新のChromiumベースの代替ツールを提供します。 ドキュメント化された.NET 6/7/8/9/10サポートの単一の統一NuGetパッケージは、デプロイを簡素化し、クリーンなAPI設計は、構成の複雑さを軽減します。
組織が.NET 10、C# 14、および2026年までのアプリケーション開発を計画する中で、断片化されたパッケージを使用する古いWebKitレンダリングと、統一されたサポートを使用する最新のChromiumレンダリングのどちらを選択するかは、開発速度と出力品質の両方に大きく影響します。 最新のJavaScriptフレームワークのサポート、明確な.NETとの互換性、合理化されたパッケージ管理を必要とするチームは、IronPDFがこれらの要件に効果的に対応することがわかります。
無料トライアルでIronPDFの評価を開始し、包括的なドキュメントを参照して、特定の要件への適合性を評価してください。