無料でPDFにパスワードをかける方法
.NET で PDF ドキュメントを操作する場合、開発者はさまざまなライブラリを比較して、どのライブラリがプロジェクト要件に最も適しているかを判断することがよくあります。 .NETエコシステムにおいて人気のある選択肢は、PDFSharp、QuestPDF、およびIronPDFです。 各ライブラリはさまざまなユースケースに対応し、独自の長所と短所を備えています。 この記事では、これらのライブラリの詳細な比較と、この URLを使用して基本的な PDF 生成を処理する方法を示し、情報に基づいた決定を下せるよう支援します。
PDFSharpとは何ですか?
PDFSharpは、PDFドキュメントを作成、編集、およびレンダリングするために設計されたオープンソースライブラリです。 シンプルさと基本的なPDF機能に焦点を当てて、PDFSharpは直接的なPDF操作能力を持つ開発者にとって信頼できるツールとなっています。
PDFSharpの主な機能
- PDF の作成と編集:新しい PDF を生成したり、既存の PDF を変更します。 *グラフィック描画:図形、テキスト、画像の描画をサポートします。 *オープンソース: MIT ライセンスに基づいているため、自由に使用および変更できます。
インストール
NuGet パッケージマネージャを使用することで、プロジェクトにPDFSharpを簡単にインストールできます。 NuGet パッケージ マネージャー コンソールで次の行を実行するだけです。
PDFSharpコード例
次に、PDFSharpが指定されたURLから新しいPDFドキュメントをどのように処理するかを見てみましょう。 PDFSharpは単独ではHTMLやURLをPDFに変換できないため、HtmlRenderer.PdfSharpのようなWebレンダリングエンジンを統合する必要があります。さらに、HttpClientを使用して指定されたURLからHTMLコンテンツを取得します。
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;
public class Program
{
static async Task Main(string[] args)
{
// Ensure proper encoding support
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
string url = "https://www.apple.com";
// Fetch HTML content from the URL
using (HttpClient client = new HttpClient())
{
string htmlContent = await client.GetStringAsync(url);
// Generate PDF from the fetched HTML content
var pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);
pdf.Save("output.pdf");
Console.WriteLine("PDF created successfully as 'output.pdf'.");
}
}
}Imports System
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Imports PdfSharp.Pdf
Imports TheArtOfDev.HtmlRenderer.PdfSharp
Public Class Program
Public Shared Async Function Main(ByVal args As String()) As Task
' Ensure proper encoding support
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
Dim url As String = "https://www.apple.com"
' Fetch HTML content from the URL
Using client As HttpClient = New HttpClient()
Dim htmlContent As String = Await client.GetStringAsync(url)
' Generate PDF from the fetched HTML content
Dim pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4)
pdf.Save("output.pdf")
Console.WriteLine("PDF created successfully as 'output.pdf'.")
End Using
End Function
End ClassImports System
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Imports PdfSharp.Pdf
Imports TheArtOfDev.HtmlRenderer.PdfSharp
Public Class Program
Public Shared Async Function Main(ByVal args As String()) As Task
' Ensure proper encoding support
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
Dim url As String = "https://www.apple.com"
' Fetch HTML content from the URL
Using client As HttpClient = New HttpClient()
Dim htmlContent As String = Await client.GetStringAsync(url)
' Generate PDF from the fetched HTML content
Dim pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4)
pdf.Save("output.pdf")
Console.WriteLine("PDF created successfully as 'output.pdf'.")
End Using
End Function
End Class出力PDFファイル

