IRONSOFTWAREHOME
PDF ツール

MacでPDFを編集する方法

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年6月28日

PDF の生成および操作機能を必要とする最新の .NET アプリケーションを開発する場合、適切なライブラリを選択すると、プロジェクトの成功に大きな影響を与える可能性があります。 .NET エコシステムにおける 2 つの主要なオプションはIronPDFとPDFSharpCoreであり、それぞれ PDF 処理に対して異なるアプローチを提供します。 この包括的な比較は、特定の要件、予算、および技術的なニーズに基づいて、情報に基づいた決定を下すのに役立ちます。

クイック比較の概要

技術的な詳細に入る前に、IronPDF と PDFシャープコア の主な違いをまとめた包括的な比較表を以下に示します。

製品比較の概要
.NET PDF 処理におけるIronPDFと PDFシャープコア の比較
カテゴリ特徴/側面IronPDFPDFSharpCore主な利点
コアアーキテクチャデザイン哲学Chromeベースのレンダリング、直感的なAPI軽量な手動PDF構築IronPDF: より速い開発
APIの複雑さRenderHtmlAsPdf()のような単純なメソッド。XGraphics による手動描画IronPDF:よりシンプルなAPI
学習曲線通常1~2日通常3~5日IronPDF: より迅速な導入
プラットフォームサポートクロスプラットフォームネイティブサポート、追加パッケージなし完全なクロスプラットフォームサポート両方: 最新の展開
.NETバージョン.NET 10、9、8、7、6、5、Core 3.1 以上、Framework 4.6.2 以上.NET 6+、.NET Standard 2.0IronPDF: より幅広い互換性
オペレーティングシステムWindows、Linux、macOS、Docker、Azure、AWSWindows, Linux, macOSIronPDF: クラウド最適化
HTMLからPDFへレンダリングエンジンフルChromeV8エンジンネイティブHTMLサポートなしIronPDF: HTML機能
CSS3/HTML5 サポート完全なサポートサードパーティのライブラリが必要IronPDF: 最新のWeb標準
JavaScriptの実行完全なJavaScriptサポート製品の更新とサポートオプション:IronPDF: 動的コンテンツ
主な特徴テキスト抽出組み込みのExtractAllText()です。限定的なサポートIronPDF: 優れた抽出
透かし入りHTML/CSSベースの完全なスタイル手書きの描画が必要IronPDF: 豊富な透かし
デジタル署名統合された視覚的シグネチャNot supportedIronPDF: エンタープライズセキュリティ
暗号化AES-256、カスタムハンドラー基本的な暗号化サポートIronPDF: 高度なセキュリティ
ヘッダー/フッターHTMLベースの動的コンテンツ手動位置決めIronPDF: 動的ヘッダー
パフォーマンスHTMLレンダリング速度通常 0.8 ~ 2 秒 (Chrome エンジン)製品の更新とサポートオプション:IronPDF: HTMLレンダリング
大規模ドキュメント処理スケールに最適化メモリ効率が良いPDFSharpCore: メモリ不足
スレッドサポートネイティブの async/await、並列処理スレッドセーフな操作IronPDF: 優れたスケーラビリティ
開発者としての経験ドキュメント豊富なチュートリアル、APIドキュメント、ビデオ基本的なドキュメントIronPDF: より良いリソース
コード例すぐに実行できる100以上のサンプルコミュニティの例IronPDF: 豊富なサンプル
インテリセンスサポート完全なIntelliSense、XMLドキュメント標準のインテリセンス両方: IDE統合
Licensing & Pricingライセンスの種類商業用、永久MITライセンス(無料)PDFSharpCore: 無料
入場料Lite:$999 (1開発者、1プロジェクト)無料PDFSharpCore: ゼロコスト
サポート24時間365日のエンジニアリングサポートが含まれていますコミュニティサポートのみIronPDF: プロフェッショナルサポート
最適な対象使用例ウェブアプリ、レポート、エンタープライズシンプルなPDF、予算プロジェクト文脈依存

注 PDFSharpCoreは基本的なPDF作成に適したオープンソースライブラリですが、IronPDFはHTMLレンダリングやエンタープライズサポートを含む包括的な機能を提供します。選択はプロジェクトの複雑さと予算の制約に依存します。

IronPDFと PDFシャープコア の紹介

IronPDFとは何ですか?

IronPDFは、開発者が PDF を簡単に生成、編集、操作できるように設計された包括的な商用 .NET ライブラリです。 Chrome ベースのレンダリング エンジン上に構築されており、HTML、CSS、JavaScript コンテンツをピクセルパーフェクトな PDF に変換するのに優れています。 このライブラリは、 HTML から PDF への変換、デジタル署名、透かし、 PDF 暗号化、フォーム管理などの広範な機能セットを提供します。

