C# 添加多种不同类型PDF注释的方法

【前言】

向文档添加注释,是一种比较常用的向读者传递某些重要信息的手段。通过编程的方式来添加PDF注释,我们可以自定义注释的外观、类型及其他一些个性化的设置,这种可供选择的操作在编程中提供了更多的实用性。因此,本篇文章将介绍添加几种不同类型的PDF注释的方法。下面的示例中,借助控件总结了一些不同类型的注释的具体操作,主要包含以下几种

  • 添加弹出式注释(Popup Annotation)
  • 添加自由文本注释(Free Text Annotation)
  • 添加链接式注释(Link Annotation)
  • 添加多边形注释(Polygon Annotation)
  • 添加线性注释(Line Annotation)

【工具使用】


【代码操作】

1.弹出式注释(Popup Annotation)

C#

using Spire.Pdf;
using Spire.Pdf.General.Find;
using System.Drawing;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;

namespace Annotation_PDF
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化PdfDocument类实例,并加载测试文档
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile("sample.pdf");

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

            //调用方法FindText()查找需要添加注释的字符串
            PdfTextFind[] results = page.FindText("IPCC").Finds;

            //指定注释添加的位置
            float x = results[0].Position.X - doc.PageSettings.Margins.Top;
            float y = results[0].Position.Y - doc.PageSettings.Margins.Left + results[0].Size.Height - 23;

            //创建弹出式注释
            RectangleF rect = new RectangleF(x, y, 10, 0);
            PdfPopupAnnotation popupAnnotation = new PdfPopupAnnotation(rect); 

            //添加注释内容,并设置注释的图标类型和颜色
            popupAnnotation.Text = "IPCC,This is a scientific and intergovernmental body under the auspices of the United Nations.";
            popupAnnotation.Icon = PdfPopupIcon.Help;
            popupAnnotation.Color = Color.DarkOliveGreen;

            //添加注释到文件
            page.AnnotationsWidget.Add(popupAnnotation);

            //保存并打开文档
            doc.SaveToFile("Annotation.pdf");
            System.Diagnostics.Process.Start("Annotation.pdf");
        }
    }
}

在选择注释标签类型时,有以下几种类型可供选择

注释添加效果:

2. 自由文本注释(Free Text Annotation)

C#

using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace FreeTextAnnotation_pdf
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建PdfDocument类对象,加载测试文档
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile("sample.pdf");

            PdfPageBase page = doc.Pages[0];
            //初始化RectangleF类,指定注释添加的位置、注释图标大小
            RectangleF rect = new RectangleF(50, 500, 100, 40);
            PdfFreeTextAnnotation textAnnotation = new PdfFreeTextAnnotation(rect);

            ////添加注释内容
            textAnnotation.Text = "This is just a sample, please refer the original article to see more!";

            //设置注释属性,包括字体、字号、注释边框粗细、边框颜色、填充颜色等
            PdfFont font = new PdfFont(PdfFontFamily.TimesRoman, 9);
            PdfAnnotationBorder border = new PdfAnnotationBorder(0.75f);
            textAnnotation.Font = font;
            textAnnotation.Border = border;
            textAnnotation.BorderColor = Color.White;
            textAnnotation.LineEndingStyle = PdfLineEndingStyle.Circle;
            textAnnotation.Color = Color.Transparent;
            textAnnotation.Opacity = 0.8f;
            //添加注释到页面
            page.AnnotationsWidget.Add(textAnnotation);

            //保存并打开文档
            doc.SaveToFile("FreeTextAnnotation.pdf", FileFormat.PDF);
            System.Diagnostics.Process.Start("FreeTextAnnotation.pdf");
         }
    }
}

添加效果

3. 链接式注释(Link Annotation)

C#

using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace FreeTextAnnotation_pdf
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建PdfDocument类对象,加载测试文档
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile("sample.pdf");

            PdfPageBase page = doc.Pages[0];
            //初始化RectangleF类,指定注释添加的位置、注释图标大小
            RectangleF rect = new RectangleF(50, 500, 100, 40);
            PdfFreeTextAnnotation textAnnotation = new PdfFreeTextAnnotation(rect);

            //添加注释内容
            textAnnotation.Text = "This is just a sample, Click here to read the original file!";

            //设置注释属性,包括字体、字号、注释边框粗细、边框颜色、填充颜色等
            PdfFont font = new PdfFont(PdfFontFamily.TimesRoman, 9);
            PdfAnnotationBorder border = new PdfAnnotationBorder(0.75f);
            textAnnotation.Font = font;
            textAnnotation.Border = border;
            textAnnotation.BorderColor = Color.White;
            textAnnotation.LineEndingStyle = PdfLineEndingStyle.Circle;
            textAnnotation.Color = Color.Transparent;

            //添加需要链接到的文件地址,并添加链接到注释
            string filePath = @"C:\Users\Administrator\Desktop\original.pdf";
            PdfFileLinkAnnotation link = new PdfFileLinkAnnotation(rect, filePath);
            page.AnnotationsWidget.Add(link);

            //添加注释到页面
            page.AnnotationsWidget.Add(textAnnotation);

            //保存并打开文档
            doc.SaveToFile("LinkAnnotation.pdf", FileFormat.PDF);
            System.Diagnostics.Process.Start("LinkAnnotation.pdf");
        }
    }
}

