IRONPDFの使用

C# でPDFを生成するための7つのライブラリ比較(無料&有料ツール)

C#のPDF生成機能は、レポート作成から請求システムまで、多くの現代的なアプリケーションにとって重要です。 この記事では、PDFファイルをC#を使用して生成するための6つの人気のある方法を探ります。IronPDFのようなコードベースのライブラリや、オンラインAPIおよびツールを紹介します。 ウェブアプリでPDFファイルを動的に生成する必要がある場合や、既存のドキュメントからPDFファイルを作成するだけの場合でも、これらのツールが対応しています。

1. IronPDF

-->

IronPDF は、高品質なHTMLからPDFファイルへの変換を必要とする開発者向けに設計されたプレミアムな.NET PDFライブラリです。 IronPDFは、Chromiumベースのレンダリングエンジンを使用して正確な変換を実現し、HTMLページやウェブベースのレポートをC#でPDFファイルに変換したいウェブアプリケーションに最適な選択肢です。 そのツールは、既存のPDFドキュメントの堅牢な処理で知られ、PDFの編集、結合、または分割の機能を提供します。

IronPDFは、NuGetパッケージマネージャーを通じてC#プロジェクトに簡単に統合され、わずか数行のコードでPDFドキュメントの生成を開始できます。 それは動的なHTMLコンテンツとサーバー生成のPDFファイル出力の両方に対応した多用途ツールです。

主な機能

  • HTMLからPDFへの変換:IronPDFは、JavaScriptの実行や最新のCSSをサポートした複雑なHTMLページを直接PDFに変換することに優れています。 それはChromiumベースのレンダリングエンジンを使用しており、出力がウェブブラウザで見るものと同一に見えることを保証します。
  • PDFの操作: IronPDFを使用すると、既存のPDFドキュメントを簡単に結合、分割、修正できます。
  • 高度なスタイリングオプション: IronPDF は外部スタイルシート、カスタムフォント、JavaScript をサポートしており、洗練されたスタイルの文書を作成することができます。 請求書、レポート、ウェブベースのコンテンツに最適です。
  • セキュリティ機能: IronPDF は、パスワード保護の追加、デジタル署名、および PDF の印刷、コピー、編集などの操作を制限する権限の設定のための機能を提供します。
  • フォーム処理: IronPDFは、開発者がプログラムでPDFフォームを作成、入力、および読み取りできるようにし、PDF形式でのユーザー入力が必要なアプリケーションに適しています。
  • NuGet パッケージ マネージャー: Visual Studio のパッケージ マネージャーコンソールを通じて簡単にインストールおよび管理できます。

コード例

using IronPdf;
class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";
        ChromePdfRenderer renderer = new ChromePdfRenderer(); // Create an instance of ChromePdfRenderer
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); // Render the HTML as a PDF document
        pdf.SaveAs("Generated.pdf"); // Save the PDF to a specified file
    }
}
using IronPdf;
class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";
        ChromePdfRenderer renderer = new ChromePdfRenderer(); // Create an instance of ChromePdfRenderer
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); // Render the HTML as a PDF document
        pdf.SaveAs("Generated.pdf"); // Save the PDF to a specified file
    }
}
Imports IronPdf
Friend Class Program
	Shared Sub Main()
		Dim html As String = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>"
		Dim renderer As New ChromePdfRenderer() ' Create an instance of ChromePdfRenderer
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html) ' Render the HTML as a PDF document
		pdf.SaveAs("Generated.pdf") ' Save the PDF to a specified file
	End Sub
End Class
$vbLabelText   $csharpLabel
  1. Namespace Import: using IronPdf; は、クラスやメソッドにアクセスするためにIronPDFライブラリをインポートします。

  2. HTML文字列: 変数HTMLには、PDFに変換したいHTMLコンテンツが含まれています。

  3. レンダラーインスタンス: new ChromePdfRenderer(); は、HTMLコンテンツをPDF形式にレンダリングするためのメソッドを提供するHtmlToPdfクラスのインスタンスを作成します。

  4. PDF のレンダー: PdfDocument PDF = renderer.RenderHtmlAsPdf(html); は、HTML 文字列を PDF ドキュメントに変換します。

  5. PDFの保存: pdf.SaveAs("Generated.pdf"); は生成されたPDFを指定されたファイルパスに保存します。

