チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»pdfnetwatermark

Displaying items by tag: pdfnetwatermark

画像透かしは通常、デジタルドキュメントの背景に表示されるロゴまたはサインであり、コンテンツの著作権所有者を示します。PDF ドキュメントに画像で透かしを入れると、データの再利用や変更を防ぐことができます。この記事では、Spire.PDF for .NET を使用して C# および VB.NET で PDF に画像透かしを追加する方法を示します。

Spire.PDF for .NET をインストールします

まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.PDF

PDF に画像透かしを追加する

以下は、PDF ドキュメントに画像透かしを追加するための主な手順です。

  • PdfDocument オブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してサンプル PDF ファイルをロードします。
  • Image.FromFile() メソッドを使用して画像ファイルをロードします。
  • ドキュメント内のページをループし、PdfDocument.Pages[] プロパティを介して特定のページを取得します。
  • PdfPageBase.BackgroundImage プロパティを使用して、画像を現在のページの背景/透かし画像として設定します。PdfPageBase.BackgroundRegion プロパティを使用して画像の位置とサイズを設定します。
  • PdfDocument.SaveToFile() メソッドを使用して、ドキュメントを別の PDF ファイルに保存します。
  • C#
  • VB.NET
using Spire.Pdf;
using System.Drawing;

namespace AddImageWatermark
{
    class Program
    {
        static void Main(string[] args)
        {
            //PdfDocumentオブジェクトを作成する
            PdfDocument document = new PdfDocument();

            //サンプルPDFドキュメントをロードする
            document.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");

            //画像を読み込む
            Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\logo.png");

            //画像の幅と高さを取得する
            int imgWidth = image.Width;
            int imgHeight = image.Height;

            //ページをループする
            for (int i = 0; i < document.Pages.Count; i++)
            {
                //ページの幅と高さを取得する
                float pageWidth = document.Pages[i].ActualSize.Width;
                float pageHeight = document.Pages[i].ActualSize.Height;

                //背景の不透明度を設定する
                document.Pages[i].BackgroudOpacity = 0.3f;

                //現在のページの背景画像を設定する
                document.Pages[i].BackgroundImage = image;

                //背景画像をページの中央に配置する
                Rectangle rect = new Rectangle((int)(pageWidth - imgWidth) / 2, (int)(pageHeight - imgHeight) / 2, imgWidth, imgHeight);
                document.Pages[i].BackgroundRegion = rect;
            }

            //ドキュメントをファイルに保存する
            document.SaveToFile("AddImageWatermark.pdf");
            document.Close();
        }
    }
}
Imports Spire.Pdf
Imports System.Drawing
 
Namespace AddImageWatermark
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'PdfDocumentオブジェクトを作成する
            Dim document As PdfDocument =  New PdfDocument() 
 
            'サンプルPDFドキュメントをロードする
            document.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf")
 
            '画像を読み込む
            Dim image As Image =  Image.FromFile("C:\Users\Administrator\Desktop\logo.png") 
 
            '画像の幅と高さを取得する
            Dim imgWidth As Integer =  image.Width 
            Dim imgHeight As Integer =  image.Height 
 
            'ページをループする
            Dim i As Integer
            For  i = 0 To  document.Pages.Count- 1  Step  i + 1
                'ページの幅と高さを取得する
                Dim pageWidth As single =  document.Pages(i).ActualSize.Width 
                Dim pageHeight As single =  document.Pages(i).ActualSize.Height 
 
                '背景の不透明度を設定する
                document.Pages(i).BackgroudOpacity = 0.3f
 
                '現在のページの背景画像を設定する
                document.Pages(i).BackgroundImage = image
 
                '背景画像をページの中央に配置する
                Dim rect As Rectangle =  New Rectangle(CType((pageWidth - imgWidth) / 2,(Integer)(pageHeight - imgHeight) / 2,imgWidth,imgHeight, Integer)) 
                document.Pages(i).BackgroundRegion = rect
            Next
 
            'ドキュメントをファイルに保存する
            document.SaveToFile("AddImageWatermark.pdf")
            document.Close()
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF に画像透かしを追加する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in 透かし
Tagged under

PDF ドキュメントが不正に使用されるのを防ぐために、テキストまたは画像でドキュメントに透かしを入れることができます。この記事では、Spire.PDF for .NET を使用して、C# および VB.NET の PDF にテキスト透かし(単一行および複数行の透かし)をプログラムで追加する方法を紹介します。

Spire.PDF for .NET をインストールします

まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.PDF

PDF にテキスト透かしを追加する