添加效果:

4. 多边形注释(Polygon Annotation)

C#

using Spire.Pdf;
using Spire.Pdf.Annotations;
using System;
using System.Drawing;

namespace PolygonAnnotation_PDF
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建PdfDocument类对象,加载测试文档
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("sample.pdf");
            //获取文档第一页
            PdfPageBase page = pdf.Pages[0];

            //实例化PdfPolygonAnnotation类,指定多边形各顶点位置
            PdfPolygonAnnotation polygon = new PdfPolygonAnnotation(page, new PointF[] { new PointF(0, 30), new PointF(30, 15), new PointF(60, 30),
    new PointF(45, 50), new PointF(15, 50), new PointF(0, 30)});  

            //指定多边形注释的边框颜色、注释内容、作者、边框类型、修订时间等属性
            polygon.Color = Color.CornflowerBlue;
            polygon.Text = "This article is created by Mia, permit read ONLY.";
            polygon.Author = "Editor‘s Note";
            polygon.Subject = "polygon annotation demo";
            polygon.BorderEffect = PdfBorderEffect.BigCloud;
            polygon.ModifiedDate = DateTime.Now;

            //添加注释到页面
            page.AnnotationsWidget.Add(polygon);
            //保存并打开文档
            pdf.SaveToFile("Polygon_Annotation.pdf");
            System.Diagnostics.Process.Start("Polygon_Annotation.pdf");
        }
    }
}

添加效果:

5. 线性注释(Line Annotation)

C#

using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Fields;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace LineAnnotation_PDF
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化PdfDocument类,加载文档
            PdfDocument document = new PdfDocument();
            document.LoadFromFile("sample.pdf");
            PdfPageBase page = document.Pages[0];

            //在页面指定位置绘制Line类型注释,并添加注释的文本内容
            int[] linePoints = new int[] { 100,300, 180, 300 };
            PdfLineAnnotation lineAnnotation = new PdfLineAnnotation(linePoints, "Comment Text");

            //设置线条粗细、指向
            lineAnnotation.lineBorder.BorderStyle = PdfBorderStyle.Solid;
            lineAnnotation.lineBorder.BorderWidth = 1;
            lineAnnotation.LineIntent = PdfLineIntent.LineDimension;

            //设置线性注释的头、尾形状、flag类型
            lineAnnotation.BeginLineStyle = PdfLineEndingStyle.Circle;
            lineAnnotation.EndLineStyle = PdfLineEndingStyle.Diamond;
            lineAnnotation.Flags = PdfAnnotationFlags.Default;

            //设置注释颜色
            lineAnnotation.InnerLineColor = new PdfRGBColor(Color.Green);
            lineAnnotation.BackColor = new PdfRGBColor(Color.Green);

            lineAnnotation.LeaderLineExt = 0;
            lineAnnotation.LeaderLine = 0;

            //添加注释到页面
            page.AnnotationsWidget.Add(lineAnnotation);

            //保存并打开文档
            document.SaveToFile("LineAnnotation.pdf");
            System.Diagnostics.Process.Start("LineAnnotation.pdf");

        }
    }
}

添加效果:

以上为全部内容。如需转载,请注明出处!
感谢阅读。

原文地址:http://blog.51cto.com/eiceblue/2116816

时间: 2024-10-31 01:03:15

C# 添加多种不同类型PDF注释的方法的相关文章

一个函数实现基因内具有多种突变类型的热图的绘制

??我们平常多见的基因突变热图是一个基因一个格子,一种突变类型,但实际上在同一个病人中,同一个基因往往具有多种突变类型,因此传统的热图绘制工具并不能满足我们绘图的需要.应研究需要,本人自己写了一个热图绘制函数,内部调用image 进行热图的绘制, barplot进行直方图绘制, 用data.table进行数据处理.对于一个基因内多种突变类型如何表现出来的问题, 这个函数先采用image将初步的热图绘制出来,再使用points,以方块形式将第二种突变,第三种突变依次添加, 在添加的同时方块位置稍为

