【发布时间】:2015-12-23 10:13:42
【问题描述】:
问题
PDF 工具包 iText(Sharp) 有其 own vector type,实现 Substract、Dot 产品、Cross 产品和 Multiply,但我没有看到 添加 向量也不是一个向量到另一个向量的投影。
有简单的方法吗?
上下文
我正在实现一个ITextExtractionStrategy,如果它们将文本收集成块(class MyTextChunk)
- 在同一行
renderInfo.GetBaseline() - 密切关注以避免连接表格中不同列的文本
- 和高度一样:
renderInfo .GetAscentLine().GetStartPoint() .Subtract(renderInfo .GetDescentLine() .GetStartPoint()) .Length
如果我遇到单个较小的上标字符(即在基线之上,但不在上升线之上),我想这将在文本中稍后提及并将其存储为char referable 在块中。
如果 this referable 后面紧跟更多文本,则该文本必须包含在块中。因此,我需要将基线延伸到可参考字符之后。所以我想写一些类似的东西
public bool Append(TextRenderInfo renderInfo)
{
...
if (thisIsAReferable)
{
this.referable = infoText.Trim()[0];
Vector offsetVector = baseVector.Multiply(
baseVector.Dot(renderInfo.GetBaseline().GetEndPoint()
.Subtract(this.baseline.GetStartPoint()))
/ baseVector.LengthSquared);
this.baseline = new LineSegment(this.baseline.GetStartPoint(),
this.baseline.GetStartPoint().Add(offsetVector));
...
return true;
}
...
}
备注:offsetVector的计算尚未验证。
【问题讨论】:
-
Vector类是为内部使用而创建的,更具体地说是为了进行坐标系计算。 你用它们做什么?这个问题背后的用例是什么? -
无论如何:我们不需要加法或投影方法,因为在 PDF 中,坐标系的所有变换都使用
Matrix表示。平移、旋转、缩放……所有这些变换都是使用 6 个值定义的(如果您期望 9 个,请再想一想:PDF 页面是二维的,因此矩阵的 3 个值预定义为0、0,1)。如有疑问,请查阅 ISO-32000-1。
标签: vector itextsharp itext