C# 操作PDF 圖層(Layer)—新增、刪除圖層、設定圖層可見性

neuyu發表於2021-09-09

前言

透過新增圖層,我們可以將文字、圖片、表格、圖形等元素精確定位於頁面指定位置,將這些元素進行疊放、組合形成頁面的最終效果。此外,對於頁面中已有的圖層我們也可以進行設定圖層可見性、刪除圖層等操作。在本篇文章中,將介紹如何在C#中進行PDF圖層的操作。

要點概括

1.新增圖層

  • 線條

  • 圖形

  • 影像

  • 字串

2.設定圖層隱藏、顯示

2.1 指定單個圖層可見性

  • 透過索引值指定

  • 透過圖層名稱指定

2.2 設定所有圖層可見性

3.刪除圖層


工具使用

  • Visual Studio


程式碼操作

一、 新增圖層

我們透過使用Spire.PDF新增圖層,支援新增線條、影像、字串、餅圖、橢圓形、矩形和多邊形等多種型別的圖層。

圖片描述

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing; 
namespace AddLayers_PDF
{ 
   class Program 
      {     
         static void Main(string[] args)     
            {            
            //新建PDF文件,新增一頁            
            PdfDocument pdf = new PdfDocument();            
            PdfPageBase page = pdf.Pages.Add();             
            
            //新增一個線條圖層,設定為不可見            
            PdfPageLayer layer = page.PageLayers.Add("Line", true);            
            
            //在頁面指定位置新增指定長度的線條,並設定線條顏色、粗細等格式            
            layer.Graphics.DrawLine(new PdfPen(PdfBrushes.Blue, 1), new PointF(0, 0), new PointF(0, 200)); //這裡可根據需要新增多條線條             
            
            //向頁面新增一個名為“橢圓”的圖層,設定圖層為不可見            
            layer = page.PageLayers.Add("橢圓", true);            
            
            //設定圖形顏色、線條粗細            
            PdfPen pen = new PdfPen(Color.Yellow, 2.5f);            
            
            //填充圖形內部顏色,並在頁面指定位置新增指定大小的橢圓形圖形            
            PdfBrush brush = new PdfSolidBrush(Color.White);            
            layer.Graphics.DrawEllipse(pen, brush, 240, 200, 60,20);             
           
            //新增一個圖片圖層,並命名圖層為“Image Layer”            
            layer = page.PageLayers.Add("Image Layer");            
           
            //載入圖片,在頁面指定位置新增該圖片作為圖層並設定影像的大小            
            layer.Graphics.DrawImage(PdfImage.FromFile("image.png"), 200, 230, 150, 185);             
          
            //新增字串型別的圖層,並命名為“String Layer”            
            layer = page.PageLayers.Add("String Layer");            
           
            //向頁面指定位置繪如文字,並設定字型、字號、顏色等格式            
            layer.Graphics.DrawString("OH~IT'S SO GOOD! RIGHT? n LET'S GET STARTED!n COME ON, GUYS!", new PdfFont(PdfFontFamily.TimesRoman, 12), new PdfPen(PdfBrushes.MediumVioletRed, 1), 45, 250);             
          
            //儲存並開啟文件            
            pdf.SaveToFile("AddLayers.pdf", FileFormat.PDF);            
            System.Diagnostics.Process.Start("AddLayers.pdf");       
          }   
     }
}

新增效果:

圖片描述


二、設定圖層隱藏、顯示

(一)設定單個圖層的隱藏、顯示

using Spire.Pdf;
using Spire.Pdf.Graphics.Layer; 
namespace HideOrShowLayer_PDF
{  
  class Program  
    {      
      static void Main(string[] args)     
         {               
         //例項化PdfDocument類,載入文件               
         PdfDocument doc = new PdfDocument("AddLayers.pdf");   
                                 
         //設定圖層可見屬性為Off,透過索引值來隱藏第3個圖層                
         //doc.Layers[2].Visibility = PdfVisibility.Off;                 
         
         //設定圖層可見屬性為Off,透過圖層名稱來隱藏圖層                
         doc.Layers["String Layer"].Visibility = PdfVisibility.Off;   
                       
         //儲存並開啟文件                
         doc.SaveToFile("HideLayer0.pdf");                
         System.Diagnostics.Process.Start("HideLayer0.pdf");                 
           }  
      }
 }

測試結果:

1.透過“索引值”來隱藏圖層的效果

圖片描述

2.透過圖層名稱來隱藏圖層的效果

圖片描述

(二)設定全部圖層的隱藏、顯示

using System;
using Spire.Pdf;
using Spire.Pdf.Graphics.Layer; 
namespace ShowLayer_PDF
{  
  class Program  
    {      
      static void Main(string[] args)      
        {            
        //建立PdfDocument類物件,載入pdf測試文件            
        PdfDocument doc = new PdfDocument("AddLayers.pdf");                       
        //遍歷文件中的所有圖層,            
        for (int i = 0; i < doc.Layers.Count; i++)            
         {                
           //顯示所有圖層                
           //doc.Layers[i].Visibility = PdfVisibility.On;                 
           
           //隱藏所有圖層                
           doc.Layers[i].Visibility = PdfVisibility.Off;          
          }                
        
        //儲存並開啟文件                
        doc.SaveToFile("HideAllLayers.pdf");                
        System.Diagnostics.Process.Start("HideAllLayers.pdf");       
      }   
    }
 }

測試結果:

圖片描述

三、刪除圖層

using Spire.Pdf; 
namespace DeleteLayer_PDF
{  
  class Program  
    {      
      static void Main(string[] args)      
        {            
        //建立一個PdfDocument類物件,載入包含多個圖層的PDF文件            
        PdfDocument doc = new PdfDocument();            
        doc.LoadFromFile("AddLayers.pdf");             
        
        //呼叫方法RemoveLayer()刪除名為“Line”的圖層            
        doc.Layers.RemoveLayer(("Line"));             
        
        //儲存並開啟文件            
        doc.SaveToFile("DeleteLayer.pdf", FileFormat.PDF);            
        System.Diagnostics.Process.Start("DeleteLayer.pdf");      
      }   
   }
}

測試結果:

圖片描述


(本文完)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4550/viewspace-2823147/,如需轉載,請註明出處,否則將追究法律責任。

相關文章