PDFSharpを使用してHTMLコンテンツやWebページをPDFファイルに変換できるものの、追加のライブラリの助けを借りる必要があり、元のウェブサイトで見られるCSSやフォーマットを保持することはできません。有料ライブラリで見られるより高度な機能は欠けていますが、優れた無料のPDF開発者ライブラリです。
QuestPDF とは何ですか?
QuestPDF は、流暢な API を使用して視覚的に魅力的な PDF を生成することに重点を置いた、最新のオープンソース ライブラリです。 ドキュメントのレイアウトとレンダリングに対する革新的なアプローチにより、動的で複雑なデザインを必要とするアプリケーションにとって強力な候補となります。
QuestPDFの主な機能
- Fluent API:ドキュメントのレイアウトを定義するための宣言的なアプローチを提供します。 *最新のレイアウト システム: CSS にヒントを得て、グリッド、コンポーネント、柔軟なレイアウト構造をサポートします。 *高性能:大規模で複雑なドキュメントを迅速にレンダリングするように最適化されています。
インストール
このライブラリは NuGet パッケージとしてインストールできるため、インストールは簡単なプロセスで、NuGet コンソール内で 1 行だけ実行する必要があります。
QuestPDF コード例
ここで、QuestPDF がサンプル URL を PDF 形式に変換する方法を見てみましょう。 QuestPDF は URL から PDF への変換をネイティブにサポートしていませんが、HTTP クライアントを使用して HTML コンテンツを取得し、QuestPDF の Fluent API を使用して PDF に変換することができます。
using System;
using System.Net.Http;
using System.Threading.Tasks;
using HtmlAgilityPack;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
public class Program
{
static async Task Main(string[] args)
{
// Configure QuestPDF to use the community license
QuestPDF.Settings.License = LicenseType.Community;
string url = "https://www.apple.com";
// Fetch HTML content from the URL
using (HttpClient client = new HttpClient())
{
string htmlContent = await client.GetStringAsync(url);
// Parse the HTML content using HtmlAgilityPack
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlContent);
// Extract meaningful content (e.g., text inside <body>)
var bodyContent = htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText ?? "No content found";
// Generate PDF using QuestPDF
Document.Create(container =>
{
container.Page(page =>
{
page.Size(PageSizes.A4);
page.Margin(20);
page.Content().Text(bodyContent);
});
}).GeneratePdf("output.pdf");
Console.WriteLine("PDF created successfully as 'output.pdf'.");
}
}
}using System;
using System.Net.Http;
using System.Threading.Tasks;
using HtmlAgilityPack;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
public class Program
{
static async Task Main(string[] args)
{
// Configure QuestPDF to use the community license
QuestPDF.Settings.License = LicenseType.Community;
string url = "https://www.apple.com";
// Fetch HTML content from the URL
using (HttpClient client = new HttpClient())
{
string htmlContent = await client.GetStringAsync(url);
// Parse the HTML content using HtmlAgilityPack
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlContent);
// Extract meaningful content (e.g., text inside <body>)
var bodyContent = htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText ?? "No content found";
// Generate PDF using QuestPDF
Document.Create(container =>
{
container.Page(page =>
{
page.Size(PageSizes.A4);
page.Margin(20);
page.Content().Text(bodyContent);
});
}).GeneratePdf("output.pdf");
Console.WriteLine("PDF created successfully as 'output.pdf'.");
}
}
}Imports System
Imports System.Net.Http
Imports System.Threading.Tasks
Imports HtmlAgilityPack
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure
Public Class Program
Public Shared Async Function Main(ByVal args As String()) As Task
' Configure QuestPDF to use the community license
QuestPDF.Settings.License = LicenseType.Community
Dim url As String = "https://www.apple.com"
' Fetch HTML content from the URL
Using client As HttpClient = New HttpClient()
Dim htmlContent As String = Await client.GetStringAsync(url)
' Parse the HTML content using HtmlAgilityPack
Dim htmlDoc As HtmlDocument = New HtmlDocument()
htmlDoc.LoadHtml(htmlContent)
' Extract meaningful content (e.g., text inside <body>)
Dim bodyContent As String = If(htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText, "No content found")
' Generate PDF using QuestPDF
Document.Create(Sub(container)
container.Page(Sub(page)
page.Size(PageSizes.A4)
page.Margin(20)
page.Content().Text(bodyContent)
End Sub)
End Sub).GeneratePdf("output.pdf")
Console.WriteLine("PDF created successfully as 'output.pdf'.")
End Using
End Function
End ClassImports System
Imports System.Net.Http
Imports System.Threading.Tasks
Imports HtmlAgilityPack
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure
Public Class Program
Public Shared Async Function Main(ByVal args As String()) As Task
' Configure QuestPDF to use the community license
QuestPDF.Settings.License = LicenseType.Community
Dim url As String = "https://www.apple.com"
' Fetch HTML content from the URL
Using client As HttpClient = New HttpClient()
Dim htmlContent As String = Await client.GetStringAsync(url)
' Parse the HTML content using HtmlAgilityPack
Dim htmlDoc As HtmlDocument = New HtmlDocument()
htmlDoc.LoadHtml(htmlContent)
' Extract meaningful content (e.g., text inside <body>)
Dim bodyContent As String = If(htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText, "No content found")
' Generate PDF using QuestPDF
Document.Create(Sub(container)
container.Page(Sub(page)
page.Size(PageSizes.A4)
page.Margin(20)
page.Content().Text(bodyContent)
End Sub)
End Sub).GeneratePdf("output.pdf")
Console.WriteLine("PDF created successfully as 'output.pdf'.")
End Using
End Function
End Class出力PDFファイル

