向 pdf 文档添加注释时 FPDFAnnot_SetRect 和 FPDFAnnot_AppendAttachmentPoints 之间的区别

Difference between FPDFAnnot_SetRect and FPDFAnnot_AppendAttachmentPoints when adding a annotation to pdf document

我正在使用 pdfium 为 pdf 文件添加注释。 我使用 Notepad++ 打开了 pdf 文件并查看了它的对象。注释对象存在于 Page 对象中,如下所示,

3 0 obj
<</Annots[<</C[ 1 1 0]/CA 1/F 4/QuadPoints[ 0 300 300 300 0 0 300 0]/Rect[ 216.182 702.94 368.75 686.38]/Subtype/Highlight/Type/Annot>>]/Contents 4 0 R /Group<</CS/DeviceRGB/S/Transparency/Type/Group>>/MediaBox[ 0 0 612 792]/Parent 2 0 R /Resources<</ExtGState<</GS7 7 0 R /GS8 8 0 R >>/Font<</F1 5 0 R >>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/StructParents 0/Tabs/S/Type/Page>>
endobj

我使用以下代码将矩形和附着点添加到注释中。

FPDF_ANNOTATION highlightAnnot = FPDFPage_CreateAnnot(page, FPDF_ANNOT_HIGHLIGHT);
FPDFAnnot_SetRect(highlightAnnot, &rect);
FPDFAnnot_AppendAttachmentPoints(highlightAnnot, &new_quadpoints);

据我了解,附着点设置为在我们希望的位置给出突出显示注释的位置。但是我不明白为这个注解设置Rect的目的。

有人可以告诉我使用 FPDFAnnot_SetRect 函数的原因吗?

另一件事,

FPDFAnnot_SetRect 定义边界框,而 FPDFAnnot_AppendAttachmentPoints 定义实际形状。考虑一个多行高亮注释,它只有一个Rect,但是有多个AttachmentPoints.

Rect 可以在应用程序级别用作“碰撞框”,这样当您单击它时,您会 select 包含注释。或者它可以是一个“更新框”。

Rect 更通用,只有文本相关的注释类型有 AttachmentPoints.