長所

  • ウェブコンテンツのための優れたレンダリング品質。
  • フォーム、ハイパーリンク、ブックマークのための強力なサポート。

欠点

  • ライセンス料は、大規模なプロジェクトでは考慮する要素になり得ます。
  • より高度な機能は、より深い学習を必要とする場合があります。

2. iTextSharp

C# PDF生成 7ライブラリ比較(無料および有料ツール):図2

iTextSharpは、PDFファイルの作成と編集に幅広い機能を提供する、実績のある.NET PDFライブラリです。 これは、文書をカスタマイズし、セキュリティを確保する必要がある金融や法務などの業界で広く使用されています。 iTextSharpは、PDFファイルを一から作成し、フォームに入力し、PDFファイルを変更することを可能にし、ドキュメントの内容に広範な制御を提供します。 これは、請求書や契約書のように、正確なレイアウトと動的データを備えたPDFファイルを生成する必要があるエンタープライズアプリケーションに特に役立ちます。

主な機能

  • 完全なPDF作成機能: iTextSharpは、C#でゼロからPDFファイルを簡単に作成でき、開発者はテキスト、画像、テーブル、およびベクターグラフィックスを追加することができます。 ページサイズ、余白、メタデータを定義する機能を含め、ドキュメントのレイアウトを完全に制御することができます。
  • フォーム入力: iTextSharpの大きな強みは、PDFフォーム(AcroForms)を処理できる能力です。 さまざまな入力フィールドを持つフォームを作成し、後でプログラムによってそれらを入力することができます。これは、自動ドキュメント生成のワークフローにおいて非常に便利な機能です。
  • XMLからPDFへの変換: iTextSharpは、XFA(XMLフォームアーキテクチャ)を使用したXMLデータのPDFへの変換を強力にサポートしています。 これは特に、XMLデータを標準のフォームやレポートにフォーマットする必要がある業界で価値があります。
  • PDFセキュリティ: iTextSharpは、文書の信頼性を確保し機密データを保護するために、暗号化、電子署名、透かしの追加などの高度な機能を提供します。
  • テキストの抽出と操作: 既存のPDFからテキストを抽出したり、ドキュメントのコンテンツを再配置したり、ページ要素を操作したりできるため、ドキュメントの後処理や複雑なPDFからの要約レポートの生成に役立ちます。

コード例

