フッターコンテンツにスキップ
製品比較

PDFsharpでPDFに透かしを追加するための最良の代替案を探る

PDFに透かしを追加することは、ドキュメントのセキュリティ、ブランド化、バージョン管理のための一般的な要件です。 機密文書としてマークを付ける、公式報告書にブランド化する、あるいは無許可の複製を防止するために、透かしは必要不可欠な機能です。

In C#, developers have multiple libraries to choose from, with IronPDF and PDFSharp being two of the most popular options. しかし、それらのアプローチ、使いやすさ、パフォーマンス、ライセンス構造は大きく異なります。 この記事では、既存のPDFに透かしを追加するためのIronPDFとPDFSharpの詳細な比較を提供し、それぞれの機能、実装プロセス、およびカスタマイズ機能についての洞察を提供します。

この記事の終わりまでに、使いやすさ、パフォーマンス、機能の可用性に基づいて、どのライブラリがあなたのプロジェクトのニーズに最適かを明確に理解できるようになります。

PDF透かしの理解

透かしとは何ですか?

透かしは、識別子、抑止要素、またはブランド要素として機能するドキュメント上のグラフィカルまたはテキストのオーバーレイです。 透かしは、その目的に応じて、可視または不可視の場合があります。

透かしの種類

  • テキスト透かし – 通常は「CONFIDENTIAL」や「DRAFT」のようなメッセージを伴う半透明のオーバーレイです。
  • イメージ透かし – ドキュメントに埋め込まれたロゴ、エンブレム、またはグラフィックス。
  • 透明な透かし – ドキュメントの可読性を妨げない微妙なブランドマーク。
  • スタンプ透かし – 見やすさを確保するためのより目立つ太字のマーキング。

一般的な使用例

  • セキュリティと保護 – 文書を専有として表示し、無許可の複製を防ぎます。
  • ブランディング – 企業のロゴや署名を追加して、文書全体でブランドの一貫性を維持します。
  • バージョン管理 – 草稿、最終版、または文書の改訂をラベル付けします。

IronPDFとPDFSharpの概要

IronPDF

IronPDFは、PDF処理を簡素化するために設計されたプレミアムで豊富な機能を持つ.NETライブラリです。 特に、透かしを含むPDF操作タスクを簡単に実装したい開発者にとって便利です。

主な機能:

  • 最小のコードで済むシンプルで直感的なAPI。
  • カスタマイズオプションを備えたテキストおよびイメージ透かしをサポート。
  • 正確な配置のための不透明度の制御、位置調整、回転を提供。
  • .NET 6+, .NET Core, および .NET Frameworkに対応。
  • 長期使用に適した永久ライセンスモデルを提供。
  • Additional capabilities include PDF annotations, HTML-to-PDF conversion, and digital signatures.

PDFsharp

PDFsharpは、C#でPDFを作成、編集、操作するためのオープンソースのライブラリです。 柔軟性は高いですが、透かし追加にはIronPDFに比べてより手作業が必要です。

主な機能:

  • 無料でオープンソースであり、予算を意識したプロジェクトにとってコスト効果の高い選択肢です。
  • PDFの描画操作において、アウトライン付きのグラフィカルパスや透明なグラフィカルパスのいずれも含む低レベルの制御を提供します。
  • テキストとイメージの透かしをサポートしますが、変換のために追加のコードが必要です。
  • .NET Frameworkと.NET Core(PDFSharpCore経由)で動作します。
  • 高レベルの透かし機能が組み込まれておらず、不透明度や回転のような機能を手作業で実装する必要があります。

IronPDFによる透かしの追加

IronPDFは、数行のコードで透かしを効率的に適用するためのシンプルなAPIを提供しており、PDFの透かしタスクを効率的に簡素化し、複雑または手動のセットアップを必要としません。 IronPDFの透かしツールは、以下に示すように、透かしにHTML/CSS文字列を使用することができ、透かしの表示方法を完全に制御することができます。

テキスト透かしの例

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")
$vbLabelText   $csharpLabel

PDFsharpへの透かし追加のベストな代替案を探る:Figure 3 - テキスト透かしの出力

このコード例では、IronPDFを使用して既存のPDFファイルに透かしを適用するのがいかに簡単かを示しています。 ここでは、FromFileメソッドを使用して既存のPDFをロードします。 次に、透かしとしてHTML要素としてフォーマットされた単純な文字列を作成し、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")
$vbLabelText   $csharpLabel

