チュートリアル

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

チュートリアル».NET»Spire.PDF for .NET»文書操作»C#/VB.NET:PDF のレイヤーを追加、非表示、または削除する方法
2023-01-31

C#/VB.NET:PDF のレイヤーを追加、非表示、または削除する方法

PDF レイヤー機能は、PDF ファイルのコンテンツをレイヤーに配置することをサポートします。 ユーザーは、同じ PDF ファイル内で一部のコンテンツを表示するように設定し、一部のコンテンツを非表示にするように選択的に設定できます。PDF レイヤーは、レイヤー化されたアートワーク、地図、および CAD 図面で使用される一般的な要素です。この記事では、Spire.PDF for .NET を使用してPDF のレイヤーを追加、非表示、または削除する方法を紹介します。

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

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

PM> Install-Package Spire.PDF

C# と VB.NET で PDF のレイヤーを追加する

Spire.PDF for.NET が提供する PdfDocument.Layers.AddLayer() メソッドでは、PDF にレイヤーの追加をサポートします。PDF レイヤー上にテキスト、線、画像、または形状を描画できます。以下に詳細な操作手順を示します。

  • PdfDocument インスタンスを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用してサンプル PDF ドキュメントをロードします。
  • PdfDocument.Layers.AddLayer(string) メソッドを使用して、指定した名前のレイヤーを PDF に追加します。
  • PdfDocument.Layers.AddLayer(string, PdfVisibility) メソッドを使用して、レイヤーを追加するときにレイヤーの可視性を設定します。
  • PdfLayer.CreateGraphics() メソッドを使用してレイヤーのキャンバスを作成します。
  • キャンバスにテキスト、画像、またはその他の要素を描画します。
  • PdfDocument.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Graphics.Layer;
using System.Drawing;

namespace AddLayersToPdf
{
    class Program
    {
        static void Main(string[] args)
        {
            //PdfDocumentインスタンスを作成し、サンプルPDFをロードする
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile(@"Sample.pdf");

            //AddLayerWatermark メソッドを使用して透かしのレイヤーを追加する
            AddLayerWatermark(pdf);

            //AddLayerHeaderメソッドを使用してヘッドーのレイヤーを追加する
            AddLayerHeader(pdf);

            //結果ドキュメントを保存する
            pdf.SaveToFile("AddLayers.pdf");
            pdf.Close();
        }

        private static void AddLayerWatermark(PdfDocument doc)
        {
            //「透かし」という名前のレイヤーを作成する
            PdfLayer layer = doc.Layers.AddLayer("透かし");

            //フォントを作成する
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Mincho", 48), true);

            //透かしのテキストを指定する
            string watermarkText = "機密";

            //テキストのサイズを取得する
            SizeF fontSize = font.MeasureString(watermarkText);

            //2つのオフセットを計算する
            float offset1 = (float)(fontSize.Width * System.Math.Sqrt(2) / 4);
            float offset2 = (float)(fontSize.Height * System.Math.Sqrt(2) / 4);

            //ページ数を取得する
            int pageCount = doc.Pages.Count;

            //2つの変数を宣言する
            PdfPageBase page;
            PdfCanvas canvas;

            //ページをループする
            for (int i = 0; (i < pageCount); i++)
            {
                page = doc.Pages[i];

                //レイヤーにキャンバスを作成する
                canvas = layer.CreateGraphics(page.Canvas);
                canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2);
                canvas.SetTransparency(0.4f);
                canvas.RotateTransform(-45);

                //レイヤーのキャンバスに文字列を描画する
                canvas.DrawString(watermarkText, font, PdfBrushes.DarkBlue, 0, 0);
            }
        }
        private static void AddLayerHeader(PdfDocument doc)
        {
            //「ヘッダー」という名前のレイヤーを作成する
            PdfLayer layer = doc.Layers.AddLayer("ヘッダー");

            //ページのサイズを取得する
            SizeF size = doc.Pages[0].Size;

            //XとYの初期値を指定する
            float x = 90;
            float y = 40;

            //ページ数を取得する
            int pageCount = doc.Pages.Count;

            //2つの変数を宣言する 
            PdfPageBase page;
            PdfCanvas canvas;

            //ページをループする
            for (int i = 0; (i < pageCount); i++)
            {
                //レイヤーに画像を描画する
                PdfImage pdfImage = PdfImage.FromFile(@"image.jpg");
                float width = pdfImage.Width;
                float height = pdfImage.Height;
                page = doc.Pages[i];
                canvas = layer.CreateGraphics(page.Canvas);
                canvas.DrawImage(pdfImage, x, y, width, height);

                //レイヤーに線を描画する
                PdfPen pen = new PdfPen(PdfBrushes.DarkGray, 2);
                canvas.DrawLine(pen, x, (y + (height + 5)), (size.Width - x), (y + (height + 2)));
            }
        }
    }
} 
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Graphics.Layer
Imports System.Drawing