using System;
using System.Collections.Generic;
using System.Data.Entity.Core.Mapping;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
using Voodoo;
namespace Helpers
{
    public class PdfGenerator
    {
        public static Byte[] GeneratePdfFromFragment(string htmlFragment)
        {
            var html = string.Format(@"
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment);
          return generate(html);
        }
        public static Byte[] GeneratePdfFromPage(string htmlPage)
        {
            return generate(htmlPage);
        }
        private static Byte[] generate (string html)
        {
            using (var memoryStream = new MemoryStream())
            {
                var pdfDocument = new Document(PageSize.LETTER);
                var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
                pdfDocument.Open();
                using (var fw = new StringReader(html))
                {                    
                    XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
                    pdfDocument.Close();
                    fw.Close();
                }
                return memoryStream.ToArray();
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Data.Entity.Core.Mapping;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
using Voodoo;
namespace Helpers
{
    public class PdfGenerator
    {
        public static Byte[] GeneratePdfFromFragment(string htmlFragment)
        {
            var html = string.Format(@"
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment);
          return generate(html);
        }
        public static Byte[] GeneratePdfFromPage(string htmlPage)
        {
            return generate(htmlPage);
        }
        private static Byte[] generate (string html)
        {
            using (var memoryStream = new MemoryStream())
            {
                var pdfDocument = new Document(PageSize.LETTER);
                var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
                pdfDocument.Open();
                using (var fw = new StringReader(html))
                {                    
                    XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
                    pdfDocument.Close();
                    fw.Close();
                }
                return memoryStream.ToArray();
            }
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Data.Entity.Core.Mapping
Imports System.IO
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml
Imports Voodoo
Namespace Helpers
	Public Class PdfGenerator
		Public Shared Function GeneratePdfFromFragment(ByVal htmlFragment As String) As Byte()
			Dim html = String.Format("
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment)
		  Return generate(html)
		End Function
		Public Shared Function GeneratePdfFromPage(ByVal htmlPage As String) As Byte()
			Return generate(htmlPage)
		End Function
		Private Shared Function generate(ByVal html As String) As Byte()
			Using memoryStream As New MemoryStream()
				Dim pdfDocument = New Document(PageSize.LETTER)
				Dim pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream)
				pdfDocument.Open()
				Using fw = New StringReader(html)
					XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw)
					pdfDocument.Close()
					fw.Close()
				End Using
				Return memoryStream.ToArray()
			End Using
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel
  1. GeneratePdfFromFragment: HTMLフラグメント(部分的なHTMLドキュメントのようなもの)を受け取り、それをベーシックなとテンプレートでラッピングして完全なHTML構造に変換します。 それから、内部のgenerateメソッドを呼び出します。

  2. GeneratePdfFromPage: 完全なHTMLページを受け取り、直接生成メソッドを呼び出します。

    1. generate: このメソッドはHTMLをPDFに変換します。

      • それは、メモリ内に生成されたPDFを保持するためのMemoryStreamを初期化します。

      • それはレターサイズのページを持つiTextSharpのDocumentオブジェクトを作成します。
    • XMLWorkerHelperはHTMLコンテンツを解析し、提供されたStringReaderを使用してPDFドキュメントに書き込みます。

    4.

長所

  • 豊富な機能を備えた高度にカスタマイズ可能です。
  • 充実したドキュメントとコミュニティサポート。

欠点

  • iTextSharp(個人利用は無料ですが、大規模プロジェクトには商用ライセンスが必要)が複雑なCSSやJavaScriptを処理する際に制限があるかもしれません。
  • XMLWorker(ここで使用されているもの)は、HTML/CSSを解析するためのiTextSharpの廃止されたツールです。 iText7(iTextの新しいバージョン)は、より堅牢なHTMLパーサーpdfHTMLを使用しており、現代のウェブ標準に対してより良いサポートを提供する可能性があります。
  • 初心者には学習曲線が急です。

3. PDFsharp

C# PDF生成 7つのライブラリ比較(無料&有料ツール):図3

PDFSharpは、基本的なPDF作成タスクに最適な、軽量でオープンソースの.NET PDFライブラリです。 アプリケーションがテキスト、画像、またはテーブルを追加するような単純な操作のみを必要とする場合、PdfSharpはC#でPDF文書を生成するための使いやすいオプションです。 高度な機能であるHTMLからPDFへの変換は欠けていますが、C#で小規模から中規模のPDFファイルを生成する際のシンプルさが際立っています。

主な機能

  • 基本的なPDF作成: テキストやグラフィックを描画するためのシンプルで使いやすいAPI。 シンプルな文書を作成するのに最適です。
  • ドキュメント操作: 既存のPDFを簡単に結合および修正し、ドキュメント管理に柔軟性を持たせます。
  • 描画とグラフィックサポート: PDFsharpは、PDFページ上に線や長方形、その他のベクターグラフィックを描画するための一連のツールを提供します。 また、PDFに画像を埋め込むこともサポートしています。
  • 無料およびオープンソース:PDFsharpは商用および非商用の使用が完全に無料であり、小規模企業やオープンソースプロジェクトに取り組む開発者にとって魅力的なオプションです。

コード例

using PdfSharp.Pdf;
using PdfSharp.Drawing;
class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PdfSharp";
        // Add a page to the document
        PdfPage page = document.AddPage();
        // Create an XGraphics object to draw on the page
        XGraphics gfx = XGraphics.FromPdfPage(page);
        // Set a font to use for drawing text
        XFont font = new XFont("Verdana", 20, XFontStyle.Bold);
        // Draw the text on the PDF page
        gfx.DrawString("Hello, World!", font, XBrushes.Black, 
            new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
        // Save the document to disk
        document.Save("Generated.pdf");
    }
}
using PdfSharp.Pdf;
using PdfSharp.Drawing;
class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PdfSharp";
        // Add a page to the document
        PdfPage page = document.AddPage();
        // Create an XGraphics object to draw on the page
        XGraphics gfx = XGraphics.FromPdfPage(page);
        // Set a font to use for drawing text
        XFont font = new XFont("Verdana", 20, XFontStyle.Bold);
        // Draw the text on the PDF page
        gfx.DrawString("Hello, World!", font, XBrushes.Black, 
            new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
        // Save the document to disk
        document.Save("Generated.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Friend Class Program
	Shared Sub Main()
		' Create a new PDF document
		Dim document As New PdfDocument()
		document.Info.Title = "Created with PdfSharp"
		' Add a page to the document
		Dim page As PdfPage = document.AddPage()
		' Create an XGraphics object to draw on the page
		Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
		' Set a font to use for drawing text
		Dim font As New XFont("Verdana", 20, XFontStyle.Bold)
		' Draw the text on the PDF page
		gfx.DrawString("Hello, World!", font, XBrushes.Black, New XRect(0, 0, page.Width, page.Height), XStringFormats.Center)
		' Save the document to disk
		document.Save("Generated.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
  • PdfDocument: PDF ドキュメント全体を表します。 ページを追加し、メタデータを設定し、ドキュメントを操作できます。
  • PdfPage: ドキュメント内の単一のページを表します。 新しいページは、AddPage メソッドを使用して追加されます。
  • XGraphics: 特定のページにテキスト、画像、形状を描画するために使用されます。 それは.NETのGDI+に似ています。
  • XFont: テキストレンダリングのためのフォントとスタイルを指定します。 この例では、「Verdana」が太字スタイルで使用されています。
  • DrawString: 指定された文字列をドキュメント内の定義された位置に描画します。

長所

  • ライセンス制限のない無料のオープンソース。
  • シンプルで軽量なため、基本的なPDF生成を簡単に始めることができます。
  • 複雑な機能を必要としないプロジェクトに適しています。

欠点

  • 他のライブラリと比較して機能が制限されている。
  • HTMLからPDFへの変換に対するネイティブサポートがありません。

4. Syncfusion PDFライブラリ

C#でPDFを生成する7つのライブラリ比較(無料&有料ツール):図4

Syncfusion PDF Library は、幅広いアプリケーションでPDFを操作する必要がある企業向けに設計された高性能で包括的なツールです。 これは、さまざまな形式やプラットフォームに対応したライブラリを提供する、より広範なSyncfusionスイートの一部です。 PDFライブラリは、単純なドキュメント作成を超えてフォームの記入、デジタル署名、ドキュメントのセキュリティを含む詳細な操作を可能にする豊富な機能セットのために際立っています。

主な機能

  • 包括的なPDF API: Syncfusion PDFは、複雑なレイアウト、埋め込みフォント、高解像度画像を含む高度にカスタマイズされたPDFを生成することができます。 ページのフォーマットから高度なレイアウトオプションまで、PDF作成のすべての側面にわたって詳細な制御を提供します。
  • フォーム処理: このライブラリは、インタラクティブなPDFフォーム(AcroForms)の作成、記入、およびデータの抽出に優れています。 これは、ユーザー入力用の記入可能なPDFを作成したり、データ入力を自動化したり、記入済みのフォームを処理したりするのに役立ちます。
  • デジタル署名と暗号化: Syncfusionは、PDFドキュメントを暗号化する機能、パスワード保護を追加する機能、デジタル署名を適用する機能を含む堅牢なセキュリティ機能を提供します。 これらの機能は、文書の真正性と安全性が求められる医療や法務サービスなどの業界にとって重要です。コード例
using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Pdf.Grid;
class Program
{
    static void Main()
    {
        //Create a new PDF document.
    PdfDocument document = new PdfDocument();
    //Add a page to the document.
    PdfPage page = document.Pages.Add();
    //Create PDF graphics for the page.
    PdfGraphics graphics = page.Graphics;
    //Set the standard font.
    PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
    //Draw the text.
    graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));
    //Save the document.
    document.Save("Output.pdf");
    //Close the document.
    document.Close(true);
    }
}
using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Pdf.Grid;
class Program
{
    static void Main()
    {
        //Create a new PDF document.
    PdfDocument document = new PdfDocument();
    //Add a page to the document.
    PdfPage page = document.Pages.Add();
    //Create PDF graphics for the page.
    PdfGraphics graphics = page.Graphics;
    //Set the standard font.
    PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
    //Draw the text.
    graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));
    //Save the document.
    document.Save("Output.pdf");
    //Close the document.
    document.Close(true);
    }
}
Imports Syncfusion.Pdf
Imports Syncfusion.Pdf.Parsing
Imports Syncfusion.Pdf.Graphics
Imports Syncfusion.Pdf.Grid
Friend Class Program
	Shared Sub Main()
		'Create a new PDF document.
	Dim document As New PdfDocument()
	'Add a page to the document.
	Dim page As PdfPage = document.Pages.Add()
	'Create PDF graphics for the page.
	Dim graphics As PdfGraphics = page.Graphics
	'Set the standard font.
	Dim font As PdfFont = New PdfStandardFont(PdfFontFamily.Helvetica, 20)
	'Draw the text.
	graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, New PointF(0, 0))
	'Save the document.
	document.Save("Output.pdf")
	'Close the document.
	document.Close(True)
	End Sub
End Class
$vbLabelText   $csharpLabel
  • PdfDocument: PDFドキュメントを表します。 ページを追加し、プロパティを設定し、そのコンテンツを操作できます。
  • PdfPage: PDFドキュメント内のページを表します。
  • PdfFont: テキストをレンダリングするためのフォントを定義します。 この場合、標準のHelveticaフォントが使用されています。
  • DrawString: 指定された文字列を指定の座標にPDFページに描画します。

長所