IronPDF は、.NET 10、9、8、7、6、5、Core 3.1+、Framework 4.6.2+ などの最新の .NET バージョンをサポートしており、新しいアプリケーションと従来のアプリケーションの両方に幅広く使用できます。 クラウドに最適化されたアーキテクチャにより、 Azure 、 AWS 、 Docker環境へのシームレスな展開が保証されます。

PDFSharpCoreとは何ですか?

PDFSharpCoreは、元のPDFSharpライブラリ for .NET Core向けポートとして機能するオープンソースライブラリです。 MIT ライセンスの下でリリースされており、Windows 固有のライブラリに依存せずにプログラムによる PDF 作成と基本的な操作に重点を置いています。 そのため、Linux、macOS、Windows で実行されるクロスプラットフォーム プロジェクトに最適です。

PDFSharpCore はネイティブの HTML から PDF への変換を提供しませんが、描画 API を通じて PDF ドキュメントの作成を正確に制御できます。 開発者は、座標ベースの描画コマンドを使用してテキスト、画像、グラフィックを配置することで、PDF ドキュメントを手動で作成できます。

インストールとセットアップ

IronPDFのインストール

プロジェクトでIronPDFの使用を開始するには、NuGet パッケージ マネージャーを使用して簡単にインストールできます。 次の手順に従います。

  1. Visual Studioでプロジェクトを開きます。
  2. [ツール] > [NuGet パッケージ マネージャー] > **[ソリューションの NuGet パッケージの管理]**に移動します。
  3. NuGetマネージャーでIronPDFを検索します。
  4. プロジェクトを選択し、 **"インストール"**をクリックしてIronPDFをプロジェクトに追加します。

IronPDFとPDFSharpCoreの比較: 図1 - NuGetパッケージマネージャ経由でのIronPDFのインストール Visual StudioのNuGetパッケージマネージャーインターフェースを通じてIronPDFをインストールする

あるいは、パッケージ マネージャー コンソールを使用して次のコマンドでIronPDFをインストールすることもできます。

PM > Install-Package IronPdf

PDFSharpCoreのインストール

NuGet を使用して PDFシャープコア をインストールするには、次の手順に従います。

  1. Visual Studio プロジェクトが開いていることを確認します。
  2. [ツール] > [NuGet パッケージ マネージャー] > **[ソリューションの NuGet パッケージの管理]**に移動します。
  3. NuGet パッケージ マネージャーで、 PDFSharpCoreを検索します。
  4. プロジェクトを選択し、 **"インストール"**をクリックして PDFシャープコア を組み込みます。

IronPDFとPDFSharpCoreの比較: 図2 - PDFSharpCoreをNuGetでインストール NuGet パッケージ マネージャーによる PDFシャープコア のインストール

パッケージ マネージャー コンソールを好む開発者の場合、次のコマンドで PDFシャープコア をインストールできます。

PM > Install-Package PdfSharpCore

PDFファイルの作成: IronPDFとPDFSharpCore

IronPDF: 最新の HTML ベースのアプローチ

IronPDF は、開発者がすでに知っている Web テクノロジーを活用して PDF 作成に革命をもたらします。 Chrome ベースのレンダリング エンジンにより、HTML、CSS、JavaScript が最新のブラウザで表示されるのとまったく同じようにレンダリングされます。

高度な機能を備えた HTML 文字列を PDF に変換

IronPDF のHTML から PDF への変換機能は、単純なテキスト レンダリングをはるかに超えています。 その威力を示す強化された例を以下に示します。

