使用c#语言在.net框架下向pdf文档中添加动作,不仅能够提升文档的交互性和用户体验,还能够在自动化工作流中发挥关键作用,例如自动跳转至特定页面、链接外部资源或播放音频资源等操作。这种能力使得开发者能够根据具体需求定制pdf文档的互动操作,进而提高文档的实用性。本文将介绍如何在.net平台使用c#在pdf文档中添加动作。
本文所使用的方法需要用到免费free spire.pdf for .net,可通过nuget安装:pm> install-package spire.pdf。
用c#在pdf中添加动作的一般步骤
利用c#以及该库可以向pdf文档中嵌入多种互动组件动作,如浏览控制按钮、外部文件和网页连接以及声音播放功能,以此来提升用户的阅读体验。下面简要介绍实现pdf内的动作添加的主要步骤:
创建pdfdocument类的实例。
通过pdfdocument.loadfromfile()方法加载 pdf 文档。
使用pdfdocument.pages[]属性获取页面。
创建表示动作的类的实例,并设置其属性。
将动作添加到pdf文档:
- 可以使用动作在页面的矩形区域内创建pdfactionannotation类的实例,并为动作添加提示文字(可选)。然后使用pdfpagebase.annotations.add()方法将动作注释添加到页面上,从而创建可点击触发的动作。
- 也可以通过pdfdocument.afteropenaction、pdfdocument.beforecloseaction等属性直接将动作设置为在进行其他特定操作时执行的动作。
使用pdfdocument.savetofile()方法保存生成的文档。
释放资源。
在pdf中创建文档内跳转动作
文档内跳转动作的创建通过pdfgotoaction类实现。代码示例:
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类实现。代码示例:
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类实现。代码示例:
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类实现。代码示例:
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类实现。代码示例:
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文档的文章就介绍到这了,更多相关c#添加动作到pdf内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论