VectSharp vs IronPDF:技術比較ガイド
ベクトシャープvs IronPDF:.NET PDF生成の技術的比較
.NET開発者がPDF文書を作成する必要がある場合、根本的に設計思想が異なるライブラリに遭遇します。 VectSharpとIronPDFは、PDF生成への2つの異なるアプローチを表しています。1つはベクターグラフィックスと科学的視覚化に焦点を当てたもので、もう1つはHTMLコンテンツからの文書作成です。 この技術比較では、アーキテクトや開発者が特定の要件に適したツールを選択できるよう、両ライブラリを検証します。
VectSharpを理解する"を参照してください。
VectSharpは、開発者が複雑なベクトルベースの図面を作成し、PDFファイルとしてエクスポートできるように設計されたベクトルグラフィックライブラリです。 ドキュメント作成に特化した従来のPDFライブラリとは異なり、VectSharpはベクターグラフィックスの扱いに特化しているため、科学的な視覚化、チャート、テクニカルイラストなど、高精度の描画を必要とするアプリケーションに特に適しています。
このライブラリは、開発者がすべての要素を正確なX,Y座標で配置する座標ベースのAPIを通してPDF生成にアプローチします:
- 科学的フォーカス:主にデータの可視化、プロット、図の作成のために設計されています。
- 座標ベースの描画:すべての要素は、左上の原点からのポイントを使用した明示的な位置決めを必要とします。
- グラフィックスファーストパラダイム:ビジネス文書ではなく、図やプロットを作成する科学者のために構築されています。
- オープンソース:LGPLライセンスでリリースされており、商用ライセンスなしでカスタマイズが可能です。
VectSharpの制限事項
VectSharpの専門的な焦点は、一般的なドキュメント生成のための制約を導入しています:
- HTMLサポートなし:HTMLやCSSをPDFに変換できません-すべてのコンテンツについて、手動でのベクトル描画が必要です。
- CSSスタイリングは使用しないでください:すべてのスタイリングはプログラムで実装されなければなりません。
- JavaScriptの実行はできません:動的なウェブコンテンツをレンダリングできない
- 自動テキストレイアウトなし: テキストの折り返し、ページネーション、フローレイアウトはありません。
- 手動ページ管理: 各ページは明示的に作成・管理されなければなりません。
IronPDFの理解
IronPDFはドキュメントにフォーカスしたアプローチをとり、PDF生成のためのユニバーサルドキュメントフォーマットとしてHTMLを使用します。 IronPdfは、座標ベースのポジショニングを必要とせず、CSS3とJavaScriptを完全にサポートした最新のChromiumベースのエンジンを使ってHTMLコンテンツをレンダリングします。
主な特徴は以下のとおりです:
- ドキュメントに特化したアーキテクチャ:請求書、レポート、内容の多いドキュメントなど、堅牢なドキュメント生成用に設計されています。
- HTMLファーストのアプローチ:開発者がすでに知っているウェブ技術、HTML、CSS、JavaScriptを使用します。
- Chromiumレンダリングエンジン:最新の CSS3、Flexbox、Grid、および ES6+ JavaScript を完全にサポートします。
- 自動レイアウト: テキストの折り返し、ページネーション、フローレイアウトを自動的に処理します。
- 商用サポート:一貫したアップデート、サポート、エンタープライズレベルの機能
機能比較
以下の表はVectSharpとIronPDFの基本的な違いを示しています:
| フィーチャー | ベクトシャープ | IronPDF |
|---|---|---|
| 主な用途 | ベクターグラフィックス | ドキュメントの作成 |
| PDF出力 | はい | はい |
| HTMLのサポート。 | なし | はい |
| ライセンスについて | LGPL (オープンソース) | 商用 |
| 最適な対象 | 科学的視覚化 | 一般的なPDF文書 |
| カスタマイズ。 | グラフィック限定 | 広範なドキュメント関連 |
| CSSサポート | なし | 完全なCSS3 |
| JavaScript(ジャバスクリプト | なし | 完全なES6 |
| 自動レイアウト。 | なし | はい |
| 自動改ページ | なし | はい |
| テキストラッピング。 | マニュアル | 自動翻訳 |
| テーブル | マニュアル図面 | HTML <コード><テーブル><コード></コード |
| PDFをマージする。 | なし | はい |
| PDFを分割する。 | なし | はい |
| ウォーターマーク。 | マニュアル | 内蔵 |
| ヘッダー/フッター | マニュアル1ページあたり | 自動翻訳 |
| パスワード保護 | なし | はい |
| デジタル署名。 | なし | はい |
| ラーニングカーブ | 高(座標) | 低レベル(HTML/CSS) |
| コードの正確さ | 非常に高い | 低レベル |
APIアーキテクチャの違い
VectSharpとIronPdfのアーキテクチャの違いは、それぞれのライブラリがどのようにPDFコンテンツを作成するかを調べるとすぐにわかります。
VectSharpの座標ベースのアプローチ
VectSharpでは、開発者はDocumentとPageオブジェクトを作成し、Graphicsメソッドを使ってすべての要素を明示的な座標で描画する必要があります:
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using VectSharp.SVG;
using System.IO;
class Program
{
static void Main()
{
//ベクトシャープdoesn't directly support HTML to PDF
// It requires manual creation of graphics objects
Document doc = new Document();
Page page = new Page(595, 842); // A4 size
Graphics graphics = page.Graphics;
graphics.FillText(100, 100, "Hello from VectSharp",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
doc.Pages.Add(page);
doc.SaveAsPDF("output.pdf");
}
}// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using VectSharp.SVG;
using System.IO;
class Program
{
static void Main()
{
//ベクトシャープdoesn't directly support HTML to PDF
// It requires manual creation of graphics objects
Document doc = new Document();
Page page = new Page(595, 842); // A4 size
Graphics graphics = page.Graphics;
graphics.FillText(100, 100, "Hello from VectSharp",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
doc.Pages.Add(page);
doc.SaveAsPDF("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comこのアプローチでは、すべてのテキスト要素、図形、図形の座標系、点測定、明示的な位置決めを理解する必要があります。
IronPDFのHTMLベースのアプローチ
IronPDFは使い慣れたHTMLとCSSを使用しており、開発者はすでに知っているウェブ技術を使ってドキュメントを作成することができます:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is HTML content.</p>");
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is HTML content.</p>");
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comChromePdfRendererクラスは、すべてのレイアウト、位置決め、ページ分割を自動的に処理します。 包括的なHTML変換ガイダンスについては、HTML to PDFチュートリアルをご覧ください。
図形とテキストを描く
ビジュアルコンテンツを作成することで、ベクターグラフィックスプログラミングと文書生成のパラダイムの違いが明らかになります。
VectSharp図形描画
VectSharpは、明示的な座標とGraphicsPathオブジェクトを使用して図形を描画するための低レベルグラフィックスプリミティブを提供します:
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;
class Program
{
static void Main()
{
Document doc = new Document();
Page page = new Page(595, 842);
Graphics graphics = page.Graphics;
// Draw rectangle
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));
// Draw circle
GraphicsPath circle = new GraphicsPath();
circle.Arc(400, 100, 50, 0, 2 * Math.PI);
graphics.FillPath(circle, Colour.FromRgb(255, 0, 0));
// Add text
graphics.FillText(50, 200, "VectSharp Graphics",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20));
doc.Pages.Add(page);
doc.SaveAsPDF("shapes.pdf");
}
}// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;
class Program
{
static void Main()
{
Document doc = new Document();
Page page = new Page(595, 842);
Graphics graphics = page.Graphics;
// Draw rectangle
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));
// Draw circle
GraphicsPath circle = new GraphicsPath();
circle.Arc(400, 100, 50, 0, 2 * Math.PI);
graphics.FillPath(circle, Colour.FromRgb(255, 0, 0));
// Add text
graphics.FillText(50, 200, "VectSharp Graphics",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20));
doc.Pages.Add(page);
doc.SaveAsPDF("shapes.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comこのコードは、各要素が正確なピクセル座標を使用して配置され、色はプログラムによって作成され、円のような形状は円弧定義でGraphicsPathオブジェクトを構築する必要があるなど、精密なベクトルグラフィックスにおけるVectSharpの強みを示しています。
IronPDFのHTML/CSSシェイプ
IronPdfは標準的なHTMLとCSSを使用して、同様の視覚的結果を達成します:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<div style='width: 200px; height: 100px; background-color: blue; margin: 50px;'></div>
<div style='width: 100px; height: 100px; background-color: red;
border-radius: 50%; margin-left: 350px; margin-top: -50px;'></div>
<h2 style='margin-left: 50px;'>IronPDF Graphics</h2>
";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("shapes.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<div style='width: 200px; height: 100px; background-color: blue; margin: 50px;'></div>
<div style='width: 100px; height: 100px; background-color: red;
border-radius: 50%; margin-left: 350px; margin-top: -50px;'></div>
<h2 style='margin-left: 50px;'>IronPDF Graphics</h2>
";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("shapes.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comborder-radius: 50% のようなCSSプロパティは円を作成し、標準的なHTML/CSSポジショニングはレイアウトを処理します。 複雑なベクターグラフィックスのために、IronPdfはインラインSVG要素をHTMLで直接サポートします。
複数ページのドキュメント作成
複数のページを持つドキュメントを作成することで、各ライブラリがページ分割をどのように処理するかを示します。
VectSharpマニュアルページ管理
VectSharpでは、各ページを明示的に作成・管理する必要があります:
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;
class Program
{
static void Main()
{
Document doc = new Document();
// Page 1
Page page1 = new Page(595, 842);
Graphics g1 = page1.Graphics;
g1.FillText(50, 50, "Page 1",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
g1.FillText(50, 100, "First page content",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
doc.Pages.Add(page1);
// Page 2
Page page2 = new Page(595, 842);
Graphics g2 = page2.Graphics;
g2.FillText(50, 50, "Page 2",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
g2.FillText(50, 100, "Second page content",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
doc.Pages.Add(page2);
doc.SaveAsPDF("multipage.pdf");
}
}// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;
class Program
{
static void Main()
{
Document doc = new Document();
// Page 1
Page page1 = new Page(595, 842);
Graphics g1 = page1.Graphics;
g1.FillText(50, 50, "Page 1",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
g1.FillText(50, 100, "First page content",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
doc.Pages.Add(page1);
// Page 2
Page page2 = new Page(595, 842);
Graphics g2 = page2.Graphics;
g2.FillText(50, 50, "Page 2",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
g2.FillText(50, 100, "Second page content",
new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
doc.Pages.Add(page2);
doc.SaveAsPDF("multipage.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com各ページには、独自のPageオブジェクト、Graphicsコンテキスト、各テキスト要素に対する個別のFillText呼び出しが必要です。 コードの冗長性は、ページ数とコンテンツの複雑さに応じて直線的に増加します。
IronPDF自動ページネーション
IronPdfはCSSの改ページルールを使って自動的にページ分割を行います:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Page 1</h1>
<p>First page content</p>
<div style='page-break-after: always;'></div>
<h1>Page 2</h1>
<p>Second page content</p>
";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("multipage.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Page 1</h1>
<p>First page content</p>
<div style='page-break-after: always;'></div>
<h1>Page 2</h1>
<p>Second page content</p>
";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("multipage.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comCSSのpage-break-after: alwaysディレクティブは、Chromiumレンダラーに新しいページを作成するように指示します。 IronPDFはまた、コンテンツがページの境界を超えた場合に自動改ページをサポートします。
APIマッピングリファレンス
VectSharpからIronPdfへの移行を検討しているチームは、このマッピングがコンセプトの等価性を理解するのに役立つと思われます:
| ベクトシャープ | IronPDF | ノート |
|---|---|---|
| <コード>ドキュメント</コード | <コード>ChromePdfRenderer</コード | レンダラー・インスタンスの作成 |
| <コード>ページ</コード | 自動翻訳 | HTMLから作成されたページ |
| <コード>グラフィックス</コード | HTML/CSS | 宣言的マークアップ |
| <コード>graphics.FillRectangle()</コード></コード | <div> の background-color CSS | HTMLボックス |
| <コード>graphics.StrokeRectangle()</コード | <div>上のCSS border。 | 国境 |
| <コード>graphics.FillText()</コード | HTMLテキスト要素 | <p>、<h1>、<span>。 |
| <コード>graphics.StrokePath()</コード | SVGまたはCSSボーダー | ベクターパス |
| <コード>GraphicsPath</コード | SVG <path>要素 | 複雑な形状 |
| <コード>Colour.FromRgb()</コード | CSSカラー値 | rgb()、#hex、名前付きカラー |
フォント / フォントファミリ | CSS <コード>font-family</コード | 対応ウェブフォント |
| <コード>doc.SaveAsPDF()</コード | <コード>pdf.SaveAs()</コード | ファイルに保存 |
| 手動ページサイジング | <コード>RenderingOptions.PaperSize</コード | またはCSS @pageルール |
チームがVectSharpからIronPDFへの移行を検討するとき
VectSharpの代替としてIronPDFを評価するよう開発チームに促すシナリオはいくつかあります:
ドキュメント生成の要件
VectSharpは科学的な視覚化には優れていますが、一般的な文書作成には実用的ではありません。 請求書発行システム、レポート作成ツール、コンテンツ管理プラットフォームを構築しているチームは、手作業ですべてのテキスト要素や図形を配置することがメンテナンスの負担になり、HTMLベースのアプローチでは完全に回避できることに気づきます。
HTML コンテンツの統合
既存のHTMLテンプレート、電子メールコンテンツ、ウェブページをPDFに変換する必要があるアプリケーションは、VectSharpを使用できません。このライブラリにはHTMLの解析やレンダリング機能がないため、コンテンツがHTMLとして生成されるワークフローには不向きです。
開発速度について
VectSharpの座標ベースのAPIは、同等のIronPDF実装よりもかなり多くのコードを必要とします。 5行のHTMLで構成されるシンプルな文書でも、50行以上のVectSharpの描画コードが必要な場合があります。
最新のウェブ技術サポート
VectSharpは、CSS3レイアウト(Flexbox、Grid)のレンダリング、JavaScriptの実行、モダンなWebフォントのサポートはできません。 現代のウェブデザインに携わるチームは、手作業でレイアウトを再現することが現実的でないことに気づきます。
PDFの機能要件
VectSharpは、ベクターグラフィックスによるPDF作成のみに焦点を当てています。 PDFの操作(マージ、分割)、電子署名、パスワード保護、自動ヘッダー/フッターを必要とするチームは、ライブラリを追加するか、IronPDFのようなこれらの機能をネイティブで提供する代替ツールを検討する必要があります。
VectSharp独自の強み
VectSharpは、特定のシナリオにおける利点を維持します:
科学的な可視化の精度
科学的な図、技術的な図、数学的なプロットを生成するアプリケーションでは、VectSharpの座標ベースのアプローチは、HTML/CSSの位置決めでは必ずしも一致しないピクセルパーフェクトな制御を提供します。
オープンソースライセンス
LGPLの下でリリースされたVectSharpは、商用ライセンス費用なしで統合することができます。これは、オープンソースプロジェクトやライセンスポリシーが厳しい組織にとって重要な考慮事項です。
軽量な依存関係
VectSharpはIronPDFのChromiumベースのレンダリングエンジンに比べ、依存関係が最小限であるため、リソースに制約のあるデプロイ環境に適している可能性があります。
IronPDFの追加機能
基本的なPDF生成にとどまらず、IronPDFはVectSharpが提供できないドキュメント操作機能を提供します:
- PDFのマージ:複数のドキュメントを1つのファイルにまとめる
- ドキュメントを分割する: ページ範囲を別々のPDFに抽出します。
- デジタル署名:文書の信頼性のために暗号署名を適用する
- 透かし:テキストまたは画像の透かしを追加する
- PDF/A コンプライアンス:アーカイブ標準ドキュメントの生成
- フォーム入力:プログラムでPDFフォームフィールドに入力する
- ヘッダーとフッター:自動ページ番号付けとブランディング
- URL to PDF:完全なJavaScript実行でライブWebページを変換
.NETの互換性と将来の準備
どちらのライブラリも、現在の.NET実装をサポートしています。 IronPDFは定期的なアップデートでアクティブな開発を維持し、.NET 8、.NET 9、そして2026年に予定されている.NET 10を含む将来のリリースとの互換性を保証します。ライブラリのAPI全体にわたるasync/awaitのサポートは、C# 14で予想される機能を含む最新のC#開発プラクティスに沿っています。
結論
VectSharpとIronPDFはどちらもPDF出力を生成しますが、基本的に異なる目的を果たします。 VectSharpは、科学的な視覚化、技術的なダイアグラム、ピクセルパーフェクトな座標ベースの描画を必要とするアプリケーションのためのベクトルグラフィックライブラリとして優れています。 LGPLライセンスと軽量なフットプリントは、ドキュメントの複雑さよりも正確なグラフィカルコントロールが重要な特定のユースケースにとって魅力的です。
IronPDFはHTMLコンテンツからのドキュメント生成に重点を置き、ウェブコンテンツやテンプレート、動的に生成されたHTMLをPDFに変換する必要のある開発者に合理的なソリューションを提供します。 Chromiumベースのレンダリングにより、最新のウェブデザインを正確に再現し、API設計はシンプルさと標準的なウェブ開発ワークフローとの統合を優先しています。
科学的な可視化と精密なグラフィックスはVectSharpを、ウェブコンテンツからのドキュメント生成はIronPDFの強みを生かすことができます。 現在VectSharpを使用しているが、ドキュメント生成の複雑さに悩んでいるチームにとって、IronPdfを評価することで、コードを大幅に削減し、保守性を向上させる機会が見つかるかもしれません。
その他の実装ガイダンスについては、IronPDFドキュメントやチュートリアルを参照してください。