Spire.PDF は、PDF ファイルの透かしを処理するためのインターフェイスまたはクラスを提供していません。ただし、透かし効果を模倣するために、各ページに「機密」、「内部使用」、「ドラフト」などのテキストを描画することはできます。以下は、PDF ドキュメントのすべてのページにテキスト透かしを追加するための主な手順です。

  • PdfDocument オブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してサンプル PDF ドキュメントをロードします。
  • PdfTrueTypeFont オブジェクトを作成し、透かしテキストを指定し、PdfFontBase.MeasureString() メソッドを使用してテキストサイズを測定します。
  • ドキュメント内のすべてのページをトラバースします。
  • PdfPageBase.Canvas.TraslateTransform() メソッドを使用して指定した座標で特定のページの座標系を変換し、PdfPageBase.Canvas.RotateTransform() メソッドを使用して座標系を反時計回りに45度回転します。これにより、透かしがページの中央に45度の角度で表示されるようになります。
  • PdfPageBase.Canvas.DrawString() メソッドを使用して、ページに透かしテキストを描画します。
  • PdfDocument.SaveToFile() メソッドを使用して、ドキュメントを別の PDF ファイルに保存します。
  • C#
  • VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddTextWatermarkToPdf
{
    class Program
    {
        static void Main(string[] args)
        {
            //PdfDocumentオブジェクトを作成する
            PdfDocument pdf = new PdfDocument();

            //サンプルPDFドキュメントをロードする
            pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");

            //PdfTrueTypeFontオブジェクトを作成する
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 50f), true);

            //透かしテキストを設定する
            string text = "CONFIDENTIAL";

            //テキストサイズを測定する
            SizeF textSize = font.MeasureString(text);
            
            //座標系の平行移動量を計算するために使用される2つのオフセット変数の値を計算する
            float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4);
            float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4);

            //ドキュメント内のすべてのページをトラバースする
            foreach (PdfPageBase page in pdf.Pages)
            {
                //ページの透明度を設定する
                page.Canvas.SetTransparency(0.8f);

                //指定された座標で座標系を変換する
                page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2);

                //座標系を反時計回りに45度回転する
                page.Canvas.RotateTransform(-45);

                //ページに透かしテキストを描画する
                page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0);
            }

            //変更を別のファイルに保存する
            pdf.SaveToFile("TextWatermark.pdf");
        }
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
 
Namespace AddTextWatermarkToPdf
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'PdfDocumentオブジェクトを作成する
            Dim pdf As PdfDocument =  New PdfDocument() 
 
            'サンプルPDFドキュメントをロードする
            pdf.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf")
 
            'PdfTrueTypeFontオブジェクトを作成する
            Dim font As PdfTrueTypeFont =  New PdfTrueTypeFont(New Font("Arial",50f),True) 
 
            '透かしテキストを設定する
            Dim text As String =  "CONFIDENTIAL" 
 
            'テキストサイズを測定する
            Dim textSize As SizeF =  font.MeasureString(text) 
 
            '座標系の平行移動量を計算するために使用される2つのオフセット変数の値を計算する
            Dim offset1 As single = CType((textSize.Width * System.Math.Sqrt(2) / 4), single)
            Dim offset2 As single = CType((textSize.Height * System.Math.Sqrt(2) / 4), single)
 
            'ドキュメント内のすべてのページをトラバースする
            Dim page As PdfPageBase
            For Each page In pdf.Pages
                'ページの透明度を設定する
                page.Canvas.SetTransparency(0.8f)
 
                '指定された座標で座標系を変換する
                page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2)
 
                '座標系を反時計回りに45度回転する
                page.Canvas.RotateTransform(-45)
 
                'ページに透かしテキストを描画する
                page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0)
            Next
 
            '変更を別のファイルに保存する
            pdf.SaveToFile("TextWatermark.pdf")
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF にテキスト透かしを追加する方法

複数行のテキスト透かしを PDF に追加

ドキュメントに複数行のテキスト透かしを追加したい場合があります。 タイル透かし効果を実現するには、PdfTilingBrush クラスを使用できます。このクラスは、グラフィック領域を埋めるために繰り返されるタイルパターンを生成します。 以下は、PDF ドキュメントに複数行の透かしを追加するための主な手順です。

  • PdfDocument オブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してサンプル PDF ドキュメントをロードします。
  • カスタムメソッド InsertMultiLineTextWatermark(PdfPageBase page, String watermarkText, PdfTrueTypeFont font, int rowNum, int columnNum) を作成して、複数行のテキスト透かしを PDF ページに追加します。 パラメータ rowNum および columnNum は、タイル透かしの行番号と列番号を指定します。
  • ドキュメント内のすべてのページをトラバースし、カスタムメソッド InsertMultiLineTextWatermark() を呼び出して、各ページに透かしを適用します。
  • PdfDocument.SaveToFile() メソッドを使用して、ドキュメントを別のファイルに保存します。
  • C#
  • VB.NET