using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main(string[] args)
    {
        // Apply your license key (required for production)
        License.LicenseKey = "Your-License-Key";

        // Create renderer with optimized settings
        var renderer = new ChromePdfRenderer()
        {
            RenderingOptions = new ChromePdfRenderOptions()
            {
                // Set margins for professional appearance
                MarginTop = 25,
                MarginBottom = 25,
                MarginLeft = 20,
                MarginRight = 20,
                
                // Enable JavaScript execution for dynamic content
                EnableJavaScript = true,
                
                // Wait for AJAX/animations to complete
                RenderDelay = 500,
                
                // Set paper orientation and size
                PaperOrientation = PdfPaperOrientation.Portrait,
                PaperSize = PdfPaperSize.A4,
                
                // Enable printing of background colors and images
                PrintHtmlBackgrounds = true
            }
        };

        // HTML with Bootstrap styling and charts
        string htmlContent = @"
            <!DOCTYPE html>
            <html>
            <head>
                <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css' rel='stylesheet'>
                <script src='https://cdn.jsdelivr.net/npm/chart.js'></script>
                <style>
                    body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
                    .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; }
                    .chart-container { width: 100%; height: 300px; margin: 20px 0; }
                </style>
            </head>
            <body>
                <div class='header text-center'>
                    <h1>2024 Sales Performance Report</h1>
                    <p class='lead'>Comprehensive Analysis & Insights</p>
                </div>
                
                <div class='container mt-4'>
                    <div class='row'>
                        <div class='col-md-6'>
                            <div class='card'>
                                <div class='card-body'>
                                    <h5 class='card-title'>Q1 Performance Metrics</h5>
                                    <table class='table table-striped'>
                                        <thead>
                                            <tr>
                                                <th>Month</th>
                                                <th>Revenue</th>
                                                <th>Growth</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <tr>
                                                <td>January</td>
                                                <td>$50,000</td>
                                                <td><span class='badge bg-success'>+12%</span></td>
                                            </tr>
                                            <tr>
                                                <td>February</td>
                                                <td>$55,000</td>
                                                <td><span class='badge bg-success'>+10%</span></td>
                                            </tr>
                                            <tr>
                                                <td>March</td>
                                                <td>$60,000</td>
                                                <td><span class='badge bg-success'>+9%</span></td>
                                            </tr>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </div>
                        <div class='col-md-6'>
                            <div class='card'>
                                <div class='card-body'>
                                    <h5 class='card-title'>Revenue Trend</h5>
                                    <canvas id='revenueChart'></canvas>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <div class='alert alert-info mt-4'>
                        <strong>Key Insight:</strong> Q1 showed consistent growth across all months, 
                        with total revenue reaching $165,000, representing a 31% increase YoY.
                    </div>
                </div>
                
                <script>
                    // Create an interactive chart
                    const ctx = document.getElementById('revenueChart').getContext('2d');
                    new Chart(ctx, {
                        type: 'line',
                        data: {
                            labels: ['January', 'February', 'March'],
                            datasets: [{
                                label: 'Revenue',
                                data: [50000, 55000, 60000],
                                borderColor: '#667eea',
                                backgroundColor: 'rgba(102, 126, 234, 0.1)',
                                tension: 0.4
                            }]
                        },
                        options: {
                            responsive: true,
                            maintainAspectRatio: false
                        }
                    });
                </script>
            </body>
            </html>";

        // Render the HTML to PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Add metadata for better document management
        pdf.MetaData.Author = "Sales Department";
        pdf.MetaData.Title = "Q1 2024 Sales Report";
        pdf.MetaData.Subject = "Quarterly Performance Analysis";
        pdf.MetaData.Keywords = "sales, performance, Q1, 2024";
        pdf.MetaData.CreationDate = DateTime.Now;

        // Save the PDF
        pdf.SaveAs("sales-report-q1-2024.pdf");
        Console.WriteLine("Professional sales report generated successfully!");
    }
}

この例では、IronPDF のいくつかの高度な機能を紹介します。

  • **Bootstrap 統合:**人気の CSS フレームワークを活用してプロフェッショナルなスタイルを実現します
  • JavaScriptチャート: PDF で動的な Chart.js の視覚化をレンダリングします -**レスポンシブデザイン:**レスポンシブレイアウトをインテリジェントに処理します -**メタデータ管理:**ドキュメント管理システムに検索可能なメタデータを追加します -**レンダリング遅延:**レンダリング前にJavaScriptコンテンツが完全に読み込まれるようにします

ChromePdfRendererクラスはレンダリングプロセスに対する広範囲なコントロールを提供します。 主なオプションは次のとおりです。

  • EnableJavaScript: レンダリング前にJavaScriptコードを実行します。
  • RenderDelay: 非同期コンテンツのロードを待機します。
  • PrintHtmlBackgrounds: バックグラウンドカラーと画像を保持します。
  • PaperOrientation and PaperSize: ページレイアウトを制御します。
  • プロフェッショナルな文書の外観を実現する余白設定

HTMLファイルとURLの変換

IronPDF は、既存の HTML ファイルやライブ Web ページの変換にも優れています。

using IronPdf;

class Program
{
    static async Task Main(string[] args)
    {
        License.LicenseKey = "Your-License-Key";
        
        var renderer = new ChromePdfRenderer();
        
        // Convert a local HTML file with external resources
        var filePdf = renderer.RenderHtmlFileAsPdf(@"C:\Reports\template.html");
        filePdf.SaveAs("from-file.pdf");
        
        // Convert a URL with authentication
        renderer.LoginCredentials = new ChromeHttpLoginCredentials()
        {
            Username = "user@example.com",
            Password = "secure-password"
        };
        
        // Render a password-protected page
        var urlPdf = await renderer.RenderUrlAsPdfAsync("https://secure.example.com/reports");
        urlPdf.SaveAs("secure-report.pdf");
    }
}

PDFSharpCore: 手動ドキュメント構築

PDFSharpCore は根本的に異なるアプローチを採用しており、開発者は描画コマンドを使用して PDF ドキュメントを手動で構築する必要があります。 これにより正確な制御が可能になりますが、複雑なレイアウトの場合は大幅に多くのコードが必要になります。