PDFSharp と同様に、QuestPDF は HtmlAgilityPack などの外部ライブラリを利用して HTML コンテンツを PDF に変換できますが、CSS のスタイル設定や書式を維持することはできません。 QuestPDF は、PDF ドキュメントを最初から作成したい人にとっては最適な選択肢ですが、HTML から PDF への変換はこのライブラリの強みではありません。
IronPDF: 強力なPDFライブラリ
IronPDFは、高度で包括的な PDF 機能を必要とする .NET 開発者向けに設計された強力な PDF ライブラリです。 HTML から PDF へのレンダリングに重点を置き、PDF ドキュメントの操作、暗号化、PDF/A 準拠などの高度なオプションなどの追加機能と組み合わせることで、エンタープライズ グレードのアプリケーションにとって強力な選択肢となります。
IronPDFの主な機能
- HTML から PDF:完全な Web ページまたはHTML 文字列をPDF として簡単にレンダリングします。
- PDF/A 準拠:長期アーカイブ標準に準拠したドキュメントを生成します。 *高度なセキュリティ:暗号化、パスワード保護、デジタル署名をサポートします。
- PDF の編集:既存の PDF ファイルを変更、結合、分割します。 *クロスプラットフォーム: .NET Framework、 .NET Core、 .NET 5+ と完全に互換性があります。
インストール
IronPDF をインストールするには、Visual Studio の NuGet パッケージ マネージャーを使用します。
NuGetパッケージ マネージャーの使用:
- Visual Studioでプロジェクトを開きます。
- ソリューションエクスプローラでプロジェクトを右クリックし、"NuGetパッケージの管理"を選択します。
- "IronPDF"を検索し、"インストール"をクリックします。

NuGet パッケージ マネージャー コンソールを使用:
例: IronPDF を使用して URL を PDF に変換する
IronPDF は、URL を PDF に変換するためのシンプルで直接的な API を提供します。 以下は例です:
using IronPdf;
public class PdfConverter
{
public static void Main(string[] args)
{
// Create a renderer with IronPdf
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the URL as a PDF
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
// Save the PDF
pdf.SaveAs("url.pdf");
}
}using IronPdf;
public class PdfConverter
{
public static void Main(string[] args)
{
// Create a renderer with IronPdf
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the URL as a PDF
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
// Save the PDF
pdf.SaveAs("url.pdf");
}
}Imports IronPdf
Public Class PdfConverter
Public Shared Sub Main(ByVal args() As String)
' Create a renderer with IronPdf
Dim renderer As New ChromePdfRenderer()
' Render the URL as a PDF
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")
' Save the PDF
pdf.SaveAs("url.pdf")
End Sub
End ClassImports IronPdf
Public Class PdfConverter
Public Shared Sub Main(ByVal args() As String)
' Create a renderer with IronPdf
Dim renderer As New ChromePdfRenderer()
' Render the URL as a PDF
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")
' Save the PDF
pdf.SaveAs("url.pdf")
End Sub
End Class出力PDFファイル

