.NET平台用C#添加动作到PDF文档

使用C#语言在.NET框架下向PDF文档中添加动作 ,不仅能够提升文档的交互性和用户体验,还能够在自动化工作流中发挥关键作用,例如自动跳转至特定页面、链接外部资源或播放音频资源等操作。这种能力使得开发者能够根据具体需求定制PDF文档的互动操作,进而提高文档的实用性。本文将介绍如何在.NET平台使用C#在PDF文档中添加动作

文章目录

本文所使用的方法需要用到免费Free Spire.PDF for .NET,可通过NuGet安装:PM> Install-Package Spire.PDF

用C#在PDF中添加动作的一般步骤

利用C#以及该库可以向PDF文档中嵌入多种互动组件动作,如浏览控制按钮、外部文件和网页连接以及声音播放功能,以此来提升用户的阅读体验。下面简要介绍实现PDF内的动作添加的主要步骤:

  1. 创建PdfDocument类的实例。
  2. 通过PdfDocument.LoadFromFile()方法加载 PDF 文档。
  3. 使用PdfDocument.Pages[]属性获取页面。
  4. 创建表示动作的类的实例,并设置其属性。
  5. 将动作添加到PDF文档:
    • 可以使用动作在页面的矩形区域内创建PdfActionAnnotation类的实例,并为动作添加提示文字(可选)。然后使用PdfPageBase.Annotations.Add()方法将动作注释添加到页面上,从而创建可点击触发的动作。
    • 也可以通过PdfDocument.AfterOpenActionPdfDocument.BeforeCloseAction等属性直接将动作设置为在进行其他特定操作时执行的动作。
  6. 使用PdfDocument.SaveToFile()方法保存生成的文档。
  7. 释放资源。

在PDF中创建文档内跳转动作

文档内跳转动作的创建通过PdfGoToAction类实现。代码示例:

csharp 复制代码
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Annotations;
using Spire.Pdf.General;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddNavigationButtonPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 PdfDocument 的实例
            PdfDocument pdf = new PdfDocument();

            // 加载 PDF 文件
            pdf.LoadFromFile("示例.pdf");

            // 创建 PdfDestination 实例并设置目标位置
            PdfDestination destination = new PdfDestination(pdf.Pages[1]);
            destination.Location = new PointF(0, 0);
            destination.Mode = PdfDestinationMode.Location;
            destination.Zoom = 0.6f;

            // 基于目标位置创建 PdfGoToAction 实例
            PdfGoToAction action = new PdfGoToAction(destination);

            // 创建矩形并绘制到第一页
            RectangleF rect = new RectangleF(70, pdf.PageSettings.Size.Height - 120, 140, 20);
            pdf.Pages[0].Canvas.DrawRectangle(PdfBrushes.LightGray, rect);
            // 在矩形中绘制文本
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("HarmonyOS Sans SC", 14f, FontStyle.Bold), true);
            PdfStringFormat stringFormat = new PdfStringFormat(PdfTextAlignment.Center);
            pdf.Pages[0].Canvas.DrawString("跳转到第2页", font, PdfBrushes.Green, rect, stringFormat);

            // 基于矩形和动作创建 PdfActionAnnotation 实例
            PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, action);

            // 将动作注释添加到第一页
            pdf.Pages[0].Annotations.Add(actionAnnotation);

            // 保存文档
            pdf.SaveToFile("output/PDF导航动作.pdf");
            pdf.Close();
        }
    }
}

结果

在PDF中创建网页链接打开动作

网页链接打开动作的创建通过PdfUriAction类实现。代码示例:

csharp 复制代码
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddSoundActionPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 PdfDocument 的实例
            PdfDocument pdf = new PdfDocument();

            // 加载 PDF 文件
            pdf.LoadFromFile("示例.pdf");

            // 获取第一页
            PdfPageBase page = pdf.Pages[0];

            // 在页面上绘制矩形
            RectangleF rect = new RectangleF(30, 30, 120, 20);
            page.Canvas.DrawRectangle(PdfBrushes.LightGray, rect);
            // 在矩形内绘制文本
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("HarmonyOS Sans SC", 14f, FontStyle.Bold), true);
            PdfStringFormat stringFormat = new PdfStringFormat(PdfTextAlignment.Center);
            page.Canvas.DrawString("点击跳转示例网页", font, PdfBrushes.LightSkyBlue, rect);

            // 创建 PdfUriAction 实例并设置其属性
            PdfUriAction action = new PdfUriAction();
            action.Uri = "https://www.example.com/";

            // 使用网页链接动作和矩形创建 PdfActionAnnotation 实例
            PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, action);

            // 将动作注释添加到第一页
            page.Annotations.Add(actionAnnotation);

            // 保存文档
            pdf.SaveToFile("output/PDF网页链接打开动作.pdf");
            pdf.Close();
        }
    }
}

结果

在PDF中创建音频播放动作

音频播放动作的创建通过PdfSoundAction类实现。代码示例:

csharp 复制代码
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using Spire.Pdf.General;
using System.Drawing;