using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
using System;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        var document = new PdfDocument();
        document.Info.Title = "Sales Report Q1 2024";
        document.Info.Author = "Sales Department";
        
        // Add a page
        var page = document.AddPage();
        page.Size = PdfSharpCore.PageSize.A4;
        
        // Create graphics object for drawing
        var gfx = XGraphics.FromPdfPage(page);
        
        // Define fonts
        var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
        var headingFont = new XFont("Arial", 14, XFontStyle.Bold);
        var normalFont = new XFont("Arial", 11, XFontStyle.Regular);
        
        // Draw title with gradient-like effect (manual implementation)
        var titleBrush = new XLinearGradientBrush(
            new XPoint(0, 0), 
            new XPoint(page.Width, 0),
            XColors.DarkBlue, 
            XColors.Purple
        );
        gfx.DrawRectangle(titleBrush, 0, 0, page.Width, 80);
        gfx.DrawString("2024 Sales Performance Report", 
            titleFont, XBrushes.White,
            new XRect(0, 20, page.Width, 40),
            XStringFormats.TopCenter);
        
        // Draw table manually
        double yPosition = 120;
        double margin = 50;
        double columnWidth = (page.Width - 2 * margin) / 3;
        
        // Table header
        gfx.DrawRectangle(XBrushes.LightGray, margin, yPosition, page.Width - 2 * margin, 25);
        gfx.DrawString("Month", headingFont, XBrushes.Black, 
            new XRect(margin, yPosition, columnWidth, 25), 
            XStringFormats.Center);
        gfx.DrawString("Revenue", headingFont, XBrushes.Black, 
            new XRect(margin + columnWidth, yPosition, columnWidth, 25), 
            XStringFormats.Center);
        gfx.DrawString("Growth", headingFont, XBrushes.Black, 
            new XRect(margin + 2 * columnWidth, yPosition, columnWidth, 25), 
            XStringFormats.Center);
        
        // Table data
        string[,] data = {
            { "January", "$50,000", "+12%" },
            { "February", "$55,000", "+10%" },
            { "March", "$60,000", "+9%" }
        };
        
        yPosition += 25;
        for (int i = 0; i < 3; i++)
        {
            // Alternate row colors
            if (i % 2 == 0)
            {
                gfx.DrawRectangle(XBrushes.WhiteSmoke, margin, yPosition, page.Width - 2 * margin, 20);
            }
            
            for (int j = 0; j < 3; j++)
            {
                gfx.DrawString(data[i, j], normalFont, XBrushes.Black,
                    new XRect(margin + j * columnWidth, yPosition, columnWidth, 20),
                    XStringFormats.Center);
            }
            yPosition += 20;
        }
        
        // Draw a simple line chart (very basic implementation)
        yPosition += 40;
        gfx.DrawString("Revenue Trend", headingFont, XBrushes.Black,
            new XRect(margin, yPosition, page.Width - 2 * margin, 25),
            XStringFormats.TopLeft);
        
        // Chart area
        yPosition += 30;
        double chartHeight = 150;
        double chartWidth = page.Width - 2 * margin;
        
        // Draw axes
        gfx.DrawLine(XPens.Black, margin, yPosition + chartHeight, margin + chartWidth, yPosition + chartHeight);
        gfx.DrawLine(XPens.Black, margin, yPosition, margin, yPosition + chartHeight);
        
        // Plot points (simplified)
        double[] revenues = { 50000, 55000, 60000 };
        double maxRevenue = 65000;
        double xStep = chartWidth / 3;
        
        for (int i = 0; i < revenues.Length; i++)
        {
            double x = margin + (i + 0.5) * xStep;
            double y = yPosition + chartHeight - (revenues[i] / maxRevenue * chartHeight);
            
            // Draw point
            gfx.DrawEllipse(XBrushes.Blue, x - 3, y - 3, 6, 6);
            
            // Draw connecting lines
            if (i > 0)
            {
                double prevX = margin + (i - 0.5) * xStep;
                double prevY = yPosition + chartHeight - (revenues[i - 1] / maxRevenue * chartHeight);
                gfx.DrawLine(new XPen(XColors.Blue, 2), prevX, prevY, x, y);
            }
            
            // Labels
            gfx.DrawString($"${revenues[i]:N0}", normalFont, XBrushes.Black,
                new XRect(x - 30, y - 20, 60, 15),
                XStringFormats.TopCenter);
        }
        
        // Save the document
        document.Save("pdfsharp-sales-report.pdf");
        Console.WriteLine("PDF created with PDFSharpCore");
    }
}

ご覧のとおり、PDFSharpCore を使用して中程度に複雑なドキュメントを作成する場合でも、次のものが必要です。

  • すべての要素を手動で配置
  • レイアウトのための複雑な計算
  • HTML または CSS の組み込みサポートはありません
  • チャートとグラフの手動実装
  • 同じ結果を得るのにコードが大幅に増える

PDFシャープコア を使用した HTML から PDF への変換

