当前位置:   article > 正文

C# 如何给现有/新建PDF文档添加注释或标注_c# pdfdocument pdfpage 命名空间

c# pdfdocument pdfpage 命名空间

这篇文章主要介绍如何使用免费版PDF组件Free Spire.PDF及C#编程语言给现有PDF文档或新建的PDF文档中的文本添加注释或标注(完整代码附在文章末尾)。

首先,下载 Free Spire.PDF 组件并安装后,打开Visual Studio创建项目并引用Spire.Pdf.dll,如下图:


接下来添加命名空间:

  1. using System.Drawing;
  2. using Spire.Pdf;
  3. using Spire.Pdf.Annotations;
  4. using Spire.Pdf.General.Find;
  5. using Spire.Pdf.Graphics;

命名空间添加后,我们就可以使用其中的类和方法来实现添加注释。

给现有的PDF文档中的文本添加注释

文档:


接下来的部分主要阐述如何给以上PDF文档中的文本“唐朝”添加注释。

1. 从系统加载PDF文档。

  1. PdfDocument doc = new PdfDocument();
  2. doc.LoadFromFile("唐朝.pdf");

2. 声明一个PdfTextFind类型的数组并创建一个新的PDF字体。

  1. PdfTextFind[] result = null;
  2. PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 11f), true);

3. 获取文本,创建注释并添加到PDF页面。

遍历PDF文档的所有页面,获取需要添加注释的文本并将它们保存到声明的数组中,然后遍历数组,为每个文本创建注释并指定注释的作者、注释内容、注释的文本,位置,及字体等,然后设置注释的边框、颜色,最后将注释添加到页面上。

  1. foreach (PdfPageBase page in doc.Pages)
  2. {
  3. result =page.FindText("唐朝").Finds;
  4. foreach (PdfTextFind text in result)
  5. {
  6. PdfTextMarkupAnnotation annotation = new PdfTextMarkupAnnotation("汤姆", "618年—907年", text.SearchText, text.Position, font);
  7. annotation.Border= new PdfAnnotationBorder(0.75f);
  8. annotation.TextMarkupColor= Color.Green;
  9. text.SearchPage.AnnotationsWidget.Add(annotation);
  10. }
  11. }

4. 保存文档。

doc.SaveToFile("输出.pdf");

以上代码需要注意的几点:

1. 这里我是将文档放在项目的Debug目录下的。你也可以从路径加载文档,如:doc.LoadFromFile(@"E:\Program Files\唐朝.pdf");

2. Free Spire.PDF组件提供了几个不同的PDF字体类,因为这里我们使用的文档是中文,所以要选择支持中文的字体类,如PdfTrueTypeFont类和PdfCjkStandardFont类(支持繁体中文)。同时,在使用系统字体时也要注意选择支持中文(Unicode)的字体,如“Arial Unicode MS”。

3. 这里我遍历了PDF文档的所有页面,如果你只需要对某一页的文本添加注释,则只需获取该页,如:PdfPageBase page =doc.Pages[0];

 

运行结果:


 

给新建的PDF文档添加注释

给新建PDF文档添加注释较为简单,代码如下:

  1. //创建文档
  2. PdfDocument doc1 = new PdfDocument();
  3. PdfPageBase page1 =doc1.Pages.Add();
  4. //向文档添加文本
  5. PdfFont font1 = new PdfFont(PdfFontFamily.Helvetica,13);
  6. string text1 = "HelloWorld";
  7. PointF point = new PointF(200, 100);
  8. page1.Canvas.DrawString(text1, font1, PdfBrushes.CadetBlue, point);
  9. //给文本创建注释
  10. PdfTextMarkupAnnotation annotation1 = new PdfTextMarkupAnnotation("管理员", "这是一个文本注释",text1, new PointF(0,0), font1);
  11. annotation1.Border = new PdfAnnotationBorder(0.75f);
  12. annotation1.TextMarkupColor = Color.Green;
  13. annotation1.Location = new PointF(point.X +doc1.PageSettings.Margins.Left, point.Y + doc1.PageSettings.Margins.Left);
  14. //将注释添加到页面
  15. (page1 as PdfNewPage).Annotations.Add(annotation1);
  16. //保存文档
  17. doc1.SaveToFile("新建.pdf");

运行结果:



完整代码:

  1. using System.Drawing;
  2. using Spire.Pdf;
  3. using Spire.Pdf.Annotations;
  4. using Spire.Pdf.General.Find;
  5. using Spire.Pdf.Graphics;
  6. namespace PDF文档添加注释
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. //给现有的PDF文档中的文本添加注释
  13. PdfDocument doc = new PdfDocument();
  14. doc.LoadFromFile("唐朝.pdf");
  15. PdfTextFind[] result = null;
  16. PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 11f), true);
  17. foreach (PdfPageBasepage in doc.Pages)
  18. {
  19. result = page.FindText("唐朝").Finds;
  20. foreach (PdfTextFind text in result)
  21. {
  22. PdfTextMarkupAnnotation annotation = new PdfTextMarkupAnnotation("汤姆", "618年—907年",text.SearchText, text.Postition, font);
  23. annotation.Border = new PdfAnnotationBorder(0.75f);
  24. annotation.TextMarkupColor = Color.Green;
  25. text.SearchPage.AnnotationsWidget.Add(annotation);
  26. }
  27. }
  28. doc.SaveToFile("输出.pdf");
  29. //给新建的PDF文档添加注释
  30. PdfDocument doc1 = new PdfDocument();
  31. PdfPageBase page1 = doc1.Pages.Add();
  32. PdfFont font1 = new PdfFont(PdfFontFamily.Helvetica,13);
  33. string text1 = "HelloWorld";
  34. PointF point = new PointF(200, 100);
  35. page1.Canvas.DrawString(text1, font1, PdfBrushes.CadetBlue,point);
  36. PdfTextMarkupAnnotation annotation1 = new PdfTextMarkupAnnotation("管理员", "这是一个文本注释",text1, new PointF(0,0), font1);
  37. annotation1.Border = new PdfAnnotationBorder(0.75f);
  38. annotation1.TextMarkupColor = Color.Green;
  39. annotation1.Location = new PointF(point.X + doc1.PageSettings.Margins.Left,point.Y + doc1.PageSettings.Margins.Left);
  40. (page1 as PdfNewPage).Annotations.Add(annotation1);
  41. doc1.SaveToFile("新建.pdf");
  42. }
  43. }
  44. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/975449
推荐阅读
相关标签
  

闽ICP备14008679号