C# 操作PDF 图层(Layer)——添加、删除图层、设置图层可见性
前言
通过添加图层,我们可以将文本、图片、表格、图形等元素精确定位于页面指定位置,将这些元素进行叠放、组合形成页面的最终效果。此外,对于页面中已有的图层我们也可以进行设置图层可见性、删除图层等操作。因此,在本篇文章中,将介绍如何在C#中进行PDF图层的操作。
要点概括
1.添加图层
- 线条
- 图形
- 图像
- 字符串
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"); } } }
测试结果:
阅读结束!
如需转载,请注明出处!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Orange Business Services 全球发布 Easy Go Network,帮助企业加速实现“网络即服务”
100% 数字化,软件定义网络( SDN) 产品在 75 个国家上市 在云、移动化、大数据和物联网(IoT)趋势的推动下,企业不断寻求更加智能和更加灵活的网络,以支持他们的数字化转型方案。而网络只有演进至“网络即服务”(NaaS)模式,才能够有效、灵活、安全地满足企业的各种需求。 作为走向 NaaS 战略的第一步,Orange Business Services 推出了 Easy Go Network,它通过 SDN 技术提供完全虚拟化的网络功能(VNF)。在与客户携手进行了长达一年的广泛测试之后,该项业务最终于 2016 年末在 75 个国家正式上市。 网络即服务针对全球分支机构设计 Easy Go Network 使得企业能够通过操作便捷的门户,即时为分支机构开通虚拟网络功能(VNF),以及全数字自助服务订购、客户服务和报告功能。该业务仅需现场有一台即插即用的路由器,无需上门服务,因此提高了灵活性并加快了部署速度。任意网点开通网络功能只需要数分钟时间。 这种虚拟的方法使得首席信息官们(CIO)无需过于担心网络,从而更多地聚焦于最终用户体验。Easy Go Network 让他们能够...
- 下一篇
函数的不定长参数
# *args:位置参数,收集成元组 def func1(*args): print(args) for i in args: print(i) func1('python', 28, 'man', 'meiguo') # **kwargs :收集关键字参数,合并字典 def func2(**kwargs): print(kwargs) for key, value in kwargs.items(): print(key) print(value) func2(name='python', age=28, sex='man', weizhi='helan') def fun(a, b, *args, **kwargs): """可变参数演示示例""" print("a =%d" % a) print("b =%d" % b) print("args:") print(args) print("kwargs: ") for key, value in kwargs.items(): print("value=%s" % value) print("-fu-"*10) c = (3, 4...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题