PDFSharpCore は HTML から PDF への変換をネイティブにサポートしていないため、開発者はサードパーティのライブラリを使用する必要があります。 一般的な選択肢は、PDFSharpCore と HtmlRenderer を組み合わせることです。

using PdfSharpCore.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

var document = new PdfDocument();
string htmlContent = File.ReadAllText("template.html");

// Note: HtmlRenderer has limited CSS support
PdfGenerator.AddPdfPages(document, htmlContent, PdfSharpCore.PageSize.A4);
document.Save("from-html.pdf");

ただし、このアプローチには重大な制限があります。

  • 限定的なCSS3サポート(flexboxなし、CSS Gridなし、現代的なフレームワークのサポートなし)
  • JavaScript 実行なし
  • 最新のWeb機能の扱いが不十分
  • ブラウザと比較してレンダリングが一貫していない

最新の CSS フレームワークのサポート: Bootstrap とその先

Web コンテンツから PDF を生成する必要があるアプリケーションを開発する場合、Bootstrap と最新の CSS フレームワークのサポートが重要です。 ほとんどの Web アプリケーションでは、一貫したデザインのためにこれらのフレームワークが使用されており、これらのインターフェイスを変更せずに PDF に変換できるため、開発時間が大幅に短縮されます。

IronPDF: フルBootstrapおよびCSSフレームワークサポート

  • **Bootstrap 5:**完全なフレックスボックスレイアウトエンジン、CSSグリッド、ユーティリティクラス、すべてのコンポーネントシステム
  • **Bootstrap 4:**フルカードコンポーネント、ナビゲーション、Flexユーティリティ、レスポンシブクラス
  • **Tailwind CSS:**正確なレンダリングを備えたすべてのユーティリティクラス
  • **Foundation:**完全なグリッドシステムとコンポーネントライブラリ -最新の CSS3: Flexbox、CSS グリッド、カスタム プロパティ、アニメーション、トランジション、トランスフォーム

現実世界での証明:IronPDFは、 Bootstrap ホームページとすべての公式テンプレートをピクセル単位の精度でレンダリングします。

コード例: プロジェクト進捗ダッシュボード

using IronPdf;

// Set yourIronPDFlicense key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapProgress = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .project-card {
            transition: all 0.3s ease;
            border-left: 4px solid transparent;
        }
        .project-card.active { border-left-color: #0d6efd; }
        .progress-label { font-size: 0.75rem; font-weight: 600; }
    </style>
</head>
<body>
    <div class='container my-5'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Project Portfolio Status</h1>
                <p class='text-muted mb-0'>Q1 2025 Development Pipeline</p>
            </div>
            <div>
                <span class='badge bg-success fs-6'>8 Active Projects</span>
            </div>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-primary mb-2'>72%</div>
                        <h6 class='text-muted text-uppercase mb-0'>Overall Progress</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-success mb-2'>5</div>
                        <h6 class='text-muted text-uppercase mb-0'>On Track</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-warning mb-2'>2</div>
                        <h6 class='text-muted text-uppercase mb-0'>At Risk</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-danger mb-2'>1</div>
                        <h6 class='text-muted text-uppercase mb-0'>Delayed</h6>
                    </div>
                </div>
            </div>
        </div>

        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Active Projects</h5>
            </div>
            <div class='card-body p-0'>
                <div class='list-group list-group-flush'>
                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>E-Commerce Platform Redesign</h6>
                                <small class='text-muted'>Lead: Sarah Chen | Due: Apr 15, 2025</small>
                            </div>
                            <span class='badge bg-success'>On Track</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-primary'>85%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-primary' role='progressbar' style='width: 85%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Frontend: 90%</span>
                            <span class='badge bg-light text-dark'>Backend: 80%</span>
                            <span class='badge bg-light text-dark'>Testing: 85%</span>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Mobile App Integration</h6>
                                <small class='text-muted'>Lead: Marcus Johnson | Due: Mar 30, 2025</small>
                            </div>
                            <span class='badge bg-success'>On Track</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-success'>92%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-success' role='progressbar' style='width: 92%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>iOS: 95%</span>
                            <span class='badge bg-light text-dark'>Android: 90%</span>
                            <span class='badge bg-light text-dark'>API: 100%</span>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Customer Analytics Dashboard</h6>
                                <small class='text-muted'>Lead: Emily Rodriguez | Due: Apr 22, 2025</small>
                            </div>
                            <span class='badge bg-warning text-dark'>At Risk</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-warning'>58%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-warning' role='progressbar' style='width: 58%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Data Pipeline: 65%</span>
                            <span class='badge bg-light text-dark'>UI: 50%</span>
                            <span class='badge bg-light text-dark'>Reports: 45%</span>
                        </div>
                        <div class='alert alert-warning mt-2 mb-0 py-2'>
                            <small><strong>Issue:</strong> Resource constraints affecting timeline. Review scheduled for next week.</small>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Security Infrastructure Upgrade</h6>
                                <small class='text-muted'>Lead: David Kim | Due: Mar 25, 2025</small>
                            </div>
                            <span class='badge bg-danger'>Delayed</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-danger'>42%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-danger' role='progressbar' style='width: 42%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Authentication: 60%</span>
                            <span class='badge bg-light text-dark'>暗号化: 40%</span>
                            <span class='badge bg-light text-dark'>Audit Logs: 25%</span>
                        </div>
                        <div class='alert alert-danger mt-2 mb-0 py-2'>
                            <small><strong>Critical:</strong> 7 days behind schedule. Additional resources allocated. Daily standup required.</small>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-6'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-white'>
                        <h5 class='mb-0'>Sprint Velocity</h5>
                    </div>
                    <div class='card-body'>
                        <div class='mb-3'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Current Sprint</span>
                                <strong>42 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-success' style='width: 84%'>84% Complete</div>
                            </div>
                        </div>
                        <div class='mb-3'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Previous Sprint</span>
                                <strong>38 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-info' style='width: 100%'>Completed</div>
                            </div>
                        </div>
                        <div class='mb-0'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Average Velocity</span>
                                <strong>40 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-primary' style='width: 100%'>Baseline</div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-white'>
                        <h5 class='mb-0'>Team Capacity</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>Frontend Team</h6>
                                <small class='text-muted'>6 developers</small>
                            </div>
                            <span class='badge bg-success'>92% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>Backend Team</h6>
                                <small class='text-muted'>5 developers</small>
                            </div>
                            <span class='badge bg-success'>88% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>QA Team</h6>
                                <small class='text-muted'>3 testers</small>
                            </div>
                            <span class='badge bg-warning text-dark'>105% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-0'>
                            <div>
                                <h6 class='mb-0'>DevOps Team</h6>
                                <small class='text-muted'>2 engineers</small>
                            </div>
                            <span class='badge bg-danger'>110% Utilized</span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapProgress);