namespace AddSoundActionPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 PdfDocument 的实例
            PdfDocument pdf = new PdfDocument();

            // 加载 PDF 文件
            pdf.LoadFromFile("示例.pdf");

            // 获取第一页
            PdfPageBase page = pdf.Pages[0];

            // 在页面上绘制提示图像
            PdfImage image = PdfImage.FromFile("音频.png");
            page.Canvas.DrawImage(image, new PointF(30, 30));

            // 创建 PdfSoundAction 实例并设置其属性
            PdfSoundAction action = new PdfSoundAction("背景.wav");
            // 设置声音参数
            action.Sound.Bits = 16;
            action.Sound.Channels = PdfSoundChannels.Stereo;
            action.Sound.Encoding = PdfSoundEncoding.Signed;
            action.Sound.Rate = 44100;
            // 设置播放选项
            action.Volume = 0;
            action.Repeat = true;
            action.Mix = true;
            action.Synchronous = true;

            // 基于提示图像的位置创建 PdfActionAnnotation 实例,用于声音动作
            RectangleF rect = new RectangleF(30, 30, image.Width, image.Height);
            PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, action);

            // 将动作注释添加到第一页
            page.Annotations.Add(actionAnnotation);

            // 设置在文档打开后播放声音动作
            pdf.AfterOpenAction = action;

            // 保存文档
            pdf.SaveToFile("output/PDF音频播放动作.pdf");
            pdf.Close();
        }
    }
}

结果

在PDF中创建文件打开动作

文件打开动作的创建通过PdfLaunchAction类实现。代码示例:

csharp 复制代码
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddFileLaunchActionPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 PdfDocument 的实例
            PdfDocument pdf = new PdfDocument();

            // 加载 PDF 文件
            pdf.LoadFromFile("示例.pdf");

            // 获取第一页
            PdfPageBase page = pdf.Pages[0];

            // 在页面上绘制矩形
            RectangleF rect = new RectangleF(50, 50, 180, 20);
            page.Canvas.DrawRectangle(PdfBrushes.LightGray, rect);
            // 在矩形内绘制文本
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("HarmonyOS Sans SC", 14f, FontStyle.Bold), true);
            PdfStringFormat stringFormat = new PdfStringFormat(PdfTextAlignment.Center);
            pdf.Pages[0].Canvas.DrawString("点击打开示例2", font, PdfBrushes.Green, rect, stringFormat);

            // 创建 PdfLaunchAction 实例
            PdfLaunchAction action = new PdfLaunchAction("D:/示例2.pdf", PdfFilePathType.Absolute);
            // 设置启动模式为在新窗口中打开
            action.IsNewWindow = true;

            // 基于矩形和启动动作创建 PdfActionAnnotation 实例
            PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, action);

            // 将动作注释添加到第一页
            page.Annotations.Add(actionAnnotation);

            // 保存文档
            pdf.SaveToFile("output/PDF文件打开动作.pdf");
            pdf.Close();
        }
    }
}

结果

在PDF中创建JavaScript动作

JavaScript动作的创建通过PdfJavaScriptAction类实现。代码示例:

csharp 复制代码
using Spire.Pdf;
using Spire.Pdf.Actions;

namespace AddJavaScriptActionPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 PdfDocument 的实例
            PdfDocument pdf = new PdfDocument();

            // 加载 PDF 文件
            pdf.LoadFromFile("示例.pdf");

            // 定义JavaScript代码
            string jsCode =
            "app.alert({" +
            "    cMsg: '欢迎阅读《水星:太阳系中最小的行星之一,却拥有无尽的科学奥秘》。\\n\\n本文将详细探讨水星的各个方面,包括概述、形成和历史、表面特征、气候和环境,以及未来的探索。', " +
            "    nIcon: 3, " +
            "    cTitle: '文档介绍'" +
            "});";

            // 使用代码创建 PdfJavaScriptAction 实例
            PdfJavaScriptAction action = new PdfJavaScriptAction(jsCode);

            // 将动作设置为PDF文档打开时执行
            pdf.AfterOpenAction = action;

            // 保存文档
            pdf.SaveToFile("output/PDF JavaScript动作.pdf");
            pdf.Close();
        }
    }
}

结果

本文介绍如何在.NET平台使用C#代码实现在PDF中添加动作,提供步骤介绍及代码示例。

相关推荐
cui__OaO1 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
鱼鱼说测试1 小时前
Jenkins+Python自动化持续集成详细教程
开发语言·servlet·php
艾莉丝努力练剑2 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
一阵没来由的风2 小时前
拒绝造轮子(C#篇)ZLG CAN卡驱动封装应用
c#·can·封装·zlg·基础封装·轮子
CHEN5_022 小时前
【Java基础面试题】Java基础概念
java·开发语言
杜子不疼.3 小时前
《Python学习之字典(一):基础操作与核心用法》
开发语言·python·学习
骑着毛驴数星星3 小时前
CANDB++中的CAN_DBC快速编辑方法,使用文本编辑器(如notepad++和VScode)
vscode·can
落霞的思绪4 小时前
Java设计模式详细解读
java·开发语言·设计模式
阿巴~阿巴~4 小时前
深入解析C++ STL链表(List)模拟实现
开发语言·c++·链表·stl·list
java1234_小锋5 小时前
一周学会Matplotlib3 Python 数据可视化-绘制自相关图
开发语言·python·信息可视化·matplotlib·matplotlib3