C# 比较和提取文本时的位置

C# 比较和提取文本时的位置,c#,html,itextsharp,C#,Html,Itextsharp,我已经使用itextsharp提取了PDF,然后将其转换为html,用于比较stlye中的两个PDF。在这篇文章中,我添加了文本对齐的左上方位置。但一旦我收到上标,文本的位置就改变了。但当我通过firebug检查时,左右位置的位置与我使用adobe illustrator检查的位置相同。有人能告诉我吗。为什么会发生这种情况。在我发布的示例中,7号应该位于“was”下面,但它远离“was”el远离was Vector curBaseline = renderInfo.GetBaseline().G

我已经使用itextsharp提取了PDF,然后将其转换为html,用于比较stlye中的两个PDF。在这篇文章中,我添加了文本对齐的左上方位置。但一旦我收到上标,文本的位置就改变了。但当我通过firebug检查时,左右位置的位置与我使用adobe illustrator检查的位置相同。有人能告诉我吗。为什么会发生这种情况。在我发布的示例中,7号应该位于“was”下面,但它远离“was”el远离was

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);
向量路缘基线=renderInfo.GetBaseline().GetStartPoint(); Vector topRight=renderInfo.GetAscentLine().GetEndPoint(); y_方向_源=Form1.Pagesize_源+(高度_提取_源_页面-路缘基线[Vector.I2]); this.result.AppendFormat(“

”路缘[Vector.I1],y\U方向\U源); 结果:

<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>

培训

营地

阿富汗

七,


我把你的代码用Chrome打开了。42的绝对偏移导致点和我端的数字7之间的差距更大。此外,我还必须重新调整一些P和PP的范围,以获得类似的结果

需要浏览器182 px来编写“阿富汗的训练营”,但样本中的位置差异大约为302到302。看起来像是302-42,父对象的偏移量是260

根据我在这里看到的代码,我的猜测是“阿富汗训练营”这一行在另一个元素中是内联的,而7则不是。这不是问题所在,但额外的差距使得提供解决方案更加困难

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

因此,7的位置和字体大小与文本的其余部分不同。现在我不知道你的原始PDF是如何计算细节的,但是你看到的效果很可能是页边空白的不同

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

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

你能做的是让每个单词都绝对定位,而不仅仅是线条。
这将弥补字体、类型设置、浏览器行为或其他影响方面的任何差异。

请发布相关代码和PDF,以使您的问题具有可复制性。您使用了什么代码提取文本?“was”和“7”的像素位置是什么。输出的HTML和CSS是什么?7的位置是441.48pt,y的位置是114.72pt@ferry剩余的文本位置与PDF中的相同