Namespace AddLayersToPdf
    Class Program
        Private Shared Sub Main(ByVal args As String())
            'PdfDocumentインスタンスを作成し、PDFをロードする
            Dim pdf As PdfDocument = New PdfDocument()
            pdf.LoadFromFile("Sample.pdf")

            'AddLayerWatermark メソッドを使用して透かしのレイヤーを追加する
            Program.AddLayerWatermark(pdf)

            'AddLayerHeaderメソッドを使用してヘッドのレイヤーを追加する
            Program.AddLayerHeader(pdf)

            '結果ドキュメントを保存する
            pdf.SaveToFile("AddLayers.pdf")
            pdf.Close()
        End Sub

        Private Shared Sub AddLayerWatermark(ByVal doc As PdfDocument)
            '「透かし」という名前のレイヤーを作成する
            Dim layer As PdfLayer = doc.Layers.AddLayer("透かし")

            'フォントを作成する
            Dim font As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("Yu Mincho", 48), True)

            '透かしのテキストを指定する
            Dim watermarkText = "機密"

            'テキストのサイズを取得する
            Dim fontSize As SizeF = font.MeasureString(watermarkText)

            '2つのオフセットを計算する
            Dim offset1 As Single = fontSize.Width * Math.Sqrt(2) / 4
            Dim offset2 As Single = fontSize.Height * Math.Sqrt(2) / 4

            'ページ数を取得する
            Dim pageCount As Integer = doc.Pages.Count

            '2つの変数を宣言する
            Dim page As PdfPageBase
            Dim canvas As PdfCanvas

            'ページをループする
            Dim i = 0

            While i < pageCount
                page = doc.Pages(i)

                'レイヤーにキャンバスを作成する
                canvas = layer.CreateGraphics(page.Canvas)
                canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2)
                canvas.SetTransparency(0.4F)
                canvas.RotateTransform(-45)

                'レイヤーのキャンバスに文字列を描画する
                canvas.DrawString(watermarkText, font, PdfBrushes.DarkBlue, 0, 0)
                i += 1
            End While
        End Sub
        Private Shared Sub AddLayerHeader(ByVal doc As PdfDocument)
            '「ヘッダー」という名前のレイヤーを作成する
            Dim layer As PdfLayer = doc.Layers.AddLayer("ヘッダー")

            'ページのサイズを取得する
            Dim size As SizeF = doc.Pages(0).Size

            'XとYの初期値を指定する
            Dim x As Single = 90
            Dim y As Single = 40

            'ページ数を取得する
            Dim pageCount As Integer = doc.Pages.Count

            '2つの変数を宣言する 
            Dim page As PdfPageBase
            Dim canvas As PdfCanvas

            'ページをループする
            Dim i = 0

            While i < pageCount
                'レイヤーに画像を描画する
                Dim pdfImage As PdfImage = PdfImage.FromFile("image.jpg")
                Dim width As Single = pdfImage.Width
                Dim height As Single = pdfImage.Height
                page = doc.Pages(i)
                canvas = layer.CreateGraphics(page.Canvas)
                canvas.DrawImage(pdfImage, x, y, width, height)

                'レイヤーに線を描画する
                Dim pen As PdfPen = New PdfPen(PdfBrushes.DarkGray, 2)
                canvas.DrawLine(pen, x, y + (height + 5), size.Width - x, y + (height + 2))
                i += 1
            End While
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF のレイヤーを追加、非表示、または削除する方法