  • 豊富な機能セットで、複雑なPDFの作成に適しています。
  • プロフェッショナルなサポートとドキュメントは、大規模なアプリケーションに理想的です。
  • フォーム入力、暗号化、注釈といった高度なPDF機能をサポートしています。

欠点

  • 商業利用のためのライセンス料は比較的高いです。
  • 習得に時間がかかる可能性のある複雑なAPI。

5. PDFShift(オンラインツール)

C# でのPDF生成のための7つのライブラリ比較(無料&有料ツール):図5

PDFShiftはHTMLをPDFファイルに変換するために設計されたクラウドベースのサービスです。 それは、APIを介してC#アプリケーションとスムーズに統合し、動的に生成されたHTMLウェブページをプロフェッショナル品質のPDFに変換できるようにします。 PDFShiftは、請求書やレポートなどのHTMLコンテンツからPDF文書をオンデマンドで生成したいWeb開発者に特に便利です。 PDFShiftはそのREST APIを通じて完全に動作するため、サービスにわずか数行のHTMLを送信するだけで、ダウンロード可能なPDFファイルを受け取ることができます。 それは、WebベースのPDFファイル生成のためのシンプルでスケーラブルなソリューションです。

主な機能

  • HTML から PDF への変換: PDFShift は、HTML ドキュメントを高品質な PDF に変換することに長けています。 それは複雑なCSSスタイル、JavaScript、およびレスポンシブデザインレイアウトを処理し、ウェブページがPDF形式でまったく同じように見えるようにします。
  • API統合: PDFShift APIは、ウェブアプリケーションへのシームレスな統合を目的として設計されています。 使い方は簡単です。HTMLコンテンツを含むHTTP POSTリクエストを送信するだけで、サービスがPDFドキュメントを返します。
  • カスタマイズオプション: PDFShift は、ページサイズ、向き、余白、ヘッダー/フッターの設定を含む生成された PDF のカスタマイズを可能にします。 ヘッダーやフッターに、ページ番号やドキュメントのメタデータなどの動的コンテンツを追加することもできます。

動作方法

