PDFsharpでPDFに透かしを追加するための最良の代替案を探る
PDFに透かしを追加することは、ドキュメントのセキュリティ、ブランド化、バージョン管理のための一般的な要件です。 機密文書としてマークを付ける、公式報告書にブランド化する、あるいは無許可の複製を防止するために、透かしは必要不可欠な機能です。
C#では、開発者は複数のライブラリから選択できますが、IronPDFとPDFsharpが最も人気のあるオプションです。 しかし、それらのアプローチ、使いやすさ、パフォーマンス、ライセンス構造は大きく異なります。 この記事では、既存のPDFに透かしを追加するためのIronPDFとPDFSharpの詳細な比較を提供し、それぞれの機能、実装プロセス、およびカスタマイズ機能についての洞察を提供します。
この比較では、両ライブラリのウォーターマーキングAPIを動作コード例とともに解説しているので、どちらがプロジェクトの要件に合致するかを判断できます。
PDF透かしの理解
透かしとは何ですか?
透かしは、識別子、抑止要素、またはブランド要素として機能するドキュメント上のグラフィカルまたはテキストのオーバーレイです。 透かしは、その目的に応じて見える場合と見えない場合があり、文書の注釈に使用されるテキストや画像のスタンプと密接に関連している。
透かしの種類
- テキスト透かし – 通常は"CONFIDENTIAL"や"DRAFT"のようなメッセージを伴う半透明のオーバーレイです。
- イメージ透かし – ドキュメントに埋め込まれたロゴ、エンブレム、またはグラフィックス。
- 透明な透かし – ドキュメントの可読性を妨げない微妙なブランドマーク。
- スタンプ透かし – 見やすさを確保するためのより目立つ太字のマーキング。
一般的な使用例
- セキュリティと保護 – 文書を専有として表示し、無許可の複製を防ぎます。
- ブランディング – 企業のロゴや署名を追加して、文書全体でブランドの一貫性を維持します。
- バージョン管理 – 草稿、最終版、または文書の改訂をラベル付けします。
IronPDFとPDFsharpとは何ですか?
IronPDF
IronPDFは、PDFの新規作成から高度な操作まで、PDF処理を効率化するために設計された、機能豊富なプレミアム.NETライブラリです。 特に、透かしを含むPDF操作タスクを簡単に実装したい開発者にとって便利です。
主な機能:
- 最小のコードで済むシンプルで直感的なAPI。
- カスタマイズオプションを備えたテキストおよびイメージ透かしをサポート。
- 正確な配置のための不透明度の制御、位置調整、回転を提供。
- .NET 6+, .NET Core, および .NET Frameworkに対応。
- 長期使用に適した永久ライセンスモデルを提供。
- 追加機能としてPDFアノテーション、HTML-to-PDF変換、および電子署名を備える。
PDFsharp
PDFsharpは、C#でPDFを作成、編集、操作するためのオープンソースのライブラリです。 現在PDFsharpをご利用中で、移行を検討されている場合は、 PDFsharpからIronPDFへの移行ガイドで移行プロセスをご確認いただけます。 描画操作を細かく制御できるという利点があるものの、透かしの挿入に関しては、IronPDFの抽象化されたアプローチに比べて、より多くの手動実装が必要となる。
主な機能:
- 無料でオープンソースであり、予算を意識したプロジェクトにとってコスト効果の高い選択肢です。
- PDFの描画操作において、アウトライン付きのグラフィカルパスや透明なグラフィカルパスのいずれも含む低レベルの制御を提供します。
- テキストとイメージの透かしをサポートしますが、変換のために追加のコードが必要です。
- .NET Frameworkと.NET Core(PDFSharpCore経由)で動作します。
- 高度な透かし機能は内蔵されていません。 開発者は、透明度や回転などの機能を描画APIを通じて直接実装します。
以下に、ウォーターマーク処理における2つのライブラリの比較を簡単にまとめたものです。
| フィーチャー | IronPDF | PDFシャープ |
|---|---|---|
| テキスト透かし | 組み込みのApplyWatermarkメソッド |
XGraphics API を使用した手動描画 |
| 画像透かし | HTML/CSS <img>タグのサポート |
CODE-1355--手動位置決め付き |
| 不透明度コントロール | CODE-1356のパラメータ | カスタムブラシ/アルファ処理が必要です |
| 回転 | CODE-1356のパラメータ | マニュアル--CODE-1358--@@コール |
| 透かし模様のスタイル | HTML/CSSを完全にサポート | フォントとブラシの設定 |
| .NET互換性 | .NET 6+、Core、Framework | .NET Framework、Core(PDFSharpCore経由) |
| ライセンス | 商用(永久オプション) | オープンソース(MITライセンス) |
IronPdfの30日間無料トライアルには以下の例で使用されている完全な透かしAPIが含まれています。
IronPDFによる透かしの追加
IronPDFは、開発者が手動での座標計算やグラフィックパイプラインの設定を行うことなく、わずか数行のコードで透かしを適用できる高レベルAPIを提供します。IronPDFの透かしツールはHTML/CSS文字列を受け入れるため(ライブラリ全体で使用されているChromiumベースのHTMLレンダリングエンジンを利用)、使い慣れたWebマークアップを使用して、スタイル、位置、外観を完全に制御できます。
テキスト透かしの例
using IronPdf;
const string filename = "existing.pdf";
// Load the existing PDF file
PdfDocument pdf = PdfDocument.FromFile(filename);
// Create a simple HTML-based watermark
string watermark = "<h1 style='color:red'>Confidential!</h1>";
// Apply the watermark to the PDF
pdf.ApplyWatermark(watermark);
// Save the updated document with the applied watermark
pdf.SaveAs("watermarked.pdf");
using IronPdf;
const string filename = "existing.pdf";
// Load the existing PDF file
PdfDocument pdf = PdfDocument.FromFile(filename);
// Create a simple HTML-based watermark
string watermark = "<h1 style='color:red'>Confidential!</h1>";
// Apply the watermark to the PDF
pdf.ApplyWatermark(watermark);
// Save the updated document with the applied watermark
pdf.SaveAs("watermarked.pdf");
Imports IronPdf
Private Const filename As String = "existing.pdf"
' Load the existing PDF file
Private pdf As PdfDocument = PdfDocument.FromFile(filename)
' Create a simple HTML-based watermark
Private watermark As String = "<h1 style='color:red'>Confidential!</h1>"
' Apply the watermark to the PDF
pdf.ApplyWatermark(watermark)
' Save the updated document with the applied watermark
pdf.SaveAs("watermarked.pdf")