Winform开发框架中实现同时兼容多种数据库类型处理

在很多应用系统里面,虽然一般采用一种数据库运行,但是由于各种情况的需要,可能业务系统会部署在不同类型的数据库上,如果开发的系统能够很方便支持多种数据库的切换,那可以为我们减少很多烦恼,同时提高系统的适应性和强壮型.还有一种情况,由于业务数据库的不断膨胀或者方便数据库的切割隔离,有时候也会把不同的业务数据库进行分拆,如权限提供数据库,客户关系管理数据库,工作流程数据库,企业营运数据库等等,因此在一个系统里面,同时使用2个或者以上的数据库的情况也是有的. 在我较早期的一篇随笔<Winform开发框架

Android开发之ListView添加多种布局效果演示

在这个案例中展示的新闻列表,使用到ListView控件,然后在适配器中添加多种布局效果,这里通过重写BaseAdapter类中的 getViewType()和getItemViewType()来做判断,指定ListView列表中指定位置的item加载对应的布局,在 getView中返回对应的视图,之前由于不清楚getViewTypeCount()和getItemViewType()方法,使用得比较少,一直以 为需要添加多个适配器,现在看来当时的想法说明自己见识还不够,哈哈. 第一步:创建放置Li

Winform开发框架中实现多种数据库类型切换以及分拆数据库的支持 - 伍华聪

在很多应用系统里面,虽然一般采用一种数据库运行,但是由于各种情况的需要,可能业务系统会部署在不同类型的数据库上,如果开发的系统能够很方便支持多种数据库的切换,那可以为我们减少很多烦恼,同时提高系统的适应性和强壮型.还有一种情况,由于业务数据库的不断膨胀或者方便数据库的切割隔离,有时候也会把不同的业务数据库进行分拆,如权限提供数据库,客户关系管理数据库,工作流程数据库,企业营运数据库等等,因此在一个系统里面,同时使用2个或者以上的数据库的情况也是有的.针对这两种情况,本文介绍在我的Winform开

利用接口实现多种数据库类型的灵活更换

当存在可能要更换数据库类型的时候,要考虑两个问题: 一,不同类型的数据库命名空间不一样,用到的函数名也不一样,尽管很相似: 二,有些SQL语句在不一样的数据库之间是不通用的! 那么要在更换数据库类型的时候,如何做到尽量少受因为上面两点而造成的影响呢?!利用接口,可以将第一点的影响降到最低!至于第二点, 可以将数据的操作尽量在数据库服务器端实现,这点的探讨不在本文研究范围内,在此也就不多说!下面主要就利用接口将第一点的影响降到最低这一点进行详细说 明. 首先,明确两点: 1, 无论哪种数据库类型,

实现JFileChooser的多种文件类型限制(设置过滤器)

使用时直接调用方法. 1 // 多类型时使用 2 public void FileFilter(JFileChooser F) { 3 String[][] fileNames = { { ".java", "JAVA源程序 文件(*.java)" }, 4 { ".doc", "MS-Word 2003 文件(*.doc)" }, 5 { ".xls", "MS-Excel 2003 文件(*.

.添加索引和类型,同时设定edgengram分词和charsplit分词

1.添加索引和类型,同时设定edgengram分词和charsplit分词 curl -XPUT 'http://127.0.0.1:9200/userindex/' -d '{   "settings": {     "index": {       "analysis": {         "analyzer": {           "charsplit": {             "

postgresql 获取所有表名、字段名、字段类型、注释

获取表名及注释: select relname as tabname,cast(obj_description(relfilenode,'pg_class') as varchar) as comment from pg_class c where  relkind = 'r' and relname not like 'pg_%' and relname not like 'sql_%' order by relname 过滤掉分表: 加条件 and relchecks=0 即可 获取字段名.

C# 添加超链接到PDF文档

概述 超链接可以实现不同元素之间的连接,用户可以通过点击被链接的元素来激活这些链接.具有高效.快捷.准确的特点.本文中,将分享通过C#编程在PDF文档中插入超链接的方法.内容包含以下要点: 插入网页链接 插入外部文档链接 插入文档页面跳转链接 工具 Free Spire.PDF for .NET (免费版) 下载安装后,注意将Spire.Pdf.dll引用到程序(dll文件可在安装路径下的Bin文件夹中获取) 示例代码(供参考) [示例1]插入网页链接 using Spire.Pdf; usin