zoukankan      html  css  js  c++  java
  • 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? 
     LET'S GET STARTED!
     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");
            }
        }
    }

    测试结果:

    阅读结束!

    如需转载,请注明出处!

  • 相关阅读:
    Android 3D开发相关教程
    关于交互Shell的两个小示例
    Ubuntu11.04上tftp服务的配置
    利用脚本将文字插入到图片或进行多个图片拼接
    Shell常用的一些操作集锦(如字符串截取、字符串比较以及For循环等)
    关于Vim的一点基本配置
    Linux下将连续的图片转换成视频
    HTML在线转换成PDF
    通过udp及vlc传递视频流
    《深入理解计算机系统》读书笔记 —— 第二章 信息的表示和处理
  • 原文地址:https://www.cnblogs.com/Yesi/p/9008367.html
Copyright © 2011-2022 走看看