比较和提取文本时的位置

时间:2013-05-07 11:29:18

标签: c# html itextsharp

我使用itextsharp提取PDF然后转换为html,以便比较两个PDF用于他们的stlye。在这里我添加了左侧和顶部位置以对齐文本。但是一旦我收到上标,文字的位置就会发生变化。但是当我通过firebug检查时,左右位置的位置与我使用adobe illustrator检查的位置相同。谁能打电话给我为什么会发生这种情况。在我发布的例子中,7号码应该低于“是”,但它远离“是”enter image description here el远离。

Vector curBaseline = renderInfo.GetBaseline().GetStartPoint();
Vector topRight = renderInfo.GetAscentLine().GetEndPoint();
y_direction_source = Form1.Pagesize_source +( height_extract_source_page - curBaseline[Vector.I2]);
this.result.AppendFormat("<p style=\"left:{0}pt;top:{1}pt;\">" curBaseline[Vector.I1], y_direction_source);

结果:

<p style="font-family:TimesNewRoman;font-size:12.2618001271429pt;font-weight:;font-style:;left:42pt;top:120.2399pt;position:absolute;">
<p style="background: cyan">training</p>
<p style="background: cyan">camps</p>
<pp style="background: cyan">in</p>
<pp style="background: cyan">Afghanistan</p>
<pp style="background: cyan">.</p>
</p>
<pp style="font-family:TimesNewRoman;font-size:10.2386067682737pt;font-weight:;font-style:;left:441.48pt;top:114.72pt;position:absolute;">
<pp style="background: cyan">7</p>
</p>

1 个答案:

答案 0 :(得分:1)

我拿了一些代码并在Chrome中打开它。 42的绝对偏移导致点和我的数字7之间的间隙大得多。此外,我不得不重新安排一些P和PP来获得类似的结果。

浏览器182 px需要写“阿富汗的训练营”。但是样本的位置差异大约是302到很多。看起来302-42,父母有一个260偏移?

根据我在这里看到的代码,我的猜测是“阿富汗训练营”。被安排在另一个元素中,而7则不是。这不是问题,但是额外的差距使得提供更难的溶剂。

另一方面,它也解释了为什么会发生这种情况。没有超级或下标这样的东西。为了表现我们,我们缩放字体并用偏移打印。 对于您翻译的PDF,这没有什么不同。

因此,7的位置不同,并且使用与文本其余部分不同的字体大小进行书写。现在我不知道你的原始PDF如何计算出细节,但你看到的效果可能是差异的差异。

在PDF中,您可以为字体设置许多不同的选项,例如字间距,或指定缩进级别。我会说你的法线偏移有一个左页边距,而7确实是绝对的,或者使用的字体有一些特殊的设置,使句子更长。

由于你已经拥有了Illustrator,你可以检查是否不是7,而是。放在同一个位置。我的猜测是不是,而且7正确。它只是看起来很奇怪,但实际上所有其他纯文本在你的html中的位置都不同。

你能做的就是把每一个字都放在绝对的位置,而不仅仅是线条。 这将弥补字体,类型settigns,浏览器行为或其他影响的任何差异。