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#

  1. using Spire.Pdf;
  2. using Spire.Pdf.Annotations;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5.  
  6. namespace InkAnnotation
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. //加载PDF文档
  13. PdfDocument pdf = new PdfDocument();
  14. pdf.LoadFromFile("test.pdf");
  15.  
  16. //获取第一页
  17. PdfPageBase pdfPage = pdf.Pages[0];
  18.  
  19. //设置墨迹坐标点位置
  20. List<int[]> inkList = new List<int[]>();
  21. int[] intPoints = new int[]
  22. {
  23. 370,700,
  24. 120,720,
  25. 110,760,
  26. 220,800,
  27. 270,790,
  28. 350,770,
  29. 350,670
  30. };
  31. inkList.Add(intPoints);
  32. //添加墨迹注释到PDF页面
  33. PdfInkAnnotation inkannotation = new PdfInkAnnotation(inkList);
  34. inkannotation.Color = Color.MediumVioletRed;
  35. inkannotation.Border.Width = 6;
  36. inkannotation.Opacity = 0.5f;
  37. inkannotation.Text = "This is an ink annotation. ";
  38. inkannotation.Name = "Manager";
  39. pdfPage.AnnotationsWidget.Add(inkannotation);
  40.  
  41. //保存文档
  42. Pdf.SaveToFile("AddInkAnnotation.pdf",FileFormat.PDF);
  43. System.Diagnostics.Process.Start("AddInkAnnotation.pdf");
  44. }
  45. }
  46. }

vb.net

  1. Imports Spire.Pdf
  2. Imports Spire.Pdf.Annotations
  3. Imports System.Collections.Generic
  4. Imports System.Drawing
  5.  
  6. Namespace InkAnnotation
  7. Class Program
  8. Private Shared Sub Main(args As String())
  9. '加载PDF文档
  10. Dim pdf As New PdfDocument()
  11. pdf.LoadFromFile("test.pdf")
  12.  
  13. '获取第一页
  14. Dim pdfPage As PdfPageBase = pdf.Pages(0)
  15.  
  16. '设置墨迹坐标点位置
  17. Dim inkList As New List(Of Integer())()
  18. Dim intPoints As Integer() = New Integer() {370, 700, 120, 720, 110, 760, _
  19. 220, 800, 270, 790, 350, 770, _
  20. 350, 670}
  21. inkList.Add(intPoints)
  22. '添加墨迹注释到PDF页面
  23. Dim inkannotation As New PdfInkAnnotation(inkList)
  24. inkannotation.Color = Color.MediumVioletRed
  25. inkannotation.Border.Width = 6
  26. inkannotation.Opacity = 0.5F
  27. inkannotation.Text = "This is an ink annotation. "
  28. inkannotation.Name = "Manager"
  29. pdfPage.AnnotationsWidget.Add(inkannotation)
  30.  
  31. '保存文档
  32. pdf.SaveToFile("AddInkAnnotation.pdf", FileFormat.PDF)
  33. End Sub
  34. End Class
  35. End Namespace

注释效果:

—End—