using System;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddMultiLineTextWatermark
{
    class Program
    {
        static void Main(string[] args)
        {
            //PdfDocumentインスタンスを作成する
            PdfDocument pdf = new PdfDocument();

            //サンプルPDFドキュメントをロードする
            pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");

            //PdfTrueTypeFontオブジェクトを作成する
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 20f), true);

            //すべてのページをトラバースする
            for (int i = 0; i < pdf.Pages.Count; i++)
            {
                //InsertMultiLineTextWatermark()メソッドを呼び出して、指定したページにテキスト透かしを追加する
                InsertMultiLineTextWatermark(pdf.Pages[i], "E-ICEBLUE CO LTD", font, 3, 3);
            }

            //ドキュメントを別のファイルに保存する
            pdf.SaveToFile("MultiLineTextWatermark.pdf");
        }

        //複数行のテキスト透かしをページに挿入するカスタムメソッドを作成する
        static void InsertMultiLineTextWatermark(PdfPageBase page, String watermarkText, PdfTrueTypeFont font, int rowNum, int columnNum)
        {
            //テキストサイズを測定する
            SizeF textSize = font.MeasureString(watermarkText);

            //座標系の移動量の計算に使用される2つのオフセット変数の値を計算する
            float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4);
            float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4);

            //タイルブラシを作成する
            PdfTilingBrush brush = new PdfTilingBrush(new SizeF(page.ActualSize.Width / columnNum, page.ActualSize.Height / rowNum));
            brush.Graphics.SetTransparency(0.3f);
            brush.Graphics.Save();
            brush.Graphics.TranslateTransform(brush.Size.Width / 2 - offset1 - offset2, brush.Size.Height / 2 + offset1 - offset2);
            brush.Graphics.RotateTransform(-45);

            //タイルブラシに透かしテキストを描画する
            brush.Graphics.DrawString(watermarkText, font, PdfBrushes.Violet, 0, 0);
            brush.Graphics.Restore();

            //タイルブラシを使用して(ページ全体をカバーする)長方形を描画する
            page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.ActualSize));
        }
    }
}
Imports System
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
 
Namespace AddMultiLineTextWatermark
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'PdfDocumentインスタンスを作成する
            Dim pdf As PdfDocument =  New PdfDocument() 
 
            'サンプルPDFドキュメントをロードする
            pdf.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf")
 
            'PdfTrueTypeFontオブジェクトを作成する
            Dim font As PdfTrueTypeFont =  New PdfTrueTypeFont(New Font("Arial",20f),True) 
 
            'すべてのページをトラバースする
            Dim i As Integer
            For  i = 0 To  pdf.Pages.Count- 1  Step  i + 1
                'InsertMultiLineTextWatermark()メソッドを呼び出して、指定したページにテキスト透かしを追加する
                InsertMultiLineTextWatermark(pdf.Pages(i), "E-ICEBLUE CO LTD", font, 3, 3)
            Next
 
            'ドキュメントを別のファイルに保存する
            pdf.SaveToFile("MultiLineTextWatermark.pdf")
        End Sub
 
        '複数行のテキスト透かしをページに挿入するカスタムメソッドを作成する
        Shared  Sub InsertMultiLineTextWatermark(ByVal page As PdfPageBase, ByVal watermarkText As String, ByVal font As PdfTrueTypeFont, ByVal rowNum As Integer, ByVal columnNum As Integer)
            'テキストサイズを測定する
            Dim textSize As SizeF =  font.MeasureString(watermarkText) 
 
            '座標系の移動量の計算に使用される2つのオフセット変数の値を計算する
            Dim offset1 As single = CType((textSize.Width * System.Math.Sqrt(2) / 4), single)
            Dim offset2 As single = CType((textSize.Height * System.Math.Sqrt(2) / 4), single)
 
            'タイルブラシを作成する
            Dim brush As PdfTilingBrush =  New PdfTilingBrush(New SizeF(page.ActualSize.Width / columnNum,page.ActualSize.Height / rowNum)) 
            brush.Graphics.SetTransparency(0.3f)
            brush.Graphics.Save()
            brush.Graphics.TranslateTransform(brush.Size.Width / 2 - offset1 - offset2, brush.Size.Height / 2 + offset1 - offset2)
            brush.Graphics.RotateTransform(-45)
 
            'タイルブラシに透かしテキストを描画する
            brush.Graphics.DrawString(watermarkText, font, PdfBrushes.Violet, 0, 0)
            brush.Graphics.Restore()
 
            'タイルブラシを使用して(ページ全体をカバーする)長方形を描画する
            page.Canvas.DrawRectangle(brush, New RectangleF(New PointF(0, 0), page.ActualSize))
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF にテキスト透かしを追加する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in 透かし
Tagged under