比較

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

このアプローチでは、すべてのテキスト要素、図形、図形の座標系、点測定、明示的な位置決めを理解する必要があります。

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

ChromePdfRendererクラスは、すべてのレイアウト、位置決め、ページ分割を自動的に処理します。 包括的な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
$vbLabelText   $csharpLabel

このコードは、各要素が正確なピクセル座標を使用して配置され、色はプログラムによって作成され、円のような形状は円弧定義で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.com
$vbLabelText   $csharpLabel

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

各ページには、独自の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.com
$vbLabelText   $csharpLabel

CSSのpage-break-after: alwaysディレクティブは、Chromiumレンダラーに新しいページを作成するように指示します。 IronPDFはまた、コンテンツがページの境界を超えた場合に自動改ページをサポートします。

APIマッピングリファレンス

VectSharpからIronPdfへの移行を検討しているチームは、このマッピングがコンセプトの等価性を理解するのに役立つと思われます:

ベクトシャープIronPDFノート
<コード>ドキュメント</コード<コード>ChromePdfRenderer</コードレンダラー・インスタンスの作成
<コード>ページ</コード自動翻訳HTMLから作成されたページ
<コード>グラフィックス</コードHTML/CSS宣言的マークアップ
<コード>graphics.FillRectangle()</コード></コード<div>background-color CSSHTMLボックス
<コード>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が提供できないドキュメント操作機能を提供します:

.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ドキュメントチュートリアルを参照してください。