`

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

阅读更多

前言

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

 

要点概括

1.添加图层

  • 线条
  • 图形
  • 图像
  • 字符串

2.设置图层隐藏、显示

 

   2.1 指定单个图层可见性

  •    通过索引值指定
  •    通过图层名称指定

    2.2 设置所有图层可见性

3.删除图层

 

工具使用

代码操作

一、添加图层

 

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



 

【C#】

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

 

添加效果:



 

二、设置图层隐藏、显示

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

 

【C#】

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.通过图层名称来隐藏图层的效果



 

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

 

【C#】

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

 测试结果:



 

三、删除图层

 

【C#】

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

 

测试结果:




 

阅读结束! 

 

  • 大小: 41.9 KB
  • 大小: 208.4 KB
  • 大小: 43.5 KB
  • 大小: 140.1 KB
  • 大小: 24.5 KB
  • 大小: 163.1 KB
0
0
分享到:
评论

相关推荐

    ArcGIS_Engine_VS2010_C#添加图层

    本文将详细介绍如何在Visual Studio 2010环境中使用C#语言为ArcGIS Engine应用程序添加和删除图层。 #### 二、环境搭建 1. **启动 Visual Studio 2010**: - 打开Visual Studio 2010,进入主界面。 - 点击“新建...

    C# arcengine 图层操作

    3. 图层可见性控制:通过设置ILayer.Visible属性,可以控制图层是否在地图上显示。 ```csharp featureLayer.Visible = true; // 图层可见 featureLayer.Visible = false; // 图层隐藏 ``` 4. 图层顺序调整:图层在...

    c#开发的CAD图层管理器

    4. **图层操作**:包括创建新图层、删除图层、切换图层可见性、复制图层、重命名图层等。这些操作需要处理好AutoCAD对象之间的引用关系,确保图层操作的正确性和安全性。 5. **用户界面(UI)设计**:图层管理器...

    arcengine内存图层创建(全)

    设置图层的名称、可见性等属性。 4. 将数据集添加到图层:将创建的IGeometry对象绑定到图层的数据源,如IFeatureLayer的FeatureClass属性。 5. 添加图层到地图:使用IMap接口的AddLayer方法将内存图层添加到地图中,...

    ArcGIS-Engine基础开发教程(C#)C#二次开发ArcGis.pdf

    - 改变图层的可见性。 - 对地图进行缩放和平移操作。 **1.8 体验使用编辑功能** - 实际操作地图编辑功能,如添加新图层、修改图层属性等。 --- #### 2. 学习几何对象与空间参考 **2.1 目标** - 掌握ArcGIS中的...

    一个图层实现不同比例尺显示不同级别的对象的标签

    首先,我们需要了解SuperMap .NET API,它为开发者提供了丰富的GIS功能,包括地图操作、图层管理、空间分析等。在这个案例中,我们主要关注图层(Layer)和标签(Label)的相关类和方法。 1. **图层与比例尺**: ...

    各种基于Arcengine的利用c#实现的功能:绘制图形,加载各类地图等

    "移动图层"则涉及图层的排序和可见性设置。通过IMap的Layers属性,我们可以访问图层集合,并对它们进行重新排序。此外,利用ILayer的Visible属性,可以控制图层是否可见,从而提供更灵活的地图展示。 总结一下,这...

    Arcengine显示图层属性

    4. **显示属性**:用于控制图层在地图上的显示效果,如透明度、可见性等。 5. **符号化属性**:设置图层的符号化方案,包括颜色、大小、样式等。 6. **字段属性**:列出图层中的所有字段及其属性。 7. **定义查询...

    arcgis server 9.2代码阅读笔记二:在页面上动态加载图层

    3. **动态图层加载**:通过设置MapServiceLayer的可见性属性,可以在需要时加载或隐藏图层。例如,你可以使用`layer.setVisible(true/false)`方法控制图层的显示状态。 4. **事件监听**:利用API中的事件处理机制,...

    ArcGIS+C#例子

    1. 地图基本操作:这通常涉及加载地图数据、缩放、平移、旋转地图视图以及管理图层的可见性。在ArcGIS中,开发者可以使用C# API来实现这些功能,如创建Map对象、添加Layer到Map、控制Layer的显示和隐藏等。 2. 鹰眼...

    c# sharpMap 例子

    你可以通过`Layer`类来创建和管理这些图层,每个图层有自己的属性,如图层名称、可见性、透明度等。 3. **地图渲染**:SharpMap使用GDI+(图形设备接口)进行地图渲染。`Map`类是地图的核心对象,包含了地图的所有...

    C# + ARCGis Engine基础教程

    2. 第二部分可能会讲解如何加载地图数据,包括矢量和栅格数据,并演示如何管理图层的可见性。 3. 第三至五部分可能涉及地图导航、查询和筛选数据、以及添加交互式功能,如地图标注、测量距离和面积。 4. 最后一部分...

    c# mapx 属性表的连接 属性与地图互查 鹰眼 鼠标滚轮 地图基本操作

    MapX允许动态加载和控制图层的可见性。通过设置Layer对象的Visible属性,可以切换图层的显示状态。此外,还可以根据需要动态加载新的图层数据,以实现交互式地图应用。 7. **代码示例** 在实际开发中,可以参考...

    mapxtreme c#练习笔记

    3. **图层可见性控制**: 使用CheckBox控件可以轻松管理图层的可见性。当CheckBox的状态改变时,可以通过`Map.Layers`集合访问对应的图层,并设置其`Enabled`属性,以决定图层是否在地图上显示。 4. **地图保存为...

    ArcEngine+C#二次开发教程_3SDN(pdf格式)

    3. 数据加载与管理:通过IWorkspace接口加载地理数据库,使用IMap的AddLayer方法添加图层到地图,管理数据源和图层的可见性。 4. 地图操作:利用IMap接口实现缩放、平移、旋转等地图操作。 5. 图形绘制:通过...

    用MapX与C#开发地理信息系统(电子书 实现部分)

    地图的缩放、平移和图层的可见性控制都是通过MapX API实现的。 5. **数据投影**:MapX支持多种地图投影,包括UTM、经纬度、墨卡托等。开发者可以根据实际需求选择合适的投影方式,并进行投影转换。 6. **地理编码...

    MapObject C# 课堂作业 v2

    在C#中,我们可以通过Layer对象来管理图层,包括加载数据、设置可见性、调整图层顺序等。 4. **UI界面设计**:项目具有美观的UI界面,这需要利用Windows Forms框架来构建。控件如MenuStrip、ToolStrip、TabControl...

    管理地图的堆栈层1

    此外,`ol.layer.Base`类提供了`setOpacity`和`setVisible`方法来分别改变图层的透明度和可见性。 对于更复杂的交互,比如用户可以通过拖放操作来改变图层顺序,可以监听jQuery UI的`sortstop`事件,更新图层的`...

    C#解析CAD文件

    6. **图层管理**:CAD文件中的图层允许组织和控制图形的可见性。在C#中,你可能需要创建一个图层管理模型,将DXF文件中的图层映射到WPF的可视化元素上。 7. **处理其他复杂特性**:DXF文件还支持更多高级特性,如图...

    ArcObjects GIS应用开发—基于C#.NET

    我们可以通过Layer对象进行图层的添加、删除、可见性调整等操作。 6. **空间分析**:ArcObjects提供了丰富的空间分析工具,如缓冲区分析、网络分析、地形分析等。通过这些工具,开发者可以执行复杂的地理处理任务。...

Global site tag (gtag.js) - Google Analytics