便笺与自由文本
本文档介绍便笺(Note)、自由文本(FreeText)和插入符(Caret)三种注释类型。
便笺注释(Note)
便笺注释在页面上显示为一个小图标,点击后展开弹出窗口以查看或编辑注释内容。便笺是最常用的文本批注形式。
核心方法
| 方法 | 说明 |
|---|---|
getIconName() / setIconName(String) | 获取/设置图标名称(如 "Comment"、"Key"、"Note"、"Help" 等) |
getOpenStatus() / setOpenStatus(boolean) | 获取/设置弹出窗口是否默认展开 |
getReplyTo() | 获取父注释(如果当前便笺是另一个注释的回复) |
isStateAnnot() | 判断是否为状态注释 |
getState() / setState(int) | 获取/设置状态(审阅、标记等) |
getStateModel() | 获取状态模型类型 |
状态常量
便笺注释支持两种状态模型:
标记模型(Markup.e_StateModelMarked)
| 常量 | 说明 |
|---|---|
Markup.e_StateMarked | 已标记 |
Markup.e_StateUnmarked | 未标记 |
审阅模型(Markup.e_StateModelReview)
| 常量 | 说明 |
|---|---|
Markup.e_StateAccepted | 已接受 |
Markup.e_StateRejected | 已拒绝 |
Markup.e_StateCancelled | 已取消 |
Markup.e_StateCompleted | 已完成 |
Markup.e_StateDeferred | 已推迟 |
Markup.e_StateFuture | 将来处理 |
Markup.e_StateNone | 无状态 |
示例:创建便笺注释
java
import com.foxit.sdk.common.fxcrt.RectF;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;
import com.foxit.sdk.pdf.annots.Note;
PDFPage page = doc.getPage(0);
RectF rect = new RectF(100, 100, 124, 124);
Note note = new Note(page.addAnnot(Annot.e_Note, rect));
note.setIconName("Comment");
note.setBorderColor(0xff0000ff);
note.setContent("审核意见:此段表述需要修改。");
note.setTitle("审阅者");
note.setOpenStatus(false);
note.resetAppearanceStream();
示例:为注释添加回复
java
import com.foxit.sdk.pdf.annots.Markup;
import com.foxit.sdk.pdf.annots.Note;
// 获取页面上的一个 Markup 注释
Markup markup = new Markup(page.getAnnot(0));
// 添加回复(返回 Note 类型)
Note reply = markup.addReply();
reply.setContent("已修改,请重新审阅。");
reply.setTitle("作者");
reply.resetAppearanceStream();
// 查看回复数量
int replyCount = markup.getReplyCount();
自由文本注释(FreeText)
自由文本注释直接在页面上渲染文本内容(不同于便笺的图标形式)。根据 intent 属性的不同,FreeText 可表现为三种子类型:
| 子类型 | Intent 值 | 说明 |
|---|---|---|
| 普通自由文本 | "" | 在矩形区域内渲染文本 |
| 打字机(Typewriter) | "FreeTextTypewriter" | 模拟打字机效果,常用于填写表单或添加批注文本 |
| 标注框(Callout) | "FreeTextCallout" | 带引线的标注框,用于指向页面特定位置的注释 |
核心方法
| 方法 | 说明 |
|---|---|
getAlignment() / setAlignment(int) | 获取/设置文本对齐方式(0=左对齐,1=居中,2=右对齐) |
getDefaultAppearance() / setDefaultAppearance(DefaultAppearance) | 获取/设置默认外观(字体、字号、颜色) |
getFillColor() / setFillColor(int) | 获取/设置背景填充颜色 |
getInnerRect() / setInnerRect(RectF) | 获取/设置内部文本区域 |
getRotation() / setRotation(int) / rotate(int) | 获取/设置/旋转角度 |
getCalloutLinePoints() / setCalloutLinePoints(PointFArray) | 获取/设置标注框引线端点 |
getCalloutLineEndingStyle() / setCalloutLineEndingStyle(int) | 获取/设置标注框引线端点样式 |
示例:创建打字机注释
java
import com.foxit.sdk.common.fxcrt.RectF;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;
import com.foxit.sdk.pdf.annots.DefaultAppearance;
import com.foxit.sdk.pdf.annots.FreeText;
import com.foxit.sdk.pdf.annots.Markup;
PDFPage page = doc.getPage(0);
RectF rect = new RectF(100, 500, 350, 540);
FreeText freeText = new FreeText(page.addAnnot(Annot.e_FreeText, rect));
// 设置为打字机子类型
freeText.setIntent("FreeTextTypewriter");
// 设置文本内容和外观
freeText.setContent("这是通过打字机注释添加的文本。");
DefaultAppearance da = new DefaultAppearance();
da.setText_size(14);
da.setText_color(0xff000000);
freeText.setDefaultAppearance(da);
freeText.setAlignment(0); // 左对齐
freeText.setOpacity(1.0f);
freeText.resetAppearanceStream();
示例:创建标注框注释
java
import com.foxit.sdk.common.fxcrt.PointF;
import com.foxit.sdk.common.fxcrt.PointFArray;
import com.foxit.sdk.common.fxcrt.RectF;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;
import com.foxit.sdk.pdf.annots.FreeText;
import com.foxit.sdk.pdf.annots.Markup;
PDFPage page = doc.getPage(0);
RectF rect = new RectF(200, 400, 400, 450);
FreeText callout = new FreeText(page.addAnnot(Annot.e_FreeText, rect));
callout.setIntent("FreeTextCallout");
callout.setContent("请注意此处的格式问题。");
// 设置引线端点(从文本框指向目标位置)
PointFArray points = new PointFArray();
points.add(new PointF(100, 350)); // 目标点(箭头指向的位置)
points.add(new PointF(150, 400)); // 拐点
points.add(new PointF(200, 420)); // 文本框连接点
callout.setCalloutLinePoints(points);
// 设置引线箭头样式
callout.setCalloutLineEndingStyle(Markup.e_EndingStyleOpenArrow);
callout.resetAppearanceStream();
插入符注释(Caret)
插入符注释(Annot.e_Caret)在文档中标记文本插入或替换的位置,通常显示为一个 ^ 形标记。
java
import com.foxit.sdk.common.fxcrt.RectF;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;
PDFPage page = doc.getPage(0);
RectF rect = new RectF(150, 700, 160, 720);
Annot caret = page.addAnnot(Annot.e_Caret, rect);
caret.setContent("在此处插入新段落。");
caret.setBorderColor(0xff0000ff);
caret.resetAppearanceStream();