我有一个复杂的SVG文档,通过PDF.js从PDF研究论文生成,我想在矩形区域内找到所有文本。这支持基于Web的标签工具,用户可以在渲染的SVG文件的任意区域上绘制矩形(基本上将其视为图像)并需要查看相应的文本。我想到的第一种方法是迭代每个SVG的svg:text
或svg:tspan
元素并检查它是否与相关矩形相交,可能使用checkEnclosure()(unsupported by FF,顺便说一句)。
但是,对于矩形注释作为svg:text
或svg:tspan
子集的字符的情况,这不起作用。例如,假设我们想在此行中注释单个关键字:
关键词:赫斯勒合金;压力效应;居里温度
在这种情况下,SVG将其分解为两个(因为'关键字'是斜体):
'关键字:'
和
'赫斯勒合金;压力效应;居里温度'
如果只用“压力效应”这个词来画一个矩形,那么程序基本上需要扫描每个字符中的每一个字符并查找它与rect的交集(更具体地说,它完全被它包含)。这样它基本上将每个char视为矩形字形。
如果你愿意分享一些指针,无论是基于这种初步方法,还是基于你所知道的其他事情,这都会有所帮助。
更新2015-07-23:
以下是我能找到的W3 SVG DOM方法:
InterfaceSVGSVGElement - 接口,对应'svg'元素
InterfaceSVGTextContentElement - 由各种与文本相关的接口继承,例如SVGTextElement,SVGTSpanElement,SVGTRefElement,SVGAltGlyphElement和SVGTextPathElement。
InterfaceSVGLocatable - 适用于所有具有'transform'属性或没有'transform'属性但其内容可以在当前用户空间中具有边界框的元素 < / p>