PDFsharpに透かしを追加するための最良の代替案を探る:Figure 4

テキストと同様に、イメージを透かしとして追加することも同様に簡単です。両方とも同じメソッドを使用します。 テキストの例と同様に、イメージのURLを指すHTMLイメージタグを含む新しい透かし文字列変数を作成して適用します。 今回は、回転と不透明度のカスタマイズを含めました。

このアプローチでは、指定された位置にイメージの透かしを重ね、カスタム配置と透過性を可能にします。

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")
$vbLabelText   $csharpLabel

この実装は、各ページに透かしを手動で描画し、正確な位置決めとカスタマイズが必要です。 IronPDFの例と同様の出力を処理できる能力を持ちますが、PDFsharpはより多くのコードと複雑な方法を必要とし、既存のコンテンツや新しい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");
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")
$vbLabelText   $csharpLabel

PDFsharpに透かしを追加するための最良の代替案を探る:Figure 6

この方法はイメージの透かしを配置しますが、IronPDFとは異なり、不透明度の処理は別で管理する必要があります。 テキストの透かしの例と同様に、既存のPDFにイメージベースの透かしをPDFsharpで適用するには、IronPDFの簡素化された透かしAPIに比べて、より込み入った大掛かりなセットアップが必要です。 ## 透かし付けでIronPDFとPDFsharpを比較する

  • IronPDF: 最小のコードで済む高レベルの機能を提供し、透かしの作成を簡単にします。

使いやすさ

複雑な操作を抽象化し、迅速で効率的な解決策を必要とする開発者に最適です。 * PDFSharp: グラフィックスAPIを使用して手動で実装する必要があり、複雑さと開発時間を増加させます。詳細な描画制御を必要とするが、追加のコーディングに抵抗がない開発者に適しています。

  • IronPDF: 高速のPDF処理に最適化されており、大型ドキュメントを効率的に処理でき、パフォーマンスの低下はほとんどありません。

パフォーマンス

  • PDFSharp: 軽量である一方、大型のPDFを処理するには追加の最適化が必要になる場合があります。 複数の変換を伴う複雑な透かしタスクは、IronPDFに比べてより遅くなることがあります。 * IronPDF: 不透明度、回転、位置調整、フォントサイズのカスタマイズをサポート。

カスタマイズオプション

複雑なレンダリングロジックに立ち入らずに簡単に設定を調整できます。 PDFSharp: 不透明度や透過効果、変換処理には追加のコーディングが必要。 強力であるが、開発者からは高度なカスタマイズが求められ、特定のレンダリングタスクのためにvarフォーマットを使用することを含みます。 IronPDF: .NET 6+, .NET Core, および .NET Frameworkに完全に互換性があり、モダンかつレガシーなアプリケーションにも適合。

互換性

  • PDFSharp: .NET Frameworkと.NET Core(PDFSharpCore経由)をサポートしますが、新しいフレームワークで利用できる特定のモダンな機能が欠けている可能性があります。
  • IronPDF: 有料のライセンスが必要な商用製品でありながら、永久ライセンスオプション、カスタマーサポート、継続的な更新を含む。

ライセンスとコスト

  • PDFSharp: オープンソースで無料で利用でき、制限のないライセンスモデルを好むものの、独自のサポートと更新を扱うことを厭わない開発者にとってコスト効率の良いソリューションです。 PDFsharpに透かしを追加するための最良の代替案を探る:Figure 7

結論

簡単かつ効率的にPDFに透かしを追加する方法を求める開発者にとって、IronPDFは、ユーザーフレンドリーなAPIと組み込み機能により最良の選択です。

ただし、予算の制約がある場合で追加のコードを書いても気にならない場合は、PDFSharpは堅実なオープンソースの代替案です。最終的に、最適な選択はプロジェクトの要件、コーディングの専門知識、利用可能なリソースに依存します。 IronPDFを自分自身で試してみて、無料トライアルをダウンロードして、それがあなたのC# PDFプロジェクトをどのように次のレベルに引き上げるかを探求してください!

Try IronPDF out for yourself by downloading the free trial and exploring how it can take your C# PDF projects to the next level today!

ご注意PDFsharpはその所有者の登録商標です。 このサイトはPDFsharpと提携しておらず、承認や後援を受けていません。すべての製品名、ロゴ、ブランドはそれぞれの所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

よくある質問

どのようにして.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操作機能を提供します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。