C# 在PDF中添加墨迹注释Ink Annotation
PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何在PDF中添加该注释。
一、dll引用
步骤1:在Visual Studio中打开“解决方案资源管理器”- 鼠标右键点击“引用”-“管理NuGet包”。

步骤2:选择“浏览”-在搜索框中输入搜索内容,选择搜索结果,点击“安装”。

步骤3:依次点击“OK”-"接受",然后等待程序完成安装。

或者,通过官方渠道,下载包 Spire.PDF for .NET 到本地。解压后,将BIN文件夹下的Spire.Pdf.dll文件引用至VS程序。
二、代码示例
添加注释时,除了自定义各个点的位置及数量,也可以设置墨迹颜色、线条宽度、透明度、注释的内容、名称等。下面是代码实现的步骤:
- 创建PdfDocument类的对象,并通过PdfDocument.LoadFromFile(String fileName)方法加载PDF文档。
- 通过PdfDocument.Pages[int Index]属性获取PDF指定页面。
- 创建类型为int的对象集合,集合元素为各墨迹顶点。
- 创建PdfInkAnnotation类的实例。并通过该类提供的属性设置墨迹颜色、宽度、注释内容等格式。
- 调用PdfPageBase.AnnotationsWidget属性提供的PdfAnnotationCollection.Add(PdfAnnotation annotation)方法添加注释到PDF。
- 最后,通过PdfDocument.SaveToFile(string filename, FileFormat fileFormat)方法保存PDF文档到指定路径。
C#
using Spire.Pdf;
using Spire.Pdf.Annotations;
using System.Collections.Generic;
using System.Drawing; namespace InkAnnotation
{
class Program
{
static void Main(string[] args)
{
//加载PDF文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("test.pdf"); //获取第一页
PdfPageBase pdfPage = pdf.Pages[0]; //设置墨迹坐标点位置
List<int[]> inkList = new List<int[]>();
int[] intPoints = new int[]
{
370,700,
120,720,
110,760,
220,800,
270,790,
350,770,
350,670
};
inkList.Add(intPoints);
//添加墨迹注释到PDF页面
PdfInkAnnotation inkannotation = new PdfInkAnnotation(inkList);
inkannotation.Color = Color.MediumVioletRed;
inkannotation.Border.Width = 6;
inkannotation.Opacity = 0.5f;
inkannotation.Text = "This is an ink annotation. ";
inkannotation.Name = "Manager";
pdfPage.AnnotationsWidget.Add(inkannotation); //保存文档
Pdf.SaveToFile("AddInkAnnotation.pdf",FileFormat.PDF);
System.Diagnostics.Process.Start("AddInkAnnotation.pdf");
}
}
}
vb.net
Imports Spire.Pdf
Imports Spire.Pdf.Annotations
Imports System.Collections.Generic
Imports System.Drawing Namespace InkAnnotation
Class Program
Private Shared Sub Main(args As String())
'加载PDF文档
Dim pdf As New PdfDocument()
pdf.LoadFromFile("test.pdf") '获取第一页
Dim pdfPage As PdfPageBase = pdf.Pages(0) '设置墨迹坐标点位置
Dim inkList As New List(Of Integer())()
Dim intPoints As Integer() = New Integer() {370, 700, 120, 720, 110, 760, _
220, 800, 270, 790, 350, 770, _
350, 670}
inkList.Add(intPoints)
'添加墨迹注释到PDF页面
Dim inkannotation As New PdfInkAnnotation(inkList)
inkannotation.Color = Color.MediumVioletRed
inkannotation.Border.Width = 6
inkannotation.Opacity = 0.5F
inkannotation.Text = "This is an ink annotation. "
inkannotation.Name = "Manager"
pdfPage.AnnotationsWidget.Add(inkannotation) '保存文档
pdf.SaveToFile("AddInkAnnotation.pdf", FileFormat.PDF)
End Sub
End Class
End Namespace
注释效果:

—End—
C# 在PDF中添加墨迹注释Ink Annotation的更多相关文章
- Java 在PDF 中添加超链接
对特定元素添加超链接后,用户可以通过点击被链接的元素来激活这些链接,通常在被链接的元素下带有下划线或者以不同的颜色显示来进行区分.按照使用对象的不同,链接又可以分为:文本超链接,图像超链接,E-mai ...
- Python中添加中文注释报错SyntaxError: Non-UTF-8 code starting with '\xc1'
问题:在文本编辑器中编辑Python文件时添加中文注释,运行python文件时报错.SyntaxError: Non-UTF-8 code starting with '\xc1' 解决方法:在文本开 ...
- Java 在PDF中添加页面跳转按钮
在PDF 中可通过按钮来添加动作跳转到指定页面,包括跳转到文档首页.文档末页.跳转到上一页.下一页.或跳转到指定页面等.下面将通过java代码来演示如何添加具有以上几种功能的按钮. 使用工具: Fre ...
- Java 在PDF中添加表格
本文将介绍通过Java编程在PDF文档中添加表格的方法.添加表格时,可设置表格边框.单元格对齐方式.单元格背景色.单元格合并.插入图片.设置行高.列宽.字体.字号等. 使用工具:Free Spire. ...
- Java 在PDF中添加工具提示|ToolTip
本文,将介绍如何通过Java后端程序代码在PDF中创建工具提示.添加工具提示后,当鼠标悬停在页面上的元素时,将显示工具提示内容. 导入jar包 本次程序中使用的是 Free Spire.PDF for ...
- VS2010在C#头文件中添加文件注释的方法
步骤: 1.VS2010 中找到安装盘符(本人安装目录在D盘,所以以D盘为例)D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\I ...
- VS2010在C#头文件中添加文件注释的方法(转)
步骤: 1.VS2010 中找到(安装盘符以D盘为例)D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTempl ...
- C#/VB.NET 在PDF中添加文件包(Portfolio)
PDF文件包(Portfolio)允许用户将多种不同类型的文件如Word.Excel.PDF.PowerPoint和图片等集合到一个PDF文件中,用户可以打开.更改PDF文件包中的单个文件.添加文件包 ...
- 在sourceinsight中添加快速注释 Ctrl+/
1.搜索文件:utils.em(C:\Program Files (x86)\Source Insight 3)2.用sourceinsight打开文件:utils.em3.在文件末尾添加下面代码 m ...
随机推荐
- 第10组 Beta冲刺 (2/5)(组长)
1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14015412.html ·作业博客:https://edu.cnblogs.co ...
- BugKu CTF(杂项篇MISC)-贝斯手
打开是以下内容 先看一下给了哪些提示 1.介绍 没了?不,拉到最底下还有 2.女神剧照 密码我4不会告诉你的,除非你知道我的女神是哪一年出生的(细品) 大致已经明白了,四位数密码,出生年份 文件是以下 ...
- SYCOJ2100摆动序列
题目-摆动序列 (shiyancang.cn) 直接分成两部分,插入即可.只有一个地方不对,那就是符号.两个大的放一个小的,两个小的放一个大的.那么每次的大的放最大的,每次的小的放其次小的,用完就不用 ...
- Nginx高级模块学习
Nginx的rewrite规则 实现url重写一级重定向 使用场景: 1.URL访问跳转,支持开发设计 页面跳转.兼容性支持.展示效果 2.SEO优化 3.维护 后台维护.流量转发等 4.安全 配置语 ...
- leetcode 787. K 站中转内最便宜的航班
问题描述 有 n 个城市通过 m 个航班连接.每个航班都从城市 u 开始,以价格 w 抵达 v. 现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到从 src 到 dst ...
- Maven 框架结构知识总结
1.maven目录结构 目录 内容 ${basedir} 存放pom.xml和所有子目录 ${basedir}/src/main/java 项目Java代码 ${basedir}/src/main/r ...
- 简述ASP.NET网站开发步骤
新建解决方案 清除解决方案 重新生成解决方案 发布应用程序 设置配置文件 重命名配置文件 发布后生成的文件 IIS安装 安装完成后,输入http://localhost/出现 打开IIS 添加自己的网 ...
- Django db使用MySQL连接池
Django db使用MySQL连接池 Sep 25 2016 Django db模块本身不支持MySQL连接池,只有一个配置CONN_MAX_AGE连接最大存活时间,如果WSGI服务器使用了线程池技 ...
- C++多线程之可重入锁
#include<iostream> #include<thread> #include<mutex> using namespace std; recursive ...
- gin框架中的中间件
全局中间件 所有请求都经过此中间件 中间件中设置值 func MiddleWare() gin.HandlerFunc { return func(context *gin.Context) { t ...