このコード例では、IronPDFを使用して既存のPDFファイルに透かしを適用するのがいかに簡単かを示しています。 ここでは、FromFileメソッドを使って既存のPDFを読み込みます。 それから、透かしとしてHTML要素としてフォーマットされた単純な文字列を作成し、HTMLを使って一からPDFを作成するのと同じように、ApplyWatermarkを使ってPDFに適用します。 出力画像に示されたように、これによりPDFに"Confidential"という単純なテキスト文字列が透かしとして追加されました。
イメージ透かしの例
using IronPdf;
// Load the PDF document
PdfDocument pdf = PdfDocument.FromFile("existing.pdf");
// Create an HTML-based watermark containing the image
string watermark = "<img src='https://ironsoftware.com/img/products/ironpdf-logo-text-dotnet.svg'>";
// Apply the watermark to the PDF with rotation and opacity
pdf.ApplyWatermark(watermark, rotation: 45, opacity: 80);
// Save the watermarked document
pdf.SaveAs("watermarked.pdf");
using IronPdf;
// Load the PDF document
PdfDocument pdf = PdfDocument.FromFile("existing.pdf");
// Create an HTML-based watermark containing the image
string watermark = "<img src='https://ironsoftware.com/img/products/ironpdf-logo-text-dotnet.svg'>";
// Apply the watermark to the PDF with rotation and opacity
pdf.ApplyWatermark(watermark, rotation: 45, opacity: 80);
// Save the watermarked document
pdf.SaveAs("watermarked.pdf");
Imports IronPdf
' Load the PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("existing.pdf")
' Create an HTML-based watermark containing the image
Private watermark As String = "<img src='https://ironsoftware.com/img/products/ironpdf-logo-text-dotnet.svg'>"
' Apply the watermark to the PDF with rotation and opacity
pdf.ApplyWatermark(watermark, rotation:= 45, opacity:= 80)
' Save the watermarked document
pdf.SaveAs("watermarked.pdf")