C# と VB.NET で PDF のレイヤーの可視性を設定する

既存のレイヤーの可視性を設定するには、PdfDocument.Layers プロパティを使用して、インデックスまたは名前で指定したレイヤーを取得します。次に、PdfLayer.Visibility プロパティを使用してレイヤーを表示または非表示にします。以下に詳細な操作手順を示します。

  • PdfDocument インスタンスを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用してサンプル PDF をロードします。
  • PdfDocument.Layers.Visibility プロパティを使用して、指定したレイヤーの可視性を設定します。
  • PdfDocument.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics.Layer;

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

            //サンプルPDFドキュメントをロードする
            pdf.LoadFromFile("AddLayers.pdf");

            //指定したレイヤーをインデックスで非表示にする
            pdf.Layers[0].Visibility = PdfVisibility.Off;

            //指定したレイヤーを名前で非表示にする
            //pdf.Layers["Watermark"].Visibility = PdfVisibility.Off;

            //結果ドキュメントを保存する
            pdf.SaveToFile("HideLayer.pdf");
        }
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics.Layer

Namespace HideLayer
    Class Program
        Private Shared Sub Main(ByVal args() As String)

            'PdfDocumentインスタンスを作成する
            Dim pdf As PdfDocument = New PdfDocument

            'サンプルPDFドキュメントをロードする
            pdf.LoadFromFile("AddLayers.pdf")

            '指定したレイヤーをインデックスで非表示にする
            pdf.Layers(0).Visibility = PdfVisibility.Off

            '指定したレイヤーを名前で非表示にする
            'pdf.Layers["Watermark"].Visibility = PdfVisibility.Off;

            '結果ドキュメントを保存する
            pdf.SaveToFile("HideLayer.pdf")
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF のレイヤーを追加、非表示、または削除する方法

C# とVB.NET で PDF のレイヤーを削除する

Spire.PDF for .NET では、PdfDocument.Layers.RemoveLayer(string) メソッドを使用して、既存のレイヤーを名前で削除することがサポートします。ただし、同名の PDF レイヤーが存在する場合があります。このメソッドは、同じ名前のすべての PDF レイヤーを削除します。詳細な手順は次のとおりです。

  • PdfDocument インスタンスを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用して、PDF ドキュメントをロードします。
  • PdfDocument.Layers.RemoveLayer(string) メソッドを使用して、指定したレイヤーを名前で削除します。
  • PdfDocument.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Pdf;

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

            //PDFドキュメントをロードする
            pdf.LoadFromFile("AddLayers.pdf");

            //名前でレイヤーを削除する
            pdf.Layers.RemoveLayer(("透かし"));

            //結果ドキュメントを保存する
            pdf.SaveToFile("DeleteLayer.pdf", FileFormat.PDF);
        }
    }
}
Imports Spire.Pdf

Namespace DeleteLayer
    Class Program
        Private Shared Sub Main(ByVal args() As String)
            'PdfDocumentインスタンスを作成する
            Dim pdf As PdfDocument = New PdfDocument

            'PDFドキュメントをロードする
            pdf.LoadFromFile("AddLayers.pdf")

            '名前でレイヤーを削除する
            pdf.Layers.RemoveLayer("透かし")

            '結果ドキュメントを保存する
            pdf.SaveToFile("DeleteLayer.pdf", FileFormat.PDF)
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF のレイヤーを追加、非表示、または削除する方法

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

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

Read 972 times