  • HTMLコンテンツをPDFShift APIエンドポイントにPOSTリクエストで送信します。
  • 生成されたPDFを受け取り、ダウンロードまたは保存の準備が整います。

サンプルコード

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
            var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);
            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
            var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);
            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using client As New HttpClient()
			Dim htmlContent As String = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>"
			Dim content = New StringContent(htmlContent, Encoding.UTF8, "application/json")
			Dim response As HttpResponseMessage = Await client.PostAsync("https://api.pdfshift.io/v3/convert", content)
			Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel
  • HttpClient: HTMLコンテンツをPOSTリクエストとしてPDFShift APIに送信します。
  • PostAsync: リクエストをAPIに送信し、HTMLを処理してPDFを返します。
  • ReadAsByteArrayAsync: PDFのレスポンスをバイト配列として読み込み、それをファイルとして保存することができます。

長所

  • 最小限のセットアップで利用可能なシンプルなAPI。
  • 動的なHTMLからPDFへの変換を必要とするWebアプリケーションに最適です。
  • PDFライブラリやサーバーを管理する必要がありません。

欠点

  • HTMLをPDFに変換する機能のみ限定された。 より複雑なPDF機能をサポートしていません。
  • インターネット接続が必要で、一定の使用量を超えると費用が発生します。

6. DocRaptor (オンラインツール)