テキストと同様に、イメージを透かしとして追加することも同様に簡単です。両方とも同じメソッドを使用します。 テキストの例と同様に、イメージのURLを指すHTMLイメージタグを含む新しい透かし文字列変数を作成して適用します。 今回は、IronPDFのレンダリングオプションパラメータを介して、回転と透明度の変換をカスタマイズできるようにしました。
このアプローチでは、指定された位置にイメージの透かしを重ね、カスタム配置と透過性を可能にします。
PDFsharpで透かしを追加する
PDFsharpでは、GDI+描画APIを使用してテキストやイメージを手動でレンダリングする必要があります。 既存のPDFファイルに透かしを付けるには、描画用のXGraphicsオブジェクトを作成し、目的のコンテンツを適用します。
テキスト透かしの例
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;
const string filename = "existing.pdf";
// Open the PDF document in modify mode
var document = PdfReader.Open(filename, PdfDocumentOpenMode.Modify);
foreach (var page in document.Pages)
{
// Create an XGraphics object for drawing
var gfx = XGraphics.FromPdfPage(page);
// Move the origin to the center of the page for rotation purposes
gfx.TranslateTransform(page.Width / 2, page.Height / 2);
// Rotate for diagonal watermark placement
gfx.RotateTransform(Math.Atan(page.Height / page.Width));
// Define font and brush for drawing the watermark text
var font = new XFont("Arial", 40);
var brush = new XSolidBrush(XColor.FromArgb(128, XColors.Red)); // Semi-transparent red
// Draw the watermark text centered on the page
gfx.DrawString("WATERMARK", font, brush, new XPoint(0, 0));
}
// Save modified document
document.Save("watermarked.pdf");
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;
const string filename = "existing.pdf";
// Open the PDF document in modify mode
var document = PdfReader.Open(filename, PdfDocumentOpenMode.Modify);
foreach (var page in document.Pages)
{
// Create an XGraphics object for drawing
var gfx = XGraphics.FromPdfPage(page);
// Move the origin to the center of the page for rotation purposes
gfx.TranslateTransform(page.Width / 2, page.Height / 2);
// Rotate for diagonal watermark placement
gfx.RotateTransform(Math.Atan(page.Height / page.Width));
// Define font and brush for drawing the watermark text
var font = new XFont("Arial", 40);
var brush = new XSolidBrush(XColor.FromArgb(128, XColors.Red)); // Semi-transparent red
// Draw the watermark text centered on the page
gfx.DrawString("WATERMARK", font, brush, new XPoint(0, 0));
}
// Save modified document
document.Save("watermarked.pdf");
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf.IO
Private Const filename As String = "existing.pdf"
' Open the PDF document in modify mode
Private document = PdfReader.Open(filename, PdfDocumentOpenMode.Modify)
For Each page In document.Pages
' Create an XGraphics object for drawing
Dim gfx = XGraphics.FromPdfPage(page)
' Move the origin to the center of the page for rotation purposes
gfx.TranslateTransform(page.Width \ 2, page.Height \ 2)
' Rotate for diagonal watermark placement
gfx.RotateTransform(Math.Atan(page.Height \ page.Width))
' Define font and brush for drawing the watermark text
Dim font = New XFont("Arial", 40)
Dim brush = New XSolidBrush(XColor.FromArgb(128, XColors.Red)) ' Semi-transparent red
' Draw the watermark text centered on the page
gfx.DrawString("WATERMARK", font, brush, New XPoint(0, 0))
Next page
' Save modified document
document.Save("watermarked.pdf")
この実装では、明示的な座標ベースの位置決めによって、各ページに透かしを描画します。 PDFsharpはIronPDFの例と同様の出力を生成しますが、より多くのコードを必要とします。IronPDFのテキスト透かしは、約4行のアクティブ行を必要とするのに対し、PDFsharpは10行を必要とします。これは、PDFsharpがレイアウトの決定(移動、回転、フォントの選択)を抽象化するのではなく、開発者に委ねているためです。
イメージ透かしの例
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;
// Open the existing PDF document in modify mode
var document = PdfReader.Open("sample.pdf", PdfDocumentOpenMode.Modify);
// Load the watermark image
XImage watermark = XImage.FromFile("watermark.png");
foreach (var page in document.Pages)
{
// Create a graphics object from the page
XGraphics gfx = XGraphics.FromPdfPage(page);
// Draw the image watermark at the specified position and size
gfx.DrawImage(watermark, 50, 100, watermark.PixelWidth / 2, watermark.PixelHeight / 2);
}
// Save the modified PDF document
document.Save("watermarked.pdf");
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;
// Open the existing PDF document in modify mode
var document = PdfReader.Open("sample.pdf", PdfDocumentOpenMode.Modify);
// Load the watermark image
XImage watermark = XImage.FromFile("watermark.png");
foreach (var page in document.Pages)
{
// Create a graphics object from the page
XGraphics gfx = XGraphics.FromPdfPage(page);
// Draw the image watermark at the specified position and size
gfx.DrawImage(watermark, 50, 100, watermark.PixelWidth / 2, watermark.PixelHeight / 2);
}
// Save the modified PDF document
document.Save("watermarked.pdf");
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf.IO
' Open the existing PDF document in modify mode
Private document = PdfReader.Open("sample.pdf", PdfDocumentOpenMode.Modify)
' Load the watermark image
Private watermark As XImage = XImage.FromFile("watermark.png")
For Each page In document.Pages
' Create a graphics object from the page
Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
' Draw the image watermark at the specified position and size
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
gfx.DrawImage(watermark, 50, 100, watermark.PixelWidth / 2, watermark.PixelHeight / 2)
Next page
' Save the modified PDF document
document.Save("watermarked.pdf")

