首页
学习
活动
专区
圈层
工具
发布

Adobe注释
EN

Stack Overflow用户
提问于 2015-03-17 09:49:41
回答 1查看 235关注 0票数 9

你们用RM做iOS了吗?RM SDK以下列格式保存注释:

startBookmark =“#pdfloc(bd0d,0,101,5,0,0,0,1)”,endBookmark =“#pdfloc(bd0d,0,101,14,0,0,1)”;

我们怎么才能从这两条线中恢复呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-19 19:47:01

您拥有的PDF位置,指向PDF文件中的特定对象。此对象与屏幕上的(x,y)坐标不直接相关,因为这取决于用于呈现PDF文件的分辨率和DPI。它还取决于您用于呈现文件的呈现引擎。

要在iOS中绘制一个框,您需要使用(x,y)坐标绘制它。您需要获得与您正在处理的注释周围的框的(x,y)坐标。您可以使用getRangeInfo对RMSDK执行此操作。您还可以使用上面的PDF位置导航到特定的注释。请注意,您将返回的框仅对您的文件的呈现有效,并包含您所拥有的参数。如果您更改了任何参数- RMSDK版本、导航矩阵值、dpi、呈现分辨率,您将需要从RMSDK中获得该框的新值。

下面是一些代码,它将帮助您使用RMSDK从您的两个位置获取(x,y)坐标。代码是为主要的C/C++库编写的,因为我不确定您的目标-C层是什么样的。根据您正在使用的RMSDK版本,可能会有所不同。

代码语言:javascript
复制
dpdoc::RangeInfo* rangeInfo = renderer->getRangeInfo(startBookmark, endBookmark);
dpdoc::Rectangle* rect;
rangeInfo->getBox(0, false, rect&);

然后,"rect“变量将包含(x,y)坐标,用于绘制所需的框。请注意,每2组坐标可能有多个框。在这种情况下,您需要遍历它们。

如果您有RMSDK通常附带的Objective层,那么它应该会稍微容易一些。在这种情况下,代码应该如下所示:

代码语言:javascript
复制
NSArray *boxes = nil;
RMRangeInfo *rangeInfo = [document getRangeInfoWithStart:startBookmark end:endBookmark];
boxes = rangeInfo.boxes

然后,您可以遍历框数组,得到(x,y)并在屏幕上绘制它们。在大多数情况下,您将得到一个框,但您应该考虑的情况下,您有多个框要画。一个简单的循环应该能做到这一点。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29095908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档