Skip to content

创建注释

ComPDFKit 支持全类型的注释,包括便签,链接,图形,标记,图章,手绘,音频注释等,满足多样的注释需求。

创建便签注释

便签注释表现为小型图标或标签,用户点击后可以展开显示相关注释内容,这种注释类型用于添加个人笔记、提醒或备注,使用户能够在文档中添加个性化的附加信息,而不影响原始文本的可读性。

创建便签的步骤如下:

​ 1.获取需要创建注释的页面对象。

​ 2.在该页面上创建便签注释对象。

​ 3.设置注释属性。

​ 4.更新注释外观使其显示在文档上。

创建便签的代码如下:

C#
// 获取需要创建便签的页面对象
CPDFPage page = document.PageAtIndex(0);
// 在该页面上创建便签注释
CPDFTextAnnotation textAnnotation = 
page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_TEXT) as CPDFTextAnnotation;
// 设置便签注释属性
textAnnotation.SetColor(new byte[] { 255, 0, 0 });
textAnnotation.SetTransparency(255);
textAnnotation.SetContent("ComPDFKit");
textAnnotation.SetRect(new CRect(300, 600, 350, 650));
// 更新注释外观使其显示在文档上
textAnnotation.UpdateAp();

创建链接注释

链接注释使用户能够直接跳转到文档中的其他位置或外部资源,提供更丰富的导航体验。

创建链接注释的步骤如下:

  1. 获取需要创建注释的页面对象。
  2. 在该页面上创建链接注释对象。
  3. 通过CPDFDestination设置链接跳转到第2页。
  4. 设置注释属性,并将CPDFDestination对象附加到注释上。

创建链接的代码如下:

C#
// 获取需要创建注释的页面对象。
CPDFPage page = document.PageAtIndex(0); 
// 在该页面上创建链接注释。
CPDFLinkAnnotation link = 
page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_LINK) as CPDFLinkAnnotation;
CPDFDestination dest = new CPDFDestination();
// 通过`CPDFDestination`设置链接跳转到第2页。
dest.PageIndex = 1;
// 设置注释属性,并将`CPDFDestination`对象附加到注释上。
link.SetRect(new CRect(0, 50, 50, 0));
link.SetDestination(document, dest);

创建文本注释

文本注释允许用户在 PDF 文档中插入自由格式的文字,用于添加注解、评论或解释文档内容。

创建文本注释的步骤如下:

​ 1.获取需要创建注释的页面对象。

​ 2.在该页面上创建文本注释对象。

​ 3.设置注释属性。

​ 4.更新注释外观使其显示在文档上。

创建文本注释的代码如下:

C#
// 获取需要创建注释的页面对象。
CPDFPage page = document.PageAtIndex(0);
// 在该页面上创建文本注释。
CPDFFreeTextAnnotation freeText = page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_FREETEXT) as CPDFFreeTextAnnotation;
// 设置注释属性。
string str = "ComPDFKit Samples";
freeText.SetContent(str);
freeText.SetRect(new CRect(0, 100, 160, 0));
CTextAttribute textAttribute = new CTextAttribute();
textAttribute.FontName = "Helvetica";
textAttribute.FontSize = 12;
byte[] fontColor = { 255, 0, 0 };
textAttribute.FontColor = fontColor;
freeText.SetFreetextDa(textAttribute);
freeText.SetFreetextAlignment(C_TEXT_ALIGNMENT.ALIGNMENT_CENTER);
// 将注释更新到文档上。
freeText.UpdateAp();

创建图形注释

图形注释包括矩形、圆形、线条和箭头等形状,用于在文档中绘制图形以突出或标记特定区域,表达文字不易描述的信息。

创建图形注释的步骤如下:

​ 1.获取需要创建注释的页面对象。

​ 2.在该页面上依次创建矩形,圆形,线段注释对象。

​ 3.设置注释属性。

​ 4.依次更新注释外观使其显示在文档上。

创建图形注释的代码如下:

C#
// 获取需要创建注释的页面对象。
CPDFPage page = document.PageAtIndex(0);
float[] dashArray = { 2, 1 };
byte[] lineColor = { 255, 0, 0 };
byte[] bgColor = { 0, 255, 0 };

// 在该页面上创建矩形释对象。
CPDFSquareAnnotation square = page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_SQUARE) as CPDFSquareAnnotation;
// 设置注释属性。
square.SetRect(new CRect(10, 250, 200, 200));
square.SetLineColor(lineColor);
square.SetBgColor(bgColor);
square.SetTransparency(120);
square.SetLineWidth(1);
square.SetBorderStyle(C_BORDER_STYLE.BS_DASHDED, dashArray);
// 依次更新注释外观使其显示在文档上。
square.UpdateAp();

// 在该页面上创建圆形注释对象。
CPDFCircleAnnotation circle = page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_CIRCLE) as CPDFCircleAnnotation;
// 设置注释属性。
circle.SetRect(new CRect(10, 300, 110, 410));
circle.SetLineColor(lineColor);
circle.SetBgColor(bgColor);
circle.SetTransparency(120);
circle.SetLineWidth(1);
circle.SetBorderStyle(C_BORDER_STYLE.BS_DASHDED, dashArray);
// 依次更新注释外观使其显示在文档上。
circle.UpdateAp();

// 在该页面上创建线段注释对象。
CPDFLineAnnotation line = page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_LINE) as CPDFLineAnnotation;
// 设置注释属性。
line.SetLinePoints(new CPoint(300, 300), new CPoint(350, 350));
line.SetLineType(C_LINE_TYPE.LINETYPE_NONE, C_LINE_TYPE.LINETYPE_CLOSEDARROW);
line.SetLineColor(lineColor);
line.SetTransparency(120);
line.SetLineWidth(1);
line.SetBorderStyle(C_BORDER_STYLE.BS_DASHDED, dashArray);
// 依次更新注释外观使其显示在文档上。
line.UpdateAp();

线段注释类型枚举

名称描述
LINETYPE_UNKNOWN非标准或无效的线段端点。
LINETYPE_NONE没有线段端点。
LINETYPE_ARROW两条短线以尖锐的角度相交,形成一个开放的箭头。
LINETYPE_CLOSEDARROW两条短线以尖锐的角度相交,就像样式一样,并通过第三条线连接,形成一个三角形闭合的箭头,内部填充了注释的内部颜色。
LINETYPE_SQUARE一个填充有注释内部颜色的正方形。
LINETYPE_CIRCLE一个填充有注释内部颜色的圆形。
LINETYPE_DIAMOND一个填充有注释内部颜色的菱形形状。
LINETYPE_BUTT一条与线本身垂直的短线,位于端点上。
LINETYPE_ROPENARROW两条与相反方向的短线。
LINETYPE_RCLOSEDARROW一个与相反方向的三角形闭合箭头。
LINETYPE_SLASH一条短线,位于端点上,大约比与线本身垂直的方向顺时针旋转30度。

创建标记注释

在 PDF 文档中添加标记,以突出、强调或说明特定内容,例如重要的段落、行或单词、关键词或表格等。ComPDFKit 提供高亮,下划线,波浪线,删除线四种标记注释。

创建标记注释的步骤如下:

​ 1.获取需要创建注释的页面对象。

​ 2.通过页面对象创建文本对象。

​ 3.使用该文本对象取得需要添加标记的文本位置。

​ 4.在该页面上创建对应的标记对象。

​ 5.设置标记对象的属性。

​ 6.更新注释外观使其显示在文档上。

以高亮注释为例,创建标记注释的代码如下:

