PDFTron UWP测量工具校准后比例单位不应用于后续测量实体问题
问题现象
- 部署PDFTron官方SamplePDFViewer示例应用后,使用测量工具完成实体测量再执行校准操作时,新设置的比例与单位仅对当前选中的测量实体生效,无法自动应用到后续在PDF页面上绘制的新增测量实体。
- 该测量校准功能在Android、Xamarin、Web平台均运行正常,异常仅出现在UWP平台。
根因说明
UWP端PDFTron SDK的校准逻辑默认仅更新当前选中标注对象的缩放属性,没有同步修改测量工具的全局默认配置参数,和其他跨平台版本的默认逻辑不一致,属于UWP端SDK的实现差异,不是示例代码的部署错误。
修复方案
在校准操作的完成回调中,手动将校准后的比例、单位参数同步写入所有类型测量工具的全局默认配置,后续新建测量实体会自动读取该配置,具体操作如下:
- 第一步:在校准逻辑执行完成后,捕获最终生效的比例数值、单位参数
- 第二步:遍历所有测量类工具(距离测量、周长测量、面积测量等),调用默认配置接口写入校准后的参数
核心实现代码参考:
// 校准操作完成后的回调逻辑 private void HandleCalibrationFinish(Annot selectedMeasureAnnot, double calibrateScale, string calibrateUnit) { // SDK默认已实现:更新当前选中测量实体的比例单位 selectedMeasureAnnot.SetScale(calibrateScale, calibrateUnit); // 新增以下逻辑:同步更新所有测量工具的全局默认配置 // 距离测量工具 var lineMeasureTool = pdfViewer.GetTool(ToolType.e_annot_create_line_measure) as LineMeasureCreate; lineMeasureTool?.SetDefaultScale(calibrateScale, calibrateUnit); // 周长测量工具 var perimeterMeasureTool = pdfViewer.GetTool(ToolType.e_annot_create_perimeter_measure) as PerimeterMeasureCreate; perimeterMeasureTool?.SetDefaultScale(calibrateScale, calibrateUnit); // 面积测量工具 var areaMeasureTool = pdfViewer.GetTool(ToolType.e_annot_create_area_measure) as AreaMeasureCreate; areaMeasureTool?.SetDefaultScale(calibrateScale, calibrateUnit); }
- 第三步:如果使用的是9.2之前的旧版本SDK,没有开放
SetDefaultScale接口,可以直接升级SDK到最新稳定版,或者在测量工具的新建实体回调中,给新生成的测量对象手动赋值校准后的比例参数即可。
验证方法:修改完成后执行一次校准,连续绘制多类测量实体,确认所有新增实体的单位、比例和校准设置完全一致即修复生效。
内容的提问来源于stack exchange,提问作者rohan Kulkarni
相关产品推荐
相关产品推荐