この方法では、画像透かしを固定位置とサイズで配置します。透明度の処理はPDFsharpの単一呼び出しAPIの範囲外であり、透明度制御が必要な開発者はXGraphicsパイプラインを介して直接管理します。 テキスト透かしの例と同様に、PDFsharpは、IronPDFのより高レベルの透かしAPIと比較して追加の設定が必要となるものの、レンダリングをきめ細かく制御できます。
IronPDFとPDFsharpの透かし機能の比較は?
使いやすさ
- IronPDF:最小限のコードでウォーターマークを簡略化する高レベルの機能を提供します。 * PDFSharp: グラフィックスAPIを使用して手動で実装する必要があり、複雑さと開発時間を増加させます。詳細な描画制御を必要とするが、追加のコーディングに抵抗がない開発者に適しています。
- PDFSharp: グラフィックスAPIを使用した手動実装が必要で、複雑さと開発時間が増加します。細かなレンダリング制御が必要な開発者により適していますが、追加のコーディングに慣れている必要があります。
パフォーマンス
- IronPDF:単一のNuGetパッケージとして提供され、不透明度、回転、位置を 1 つのメソッド呼び出しで処理する透かし操作により、複数ページのドキュメントに透かしを入れる際のページごとの処理オーバーヘッドを削減します。 大規模なワークフローについては、 IronPDFのパフォーマンス最適化ガイドを参照してください。
- PDFSharp:軽量で、依存関係も少ない。 ページごとに複数の変換処理を伴う複雑な透かし処理の場合、PDFsharpはこれらの操作を内部的にバッチ処理したりキャッシュしたりしないため、開発者は描画ロジックのプロファイリングと最適化を行う必要があるかもしれません。
カスタマイズオプション
- IronPDF:不透明度、回転、位置決定、フォントサイズのカスタマイズのための組み込みサポート。 * PDFSharp: 不透明度や透過効果、変換処理には追加のコーディングが必要。
強力であるが、開発者からは高度なカスタマイズが求められ、特定のレンダリングタスクのために
varフォーマットを使用することを含みます。 強力な反面、特定のレンダリング作業にvar形式を使用するなど、開発者により高度なカスタマイズが要求されます。
互換性
- IronPDF: .NET 6+、. .NET Core、 .NET Frameworkと完全に互換性があり、最新のアプリケーションやレガシーアプリケーションに適しています。
- PDFSharp: .NET Frameworkおよび.NET Core (PDFSharpCore経由)をサポートします。 選択したコミュニティポートによっては、一部の新しいフレームワーク機能が現在の範囲外となる場合があります。
ライセンスとコスト
- IronPDF:有料ライセンスが必要ですが、永続ライセンス オプション、カスタマー サポート、継続的な更新が含まれる商用製品です。
- PDFSharp:オープンソースで無料で使用できるため、無制限のライセンス モデルを希望するが、サポートと更新を独自に処理する意思のある開発者にとってコスト効率の高いソリューションとなります。
ライセンス費用以外にも、プロジェクトの総コストには、手動での座標ベースの位置決め、カスタムの不透明度と回転ロジック、およびIronPDFが単一のメソッド呼び出しで処理するページごとの描画コードに費やされた開発者の時間が含まれます。 複数年にわたるプロジェクトライフサイクル全体でコストを評価するチームにとって、これらの実装および保守にかかる時間は、オープンソースライセンスと商用ライセンスの差額をしばしば上回る。
どちらのライブラリを選ぶべきか?
簡単かつ効率的にPDFに透かしを追加する方法を求める開発者にとって、IronPDFは、ユーザーフレンドリーなAPIと組み込み機能により最良の選択です。
PDFsharpは、堅牢な低レベルの描画制御機能とオープンソースライセンスを提供しており、予算が限られているものの、透かしロジックをゼロから構築できる開発能力を持つチームにとって、真に有利な点となる。 ウォーターマークの位置決め、透明度、回転、HTML/CSSベースのスタイリングといった機能を必須とするチームにとって、 IronPDFは実装時間を短縮できるより包括的なAPIを提供します。最終的に最適な選択肢は、プロジェクトの要件、コーディングスキル、利用可能なリソースによって異なります。
今すぐIronPDFの無料トライアルをダウンロードして、C# PDF プロジェクトを次のレベルに引き上げる方法を実際に試してみてください。
よくある質問
どのようにして.NETライブラリを使用してPDFに透かしを追加できますか?
IronPDFを使用することで、透かしをPDFに追加できます。そのシンプルなAPIを利用して、透明度や回転を含むカスタマイズ可能なテキストおよび画像の透かしをサポートしています。
.NETのプレミアムPDFライブラリを使用して透かしを追加する利点は何ですか?
IronPDFのようなプレミアム.NET PDFライブラリは、透かしの簡単な追加、高度な.NETフレームワークとの互換性、PDF注釈やHTMLからPDFへの変換などの追加機能を提供します。
PDFドキュメントにおける透かしはなぜ重要ですか?
透かしは、文書のセキュリティ、ブランドの一貫性、バージョン管理のために重要です。不正な複製を防ぎ、ブランドの一貫性を確保し、機密扱い文書としてのマークをします。
PDFsharpとIronPDFのPDFにおける透かしの違いは何ですか?
IronPDFは少ないコードでの透かしの追加を容易にする直感的なAPIを提供していますが、PDFsharpは変換や透過設定のためにより多くの手動作業と追加のコーディングが必要です。
IronPDFはオープンソースの選択肢に比べてどのようにPDF操作を改善しますか?
IronPDFは高レベルの関数を内蔵しており、透かし、注釈、変換などのPDF操作を簡単に行えますが、PDFsharpのようなオープンソースではより複雑なコーディングが必要になります。
.NETライブラリを使用してPDFに追加できる透かしの種類は何ですか?
IronPDFのようなライブラリを使用すると、テキストの透かし、画像の透かし、透明な透かしを追加でき、位置、透明度、回転に関するカスタマイズが可能です。
IronPDFは大きなPDFドキュメントの処理に適していますか?
はい、IronPDFは高スピード処理に最適化されており、パフォーマンスの問題なく大きなPDFドキュメントを効率的に扱えます。
プレミアムとオープンソースの.NET PDFライブラリを選ぶ際に考慮するべき事は何ですか?
使いやすさ、利用可能な機能、互換性、パフォーマンス、サポートを考慮してください。IronPDFのようなプレミアムライブラリは豊富な機能とサポートを提供しますが、PDFsharpのようなオープンソースのライブラリは無料ですが、より複雑なコーディングが必要で公式サポートがありません。
IronPDFを.NET Coreで使用できますか?
はい、IronPDFは.NET 6+、.NET Core、そして.NET Frameworkと互換性があり、さまざまな開発環境で利用できます。
IronPDFは透かし以外にどのような機能を提供しますか?
透かし以外にも、IronPDFはPDFの注釈、HTMLからPDFへの変換、デジタル署名などをサポートし、包括的なPDF操作機能を提供します。