pdf.SaveAs("project-progress.pdf");

出力: Bootstrap 5 のフレックスボックスベースのレイアウト、進行状況バー コンポーネント、バッジ ユーティリティ、レスポンシブ カード システム、アラート コンポーネントを備えたプロフェッショナルなプロジェクト管理 PDF。すべてが完璧な配置、間隔、色の精度でレンダリングされます。

PDFSharpCore: ネイティブ HTML サポートなし

PDFSharpCore にはネイティブの HTML レンダリング エンジンがありません。 このライブラリは、低レベルの PDF 操作と描画操作専用に設計されています。

  • Bootstrap をサポートしていません: HTML/CSS フレームワークをまったく処理できません -フレックスボックスやCSSグリッドはありません。CSSレンダリング機能は一切ありません。 -**手動構築のみ:**座標ベースの API を使用してテキスト、図形、画像を描画する必要があります -**必要な外部ツール:**サードパーティの HTML レンダラーまたは変換サービスを使用する必要があります

HtmlRenderer統合(サードパーティ)は限られた基本的なHTMLサポートのみを提供し、厳しい制限があり、flexbox、CSS Grid、現代的なフレームワークのサポートはありません。

**開発への影響:**チームは HTML ベースのワークフローを完全に放棄するか、複数のツール (PDFSharpCore + 外部 HTML レンダラー) を統合する必要があり、複雑さ、メンテナンスの負担、およびライブラリ バージョン間の互換性の問題が発生する可能性があります。

Bootstrapフレームワークの互換性およびCSS3レンダリング機能の詳細については、Bootstrap & Flexbox CSSガイドをご覧ください。

高度な機能比較

テキスト抽出

最も一般的な PDF 操作の 1 つは、インデックス作成、分析、または変換のためにテキストを抽出することです。 両方のライブラリがこのタスクを処理する方法は次のとおりです。

IronPDFテキスト抽出

IronPDF は、シンプルな API で強力なテキスト抽出機能を提供します。

using IronPdf;

// Extract all text from a PDF
var pdf = PdfDocument.FromFile("report.pdf");
string allText = pdf.ExtractAllText();

// Extract text from specific pages
for (int i = 0; i < pdf.PageCount; i++)
{
    string pageText = pdf.ExtractTextFromPage(i);
    Console.WriteLine($"Page {i + 1}: {pageText.Substring(0, Math.Min(100, pageText.Length))}...");
}

// Extract text from a specific region
var pageIndex = 0;
var region = new Rectangle(50, 50, 200, 100); // x, y, width, height
string regionText = pdf.ExtractTextFromPage(pageIndex, region);

PDFシャープコア テキスト抽出

PDFSharpCore にはネイティブ テキスト抽出機能が制限されています。 比較記事でも指摘されているように、断片的または不完全な結果が生成されることがよくあります。

// PDFシャープコア doesn't have reliable text extraction
// This is a significant limitation for many use cases

透かし

