你们用RM做iOS了吗?RM SDK以下列格式保存注释:
startBookmark =“#pdfloc(bd0d,0,101,5,0,0,0,1)”,endBookmark =“#pdfloc(bd0d,0,101,14,0,0,1)”;
我们怎么才能从这两条线中恢复呢?
发布于 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版本,可能会有所不同。
dpdoc::RangeInfo* rangeInfo = renderer->getRangeInfo(startBookmark, endBookmark);
dpdoc::Rectangle* rect;
rangeInfo->getBox(0, false, rect&);然后,"rect“变量将包含(x,y)坐标,用于绘制所需的框。请注意,每2组坐标可能有多个框。在这种情况下,您需要遍历它们。
如果您有RMSDK通常附带的Objective层,那么它应该会稍微容易一些。在这种情况下,代码应该如下所示:
NSArray *boxes = nil;
RMRangeInfo *rangeInfo = [document getRangeInfoWithStart:startBookmark end:endBookmark];
boxes = rangeInfo.boxes然后,您可以遍历框数组,得到(x,y)并在屏幕上绘制它们。在大多数情况下,您将得到一个框,但您应该考虑的情况下,您有多个框要画。一个简单的循环应该能做到这一点。
https://stackoverflow.com/questions/29095908
复制相似问题