PDF レイヤー機能は、PDF ファイルのコンテンツをレイヤーに配置することをサポートします。 ユーザーは、同じ PDF ファイル内で一部のコンテンツを表示するように設定し、一部のコンテンツを非表示にするように選択的に設定できます。PDF レイヤーは、レイヤー化されたアートワーク、地図、および CAD 図面で使用される一般的な要素です。この記事では、Spire.PDF for .NET を使用してPDF のレイヤーを追加、非表示、または削除する方法を紹介します。 PDF のレイヤーを追加する PDF のレイヤーの可視性を設定する 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 のレイヤーの可視性を設定する 既存のレイヤーの可視性を設定するには、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 のレイヤーを削除する 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 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。