C# 在PDF中添加墨迹注释Ink Annotation的更多相关文章

  1. Java 在PDF 中添加超链接

    对特定元素添加超链接后,用户可以通过点击被链接的元素来激活这些链接,通常在被链接的元素下带有下划线或者以不同的颜色显示来进行区分.按照使用对象的不同,链接又可以分为:文本超链接,图像超链接,E-mai ...

  2. Python中添加中文注释报错SyntaxError: Non-UTF-8 code starting with '\xc1'

    问题:在文本编辑器中编辑Python文件时添加中文注释,运行python文件时报错.SyntaxError: Non-UTF-8 code starting with '\xc1' 解决方法:在文本开 ...

  3. Java 在PDF中添加页面跳转按钮

    在PDF 中可通过按钮来添加动作跳转到指定页面,包括跳转到文档首页.文档末页.跳转到上一页.下一页.或跳转到指定页面等.下面将通过java代码来演示如何添加具有以上几种功能的按钮. 使用工具: Fre ...

  4. Java 在PDF中添加表格

    本文将介绍通过Java编程在PDF文档中添加表格的方法.添加表格时,可设置表格边框.单元格对齐方式.单元格背景色.单元格合并.插入图片.设置行高.列宽.字体.字号等. 使用工具:Free Spire. ...

  5. Java 在PDF中添加工具提示|ToolTip

    本文,将介绍如何通过Java后端程序代码在PDF中创建工具提示.添加工具提示后,当鼠标悬停在页面上的元素时,将显示工具提示内容. 导入jar包 本次程序中使用的是 Free Spire.PDF for ...

  6. VS2010在C#头文件中添加文件注释的方法

    步骤: 1.VS2010 中找到安装盘符(本人安装目录在D盘,所以以D盘为例)D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\I ...

  7. VS2010在C#头文件中添加文件注释的方法(转)

    步骤: 1.VS2010 中找到(安装盘符以D盘为例)D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTempl ...

  8. C#/VB.NET 在PDF中添加文件包(Portfolio)

    PDF文件包(Portfolio)允许用户将多种不同类型的文件如Word.Excel.PDF.PowerPoint和图片等集合到一个PDF文件中,用户可以打开.更改PDF文件包中的单个文件.添加文件包 ...

  9. 在sourceinsight中添加快速注释 Ctrl+/

    1.搜索文件:utils.em(C:\Program Files (x86)\Source Insight 3)2.用sourceinsight打开文件:utils.em3.在文件末尾添加下面代码 m ...

随机推荐

  1. 在CentOS7上安装 jq

    安装EPEL源: yum install epel-release 安装完EPEL源后,可以查看下jq包是否存在: yum list jq 安装jq: yum -y install jq 命令参考资料 ...

  2. 读取 properties 配置文件含有中文的value内容 导致中文乱码 的解决办法

    1.前言 因为装系统的时候把中文写在了系统路径,现在我想把这个路径写在properties里面来读取,可是 发现java 读取会导致中文乱码成 问号????的乱码  ,百度找了好多博客,基本都是一摸一 ...

  3. centos 内存使用情况+负载使用情况

    内存使用情况,查看内存 free -h #查看内存 available:  可用内存 buff/cache:   缓存内存 free:   空闲内存 used: 已使用内存 负载使用情况 cat /p ...

  4. yum安装软件时,出现"No package XXX available"的解决办法

    第一种: 依次执行以下命令解决 1,cd /home 2,wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noa ...

  5. Redis 事务支持 ACID 么?

    腾讯面试官:「数据库事务机制了解么?」 「内心独白:小意思,不就 ACID 嘛,转眼一想,我面试的可是技术专家,不会这么简单的问题吧」 程许远:「balabala-- 极其自信且从容淡定的说了一通.」 ...

  6. 扒一扒@Retryable注解,很优雅,有点意思!

    你好呀,我是歪歪. 前几天我 Review 代码的时候发现项目里面有一坨逻辑写的非常的不好,一眼望去简直就是丑陋之极. 我都不知道为什么会有这样的代码存在项目里面,于是我看了一眼提交记录准备叫对应的同 ...

  7. python极简教程08:对象的方法

    测试奇谭,BUG不见. 讲解之前,我先说说我的教程和网上其他教程的区别: 1 我分享的是我在工作中高频使用的场景,是精华内容: 2 我分享的是学习方法,亦或说,是指明你该学哪些.该重点掌握哪些内容: ...

  8. macos下命令行通过ndk编译android下可以执行的ELF程序(并验证opencl的调用)

    源码如下,实现把一个JPG保存成灰度图格式的BMP 1 //jpg2bmp.cpp 2 #include <stdio.h> 3 #include <inttypes.h> 4 ...

  9. nodejs express异常捕获

    参考链接: http://blog.coinidea.com/web开发/nodejs-1131.html 由于nodejs是非阻塞单进程单线程的,一旦nodejs抛出异常,整个服务就会停掉.服务将会 ...

  10. promise的队列,宏任务,微任务,同步任务

    // promise里面有一个特别的任务,就是微任务 // 同步任务>微任务>宏任务 setTimeout(() => { console.log("setTimeout& ...