PDF に透かしを入れることは、ブランディングとドキュメントのセキュリティにとって不可欠です。

IronPDF透かし

using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// HTML-based watermark with full CSS support
string watermarkHtml = @"
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.3);
        transform: rotate(-45deg);
        text-align: center;
        font-weight: bold;
    '>
        CONFIDENTIAL
    </div>";

pdf.ApplyWatermark(watermarkHtml, 50, VerticalAlignment.Middle, HorizontalAlignment.Center);

// Image watermark
pdf.ApplyWatermark("logo.png", 30, VerticalAlignment.Bottom, HorizontalAlignment.Right);

pdf.SaveAs("watermarked.pdf");

PDFシャープコア 透かし

using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
using PdfSharpCore.Pdf.IO;

var document = PdfReader.Open("document.pdf", PdfDocumentOpenMode.Modify);

foreach (var page in document.Pages)
{
    var gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append);
    
    // Create watermark font
    var font = new XFont("Arial", 48);
    
    // Calculate rotation
    gfx.TranslateTransform(page.Width / 2, page.Height / 2);
    gfx.RotateTransform(-45);
    
    // Draw watermark
    var size = gfx.MeasureString("CONFIDENTIAL", font);
    gfx.DrawString("CONFIDENTIAL", font, 
        new XSolidBrush(XColor.FromArgb(128, 255, 0, 0)),
        new XRect(-size.Width / 2, -size.Height / 2, size.Width, size.Height),
        XStringFormats.Center);
}

document.Save("watermarked-pdfsharp.pdf");

デジタル署名

デジタル署名により、文書の信頼性と整合性が保証されます。

IronPDFデジタル署名

using IronPdf;
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("contract.pdf");

// Create a signature with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "legal@company.com",
    SigningLocation = "New York, NY",
    SigningReason = "Contract Approval"
};

// Add visual signature
var signatureImage = new PdfSignature("certificate.pfx", "password")
{
    SignatureImage = new PdfSignatureImage("signature.png", 0, 0, 200, 100)
};

// Apply signature to the last page
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");

PDFシャープコア デジタル署名

PDFSharpCore はデジタル署名をネイティブにサポートしていないため、ドキュメントのセキュリティを必要とするビジネス アプリケーションにとっては大きな制限となります。

フォーム処理

インタラクティブなドキュメントでは、 PDF フォームの操作が重要です。

IronPDFフォーム処理

using IronPdf;

// Create a form from HTML
var html = @"
    <form>
        <label>Name: <input type='text' name='fullName' required></label><br>
        <label>Email: <input type='email' name='email' required></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe' value='yes'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option value='basic'>Basic</option>
                <option value='pro'>Professional</option>
                <option value='enterprise'>Enterprise</option>
            </select>
        </label>
    </form>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);

// Fill existing form
var filledPdf = PdfDocument.FromFile("application-form.pdf");
filledPdf.Form.FindFormField("fullName").Value = "John Doe";
filledPdf.Form.FindFormField("email").Value = "john@example.com";
filledPdf.Form.FindFormField("subscribe").Value = "yes";

filledPdf.SaveAs("completed-application.pdf");

パフォーマンスベンチマーク

ここに、典型的な使用パターンに基づくパフォーマンス比較を示します。

HTMLからPDFへのレンダリング

テストケースIronPDFPDFSharpCore(HtmlRenderer付き)
シンプルなHTML(1ページ)高速(Chromeエンジンのオーバーヘッド)些細な出力に対してより早い
CSS3 を使用した複雑な HTML完全なレンダリング、正確な出力頻繁に失敗したり、正しくレンダリングされない
JavaScript チャート完全なJavaScriptの実行サポートされていません
大規模なドキュメントバッチ最適化された非同期/並行処理低いメモリフットプリント
メモリ使用量高い(Chromeエンジン)低い(軽量ライブラリ)

主要なパフォーマンスの洞察

  1. IronPDF の優れた点:
    • 完全なブラウザ互換性を備えた複雑な HTML レンダリング
    • バッチ操作の並列処理
    • さまざまなコンテンツタイプにわたって一貫したパフォーマンス
  1. PDFSharpCore は次の場合に優れたパフォーマンスを発揮します。
    • シンプルなプログラムによるPDF作成
    • メモリフットプリントの低減
    • 基本的なドキュメントの変更

実際のパフォーマンス例

//IronPDF- Batch processing with parallel execution
using IronPdf;
using System.Threading.Tasks;

class BatchProcessor
{
    public static async Task ProcessInvoicesAsync(List<string> htmlInvoices)
    {
        var renderer = new ChromePdfRenderer();
        
        // Process multiple PDFs in parallel
        var tasks = htmlInvoices.Select(async (html, index) =>
        {
            var pdf = await renderer.RenderHtmlAsPdfAsync(html);
            await pdf.SaveAsAsync($"invoice-{index}.pdf");
        });
        
        await Task.WhenAll(tasks);
    }
}
C#

