IRONPDFの使用

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

公開済み 2024年12月16日
共有:

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

1. IronPDF

壊れた画像 Pixabayから追加、ファイルから選択、またはここに画像をドラッグアンドドロップしてください。

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
VB   C#
  1. Namespace Import: using IronPdf; は、IronPDFライブラリをインポートしてそのクラスやメソッドにアクセスするためのものです。

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

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

  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フォームを処理する能力です。(アクロフォーム). さまざまな入力フィールドを持つフォームを作成し、後でプログラムによってそれらを入力することができます。これは、自動ドキュメント生成のワークフローにおいて非常に便利な機能です。
  • XMLからPDFへの変換: iTextSharpは、XFAを使用してXMLデータをPDFに変換するための強力なサポートを提供しています。(XMLフォームアーキテクチャ). これは特に、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
VB   C#
  1. GeneratePdfFromFragment: HTMLフラグメントを取得します。(部分的なHTMLドキュメントのように) それを基本的なから始まる完全なHTML構造に変換します。 そして テンプレート。 それから、内部のgenerateメソッドを呼び出します。

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

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

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

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

    4.

長所

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

欠点

  • iTextSharp(個人使用には無料ですが、大規模なプロジェクトには商用ライセンスが必要です。)複雑なCSSやJavaScriptの処理に制限がある場合があります。
  • XMLWorker(ここで使用される)iTextSharpのHTML/CSS解析用の非推奨ツールです。 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
VB   C#
  • 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フォームの作成、入力、データ抽出に優れています。(アクロフォーム). これは、ユーザー入力用の記入可能な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
VB   C#
  • 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
VB   C#
  • HttpClient: HTMLコンテンツをPDFShift APIにPOSTリクエストとして送信します。
  • 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
VB   C#
  • 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 Driveや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はテキスト、形状、画像、フォームフィールドを追加するツールを提供します。 これは、手紙やフォームのようなシンプルな文書を作成するのに便利です。
  • 注釈とコメント:PDFescapeは、既存のPDFにコメント、付箋、その他の注釈を追加できるため、ドキュメントのレビューやコラボレーションに最適なツールです。
  • インストール不要: 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を1つに結合したり、大きな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ファイルを効率的に生成するための最適なソリューションを選択できます。

次へ >
html2pdfページブレークをC#で修正(開発者向けチュートリアル)