C#
// 获取需要创建注释的页面对象。
CPDFPage page = document.PageAtIndex(0);
// 通过页面对象创建文本对象。
CPDFTextPage textPage = page.GetTextPage();
// 使用该文本对象取得需要添加标记的文本位置。
List<Rect> rectList = textPage.GetCharsRectAtPos(new Point(0,0),new Point(500,500),new Point(10,10));
List<CRect> cRectList = new List<CRect>();
foreach(var rect in rectList)
{
    cRectList.Add(new CRect((float)rect.Left, (float)rect.Top, (float)rect.Right, (float)rect.Bottom));
}
// 在该页上创建对应的标记对象。
CPDFHighlightAnnotation highlight = page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_HIGHLIGHT) as CPDFHighlightAnnotation;
设置标记对象的属性。
byte[]color = {0,255,0};
highlight.SetColor(color);
highlight.SetTransparency(120);
highlight.SetQuardRects(cRectList);
// 依次更新注释外观使其显示在文档上。
highlight.UpdateAp();

创建图章注释

图章注释用于标识和验证文档的来源和真实性,ComPDFKit 支持标准图章,文字图章,图像图章。

创建图章注释的步骤如下:

​ 1.获取需要创建注释的页面对象。

​ 2.在该页面上创建对应的图章。

​ 3.设置图章属性。

​ 4.更新注释外观使其显示在文档上。

创建图章注释的代码如下:

C#
// 获取需要创建注释的页面对象。
CPDFPage page = document.PageAtIndex(0);

// 创建标准印章。
CPDFStampAnnotation standard = page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_STAMP) as CPDFStampAnnotation;
standard.SetStandardStamp("Approved");
standard.UpdateAp();

// 创建文字印章。
CPDFStampAnnotation text = page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_STAMP) as CPDFStampAnnotation; ;
text.SetTextStamp("test", "detail text", C_TEXTSTAMP_SHAPE.TEXTSTAMP_LEFT_TRIANGLE, C_TEXTSTAMP_COLOR.TEXTSTAMP_RED);
text.UpdateAp();

// 创建图片印章。
CPDFStampAnnotation image = page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_STAMP) as CPDFStampAnnotation; ;
byte[] imageData = new byte[500 * 500];
image.SetImageStamp(imageData, 500, 500);
image.UpdateAp();

创建手绘注释

手绘注释直接快捷,用于直接绘制标注。

创建手绘注释的步骤如下:

​ 1.获取需要创建注释的页面对象。

​ 2.在该页面上创建手绘注释。

​ 3.设置手绘注释经过的路径。

​ 4.设置注释其他属性。

​ 5.更新注释外观使其显示在文档上。

创建手绘注释的代码如下:

C#
// 获取需要创建注释的页面对象。
CPDFPage page = document.PageAtIndex(0);
// 在该页面上创建手绘注释。
CPDFInkAnnotation ink = page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_INK) as CPDFInkAnnotation;
// 设置手绘注释经过的路径。
List<List<CPoint>> points = new List<List<CPoint>>();
points.Clear();
points.Add(new List<CPoint>()
{
	new CPoint(10,100),
	new CPoint(100,10),
});
ink.SetInkPath(points);
// 设置注释其他属性。
ink.SetInkColor(new byte[] { 255, 0, 0 });
ink.SetBorderWidth(2);
ink.SetTransparency(128);
ink.SetInkPath(points);
ink.SetThickness(8);
ink.SetInkRect(new CRect(10, 10, 200, 200));
// 更新图章注释到文档中。
ink.UpdateAp();

创建音频注释

创建音频注释的步骤如下:

​ 1.获取需要创建注释的页面对象。

​ 2.在该页上创建音频注释。

​ 3.设置音频文件。

​ 4.设置其他属性。

​ 5.更新注释外观使其显示在文档上。

创建音频注释的代码如下:

C#
// 获取需要创建注释的页面对象。
CPDFPage page = document.PageAtIndex(0);
// 在该页上创建音频注释。
CPDFSoundAnnotation sound = page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_SOUND) as CPDFSoundAnnotation;
// 设置音频文件。
sound.SetSoundPath("soundFilePath");
// 设置其他属性。
sound.SetRect(new CRect(0, 50, 50, 0));
// 更新注释外观使其显示在文档上。
sound.UpdateAp();