为了账号安全,请及时绑定邮箱和手机立即绑定

C# 操作PDF 图层(Layer)—添加、删除图层、设置图层可见性

标签:
C# .NET

前言

通过添加图层,我们可以将文本、图片、表格、图形等元素精确定位于页面指定位置,将这些元素进行叠放、组合形成页面的最终效果。此外,对于页面中已有的图层我们也可以进行设置图层可见性、删除图层等操作。在本篇文章中,将介绍如何在C#中进行PDF图层的操作。

要点概括

1.添加图层

  • 线条

  • 图形

  • 图像

  • 字符串

2.设置图层隐藏、显示

2.1 指定单个图层可见性

  • 通过索引值指定

  • 通过图层名称指定

2.2 设置所有图层可见性

3.删除图层


工具使用


代码操作

一、 添加图层

我们通过使用Spire.PDF添加图层,支持添加线条、图像、字符串、饼图、椭圆形、矩形和多边形等多种类型的图层。

https://img1.sycdn.imooc.com//5d11c2e1000180c005850450.jpg

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");       
          }   
     }
}

添加效果:

https://img1.sycdn.imooc.com//5d11c3ad000141b307570426.jpg


二、设置图层隐藏、显示

(一)设置单个图层的隐藏、显示

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.通过“索引值”来隐藏图层的效果

https://img1.sycdn.imooc.com//5d11c43d0001cde105400367.jpg

2.通过图层名称来隐藏图层的效果

https://img1.sycdn.imooc.com//5d11c44a000112fc06170387.jpg

(二)设置全部图层的隐藏、显示

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");       
      }   
    }
 }

测试结果:

https://img1.sycdn.imooc.com//5d11c5160001aa9d03580327.jpg

三、删除图层

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");      
      }   
   }
}

测试结果:

https://img1.sycdn.imooc.com//5d11c5cf000140c406170344.jpg


(本文完)

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
9
获赞与收藏
48

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消