C#でPDFを生成する7つのライブラリ比較(無料および有料ツール):図6

DocRaptorは、HTMLとCSSを高品質なPDFに変換する強力なAPIベースのPDF生成サービスです。 HTMLドキュメントの優れたレンダリングで知られており、特に複雑なCSSスタイル、メディアクエリ、ウェブフォントの処理に秀でています。 これにより、DocRaptorは、レポート、請求書、eBookなどのプロフェッショナルな外観のドキュメントをHTMLテンプレートから直接生成するのに最適な選択肢となります。

主な機能

  • HTMLおよびCSSサポート: メディアクエリやフォントを含む複雑なCSSスタイルでHTMLドキュメントを変換します。
  • API統合: Webアプリケーションへのシームレスな統合のためのREST API。
  • カスタムヘッダー/フッター: ページ番号やカスタムフォーマットを含む動的なヘッダーとフッターを追加します。
  • PDFセキュリティ: 暗号化とパスワード保護をサポートします。

動作方法

  • HTMLコンテンツを使用してDocRaptor APIにPOSTリクエストを送信します。
  • ページサイズ、余白、ヘッダー、フッターのパラメータを使用してPDF出力をカスタマイズします。
  • 生成されたPDFを受け取ります。

サンプルコード

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string apiKey = "YOUR_API_KEY";
            string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
            string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);
            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string apiKey = "YOUR_API_KEY";
            string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
            string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);
            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using client As New HttpClient()
			Dim apiKey As String = "YOUR_API_KEY"
			Dim htmlContent As String = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>"
			Dim jsonData As String = $"{{""test"": true, ""document_content"": ""{htmlContent}"", ""name"": ""Generated.pdf"", ""document_type"": ""pdf""}}"
			Dim content = New StringContent(jsonData, Encoding.UTF8, "application/json")
			Dim response As HttpResponseMessage = Await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content)
			Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel
  • APIキー: DocRaptorを使用する際には、認証のためにAPIキーを提供する必要があります。 "YOUR_API_KEY"を実際のキーに置き換えてください。
  • JsonData: このJSON文字列には、HTMLコンテンツ、ドキュメント名、およびタイプ(この場合はPDF)が含まれています。
  • PostAsync: HTMLコンテンツとパラメータをDocRaptor APIに送信してPDFを生成します。