上記のコード例は、IronPDF がわずか数行のコードで URL コンテンツを簡単に PDF に変換する方法を示しています。 ご覧のとおり、HTML が変換されただけでなく、CSS スタイルとレイアウトも変換され、出力 PDF が元の書式設定に忠実に保たれています。 ChromePdfRenderer レンダリング エンジンを使用することで、IronPDF は、変換プロセスでコンテンツの元の品質を失うことなく、ピクセルパーフェクトな PDF ドキュメントを生成します。
ここからわかるように、IronPDF は HTML から PDF への変換だけでなく、他の種類のドキュメントから PDF への変換にも最適な選択肢です。 簡潔で実装しやすいコード ブロックで高品質の変換ジョブを処理します。
詳細な分析
使いやすさ
PDFSharpはシンプルで使いやすく、初心者や基本的なPDFニーズの開発者にとって優れた選択肢です。 手順型のアプローチにより、PDF にテキスト、図形、画像を追加するなどのタスクをすばやくセットアップして実装できます。 ただし、HTML および URL から PDF への変換タスクを処理するには、外部ライブラリが必要です。
一方、QuestPDF は、流暢な API を備えたより現代的なアプローチを提供します。 Web または UI デザインの経験がある開発者にとっては直感的に理解できるでしょうが、初心者にとってはレイアウト中心の設計哲学に慣れるまでに多少の学習曲線に直面する可能性があります。 繰り返しになりますが、HTML から PDF への変換を処理する組み込みツールがありません。
IronPDF は、HTML から PDF への変換と高度な PDF 機能の最も簡単なエクスペリエンスを提供します。 直感的な API により実装時間が短縮され、強力なドキュメントと例が提供されます。 IronPDF は、この記事で紹介した URL から PDF への例など、さまざまな種類のドキュメントを PDF に変換でき、ドキュメントの品質を損なうことなく変換できます。
パフォーマンス
パフォーマンスは、特に PDF を動的に生成する必要があるアプリケーションにとって重要な要素です。 PDFSharpは小規模で単純なドキュメントに適していますが、大規模または複雑なレイアウトでは苦労します。
QuestPDF は、ダイナミックで視覚的に魅力的なドキュメントのレンダリングに優れています。 構造化されたレイアウトを高効率で処理するように最適化されています。
IronPDF は、特に HTML レンダリング、CSS、JavaScript サポートを必要とするアプリケーションにおいて、パフォーマンスと機能性のバランスが非常に優れています。 また、エンタープライズ グレードの PDF タスクを簡単に処理できる優れた機能も備えています。
比較の要約
- PDFSharpは基本的なPDF作成と編集タスクに最適な軽量のオープンソースライブラリです。 小規模なプロジェクトには最適ですが、最新のレイアウトや高度な機能はサポートされていません。
- QuestPDF は、流暢な API を使用して、動的で複雑、かつ視覚的に魅力的な PDF を生成することに優れています。 ただし、PDF 生成のみに焦点を当てており、既存のドキュメントの編集はサポートされていません。
- IronPDF は、組み込みの HTML から PDF への変換、OCR、高度なセキュリティ オプションなど、最も包括的な機能セットを提供します。 商用ライセンスが必要ですが、その機能性により、エンタープライズおよびプロフェッショナル アプリケーションに最適です。
結論
.NET プロジェクトに適した PDF ライブラリの選択は、特定の要件によって異なります。 基本的なPDFタスクのための軽量でオープンソースのツールが必要な場合、PDFSharpは堅実な選択です。 ダイナミックで視覚的に魅力的なドキュメントを作成するには、 QuestPDF の現代的なアプローチが際立っています。
ただし、高度な機能、HTML から PDF へのシームレスな変換、エンタープライズ グレードの機能が必要な場合は、 IronPDFが提供する機能を確認してください。
各ライブラリの長所と限界を理解することで、プロジェクトのニーズに合った情報に基づいた決定を下すことができます。
Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。