PDF 生成模板编辑器
开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。
对于已经存在的测量注释,可以重新设置比例尺,单位,精确度等测量相关信息,而无需重新绘制该注释。
以线段测量工具为例,您可以通过以下步骤,调整已存在的测量注释的属性:
CPDFViewerTool 获取 CPDFAnnotation 对象,检查代表直线测量工具的 CPDFAnnotation 对象的 Type 参数。如果是 C_ANNOTATION_TYPE.C_ANNOTATION_LINE,则将直线测量工具的 CPDFAnnotation 类型转换为 CPDFLineAnnotation 对象。IsMersured 方法确定对象是否是测量工具。如果为 true,则调用 GetDistanceMeasure 方法获取相应的 CPDFDistanceMeasure 对象。CPDFDistanceMeasure 对象中读取 MeasureInfo 并赋值。CPDFDistanceMeasure 的 SetMeasureInfo, SetMeasureScale 和 UpdateAnnotMeasure 方法完成参数更新。CPDFAnnotation 的 UpdateAp 方法更新注释外观,然后调用 CPDFViewer 的 UpdateAnnotFrame 方法更新绘图。以下是调整已存在的测量注释的示例代码:
BaseAnnot baseAnnot = tool.GetCacheHitTestAnnot();
CPDFAnnotation annot = baseAnnot.GetAnnotData().Annot;
switch (annot.Type)
{
case C_ANNOTATION_TYPE.C_ANNOTATION_LINE:
{
// 将直线测量工具的 CPDFAnnotation 类型转换为 CPDFLineAnnotation 对象。
CPDFLineAnnotation lineAnnot = (CPDFLineAnnotation)annot;
// 检查对象是否为测量工具。
if (lineAnnot.IsMersured())
{
// 获取注释对应的 CPDFDistanceMeasure 对象。
CPDFDistanceMeasure lineMeasure = lineAnnot.GetDistanceMeasure();
// 设置新的测量相关属性。
CPDFMeasureInfo measureInfo = lineMeasure.MeasureInfo;
measureInfo.Precision = measureSetting.GetMeasureSavePrecision();
measureInfo.RulerBase = (float)measureSetting.RulerBase;
measureInfo.RulerBaseUnit = measureSetting.RulerBaseUnit;
measureInfo.RulerTranslate = (float)measureSetting.RulerTranslate;
measureInfo.RulerTranslateUnit = measureSetting.RulerTranslateUnit;
// 完成参数更新。
lineMeasure.SetMeasureInfo(measureInfo);
lineMeasure.SetMeasureScale(
measureInfo.RulerBase,
measureInfo.RulerBaseUnit,
measureInfo.RulerTranslate,
measureInfo.RulerTranslateUnit);
lineMeasure.UpdateAnnotMeasure();
// 更新注释外观。
lineAnnot.UpdateAp();
// 更新绘图。
tool.GetCPDFViewer().UpdateAnnotFrame();
}
}
break;
case C_ANNOTATION_TYPE.C_ANNOTATION_POLYLINE:
case C_ANNOTATION_TYPE.C_ANNOTATION_POLYGON:
// To do.
break;
}