長所

  • HTML、CSS、JavaScriptをフルサポートした高品質なレンダリング。
  • ドキュメントのレイアウトとセキュリティのための高度なカスタマイズオプション。
  • PDF生成ライブラリやインフラストラクチャを維持する必要はありません。

欠点

  • 無料使用限度を超えた後の有料サービス。
  • インターネット接続に依存します。

7. コード不要のオンラインツール

コードを書きたくない場合や、PDF生成のための迅速な解決策が必要な場合、いくつかのオンラインツールを使用してPDFを迅速かつ簡単に作成することができます。 以下は注目すべきオプションです。

7.1. Smallpdf

C# PDF生成 7つのライブラリ比較(無料&有料ツール):図7

Smallpdf は、多様なファイル形式からPDFを作成する機能を含む、PDF関連のツールを提供するオンラインプラットフォームです。 コードを書く必要がなく、シンプルなドラッグ&ドロップインターフェースを求めているユーザー向けに設計されています。 Smallpdfは、Wordドキュメント、Excelシート、画像をPDFに変換するなどの迅速なファイル変換に広く使用されています。 また、PDFの結合、圧縮、分割のためのツールを提供しており、基本的なPDF作業において多用途なツールとなります。

主な機能

  • ファイル変換: Smallpdfは、Word、Excel、PowerPoint、および画像ファイル(JPG、PNG)をPDFに変換することをサポートしています。 これは、さまざまなドキュメントタイプから迅速にPDFを作成する必要があるユーザーにとって理想的です。
  • PDFの結合と分割: Smallpdfは、複数のPDFを1つのファイルに結合したり、PDFを個別のページに分割したりするためのシンプルなインターフェースを提供します。
  • クラウドストレージ統合: Google ドライブや Dropbox からファイルを簡単にアップロードし、変換されたPDFをこれらのプラットフォームに保存して、ファイル管理を効率化できます。
  • PDF編集ツール:変換に加えて、Smallpdfは基本的なPDF編集ツールを提供しており、既存のPDFドキュメントに注釈を追加したり、フォームに入力したり、文書にデジタル署名をしたりすることができます。

長所

  • 開発者でない人にとっても非常に使いやすい。
  • 基本的な使用は無料で、より多くの機能を利用できるアップグレードオプションがあります。
  • PDFの結合、分割、圧縮などの多様なPDF関連ツールを提供します。

欠点

  • コードベースのソリューションと比べてカスタマイズの制限があります。
  • 無料プランには機能制限がある場合があります。

7.2. PDFescape

C# PDF生成用7ライブラリ比較(無料および有料ツール):図8

PDFescapeは、ユーザーがソフトウェアをインストールすることなくPDFを作成、編集、表示できる、使いやすいWebベースのPDFエディターです。 フォームへの記入、テキスト注釈の追加、画像の挿入など、PDFに迅速に編集を加える必要がある方には素晴らしいツールです。 PDFescapeは、基本的なドキュメント作成のための柔軟な選択肢となる、新しいPDFをゼロから作成するためのツールも提供しています。

主な機能

  • フォームの記入と編集:PDFescapeはPDFフォームの処理に優れています。 ユーザーは、契約書、申請書、その他のフォームに便利なPDFドキュメント内のフォームに簡単に入力したり、既存のフィールドを編集したりできます。
  • 基本的なPDF作成:ゼロからPDFを作成したいユーザーのために、PDFescapeはテキスト、図形、画像、フォームフィールドを追加するためのツールを提供します。 これは、手紙やフォームのようなシンプルな文書を作成するのに便利です。
  • 注釈とコメント: 既存のPDFにコメント、付箋、その他の注釈を追加できるため、PDFescapeはドキュメントのレビューや共同作業に最適なツールです。
  • インストール不要: ウェブベースのツールとして、PDFescapeは完全にブラウザ内で動作するため、ソフトウェアをインストールする必要はありません。 これにより、外出先でPDFツールに素早くアクセスする必要があるユーザーに最適です。