実際の利用例

IronPDFを選ぶとき

IronPDF は次の場合に最適です:

  1. Webアプリケーションの統合
    • 動的なWebコンテンツをPDFに変換する
    • Webダッシュボードからのレポート生成
    • HTMLテンプレートから請求書を作成する

2.エンタープライズドキュメント管理

  • デジタル署名を使用したドキュメントワークフローの実装
  • 機密データ用の安全で暗号化されたPDFの作成
  • 大量の文書をバッチ処理する
  1. SaaSアプリケーション
    • マルチテナントPDF生成
    • Azure/AWS 上のクラウドネイティブ展開
    • 高性能な非同期処理

4.複雑なレポート

  • 図表とグラフ付きの財務諸表
  • リッチメディアを使ったマーケティング資料
  • コードハイライト付きの技術ドキュメント

PDFSharpCoreを選ぶべきタイミング

PDFSharpCoreは次の場合に適しています:

1.予算重視のプロジェクト

  • ライセンス予算のないオープンソースプロジェクト
  • シンプルなPDF生成のニーズ
  • 学術的または個人的なプロジェクト

2.基本的なPDF操作

  • シンプルなテキストベースのPDFの作成
  • 基本的なドキュメントの結合
  • シンプルなグラフィックや図形を追加する

3.軽量アプリケーション

  • メモリ制約のある組み込みシステム
  • シンプルなコマンドラインツール
  • 依存関係が最小限のマイクロサービス

ライセンスと価格

IronPDFライセンス

IronPDFは柔軟なライセンスを提供します(2026年4月時点の価格設定):

  • Lite License: $999(1開発者、1場所、1プロジェクト)
  • Plus License: $1,499(3開発者、3場所、3プロジェクト)
  • Professional License: $2,399(10開発者、10場所、10プロジェクト) -無料トライアル: 30日間の全機能トライアル

追加特典:

  • 永続ライセンス(1回限りの購入)
  • ロイヤリティフリーの再配布が可能
  • 24時間365日のエンジニアリングサポートが含まれています
  • 1年間の無料アップデート
  • Iron Suiteバンドルでさらにお得に

PDFSharpCoreライセンス

PDFSharpCore は MIT ライセンスの下で完全に無料です。

  • ライセンス費用なし
  • 商用利用に制限はありません
  • コミュニティサポートのみ
  • アップデートやバグ修正は保証されない

開発者エクスペリエンス

ドキュメントとリソース

IronPDF は以下を提供します:

-包括的なドキュメント

PDFSharpCore は以下を提供します:

  • 基本的なGitHubドキュメント
  • コミュニティの例
  • 限定的な公式チュートリアル

サポート比較

サポートタイプIronPDFPDFシャープコア
プロフェッショナルサポート24時間/5日込みNone
応答時間24~48時間コミュニティ依存
直接エンジニアリングアクセスはいなし
バグ修正保証はいなし

結論

IronPDF と PDFシャープコア はどちらも .NET PDF エコシステムで重要な役割を果たしますが、対象とするニーズとユースケースは異なります。

次の場合はIronPDFを選択してください:

  • CSS3とJavaScriptを完全にサポートした堅牢なHTMLからPDFへの変換が必要です
  • プロジェクトにはデジタル署名、暗号化、フォーム処理などの高度な機能が必要です
  • エンタープライズまたは商用アプリケーションを構築している
  • 包括的なドキュメントと専門的なサポートを重視します
  • パフォーマンスと信頼性が重要 -クラウド対応の導入オプションが必要

次の場合は PDFシャープコア を選択してください:

  • 予算が限られているプロジェクトやオープンソースプロジェクトに取り組んでいる
  • PDF のニーズはシンプルで、HTML レンダリングは必要ありません
  • PDF 構築よりも手動での制御を好む
  • メモリフットプリントは重要な懸念事項です
  • コミュニティのサポートに満足している

IronPDF の PDF 生成に対する最新のアプローチは、その広範な機能セットと優れたサポートと組み合わされており、ほとんどのプロフェッショナル アプリケーションにとって最適な選択肢となっています。 ライセンス投資は必要ですが、開発時間の節約と信頼性の向上により、商用プロジェクトのコストが正当化されることがよくあります。

違いを体験する準備はできましたか? IronPDF の 30 日間無料トライアルを開始して、PDF 生成ワークフローがどのように変化するかを確認してください。 包括的なドキュメント、応答性の高いサポート、機能豊富な API を備えたIronPDFは、開発者が最小限の労力でプロフェッショナルな PDF を作成できるようにします。

最初のステップ:
arrow pointer
ご注意: PDFSharpCore はそれぞれの所有者の登録商標です。 このサイトは PDFシャープコア と提携、承認、または後援されていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

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

Your trial license will be sent to your email address

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

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

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

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

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から