長所

  • 技術的でないユーザーにとって使いやすい。
  • 基本的なPDF作成と編集のための無料ティア。
  • 軽微なPDF編集作業に適しています。

欠点

  • 複雑なPDF作成のための高度な機能が不足しています。
  • 限られたデザインとフォーマットオプション。

7.3. PDF Candy

C# で PDF を生成するための7つのライブラリ比較(無料&有料ツール): 図9

PDF Candyは、ファイル変換から編集まで、PDF関連の幅広いタスクを網羅する無料のオンラインPDFツールセットです。 アカウント登録やソフトウェアのインストールをせずに、迅速なPDF操作を実行したいユーザーにとって、優れた選択肢です。 PDF Candyは、Word文書、画像、テキストファイルなど、さまざまなファイルタイプをPDFに変換することをサポートしています。 また、PDFの結合、分割、圧縮のためのツールも提供します。

主な機能

  • 幅広い変換オプション: PDF Candyは、Word文書、画像、テキストファイルなど、複数のファイル形式をPDFに変換できます。 これにより、さまざまな種類のコンテンツを扱うための柔軟なツールとなります。
  • PDFの結合と分割: このプラットフォームでは、複数のPDFを一つに結合したり、大きなPDFを小さくて扱いやすいファイルに分割したりすることができます。
  • ファイルのプライバシー: PDF Candy は、あなたのドキュメントがプライベートに保たれるよう、短期間後にファイルを自動的にサーバーから削除します。
  • 無料で利用可能:PDF Candyのほとんどのツールは登録不要で無料で利用できるため、多くの人々がアクセスできます。 ただし、より頻繁に使用する必要がある方や、より大きなファイルの変換を求める方には、より高度な機能を備えたプレミアムバージョンも提供しています。

長所

  • 使用が簡単で、ほとんどのユーザーにとって完全に無料です。
  • PDFへの変換のため、さまざまなファイルタイプをサポートします。
  • 基本的な使用にはアカウント登録は必要ありません。

欠点

  • 高度なPDFカスタマイズ機能が制限されています。
  • 一部のツールには、ファイルサイズや変換の複雑さに制限がある場合があります。

結論

C# で PDF を生成するための 7 つのライブラリの比較 (無料 & 有料ツール): 図 10

C#でPDFファイルを生成するための適切なツールを選ぶことは、あなたのニーズによります。 HTMLコンテンツからPDFドキュメントを生成する必要がある場合、IronPDFとPDFShiftは優れた選択肢です。 iTextSharpやSyncfusionは、より複雑なプロジェクトに対して、文書構造のカスタマイズオプションと制御を幅広く提供しています。 よりシンプルでオープンソースのソリューションを求める場合、PDFsharpはPDFファイルの変更や基本的なPDFの作成において信頼性の高い選択肢です。 最後に、開発者でない方には、Smallpdf、PDFescape、PDF CandyがPDFファイルを扱うための簡単でコード不要なオプションを提供します。

IronPDFを試してみたい方には、HTMLからPDFへの変換とPDF操作機能を購入前にテストできるため、開発者にとって優れた選択肢です。 試用版では、高品質なPDFファイルの生成、セキュリティオプション、既存のPDFドキュメントの修正などのプレミアム機能を探索でき、ツールの機能を実際に体験することができます。 あなたのプロジェクトが頻繁なHTMLからPDFへの変換や複雑なPDF編集を必要とする場合、IronPDFの無料トライアルはそれがあなたのニーズに合っているかどうかを確認するための素晴らしい方法です。

各ツールの特定の機能とプロジェクトの範囲を評価することで、C#でPDFファイルを効率的に生成するための最適なソリューションを選択できます。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
ライブラリなしでHTMLをC#からPDFに変換する方法
次へ >
html2pdfページブレークをC#で修正(開発者向けチュートリアル)