Itext 7 bug with GetCtm() on pages>1

Itext 7 bug with GetCtm() on pages>1

上下文:

问题: 要计算文本的确切 X、Y 位置,我使用以下代码:

var textMatrix =textRenderInfo.GetTextMatrix().Multiply(textRenderInfo.GetGraphicsState().GetCtm());
float X = textMatrix.Get(6);
float Y = textMatrix.Get(7);

这在第一页上工作正常。对于后续页面,CTM 似乎计算为:Power(ctm, pagenumber) 并且 X、Y 结果显然不正确。

更多说明:我有一份文档,在同一位置的每一页上都有重复的日期。因此,它的文本矩阵在每一页上都是相同的。但是第 1 页的 CTM 看起来像这样:

{0,05   0   0
0   0,05    0
0   0   1}

第 2 页:

{0,0025000002   0   0
0   0,0025000002    0
0   0   1}

第 3 页:

{0,000125   0   0
0   0,000125    0
0   0   1}

等等... 所以看起来每个值都由页码提供支持。这可能是一个错误吗?

Could this be a bug?

更有可能是 API 用法不正确...

很遗憾,您没有显示您的关键代码。不过,我假设您对所有页面重复使用相同的 PdfCanvasProcessor。您是否考虑过 ProcessPageContent 文档中的注释?

/// <summary>Processes PDF syntax.</summary>
/// <remarks>
/// Processes PDF syntax.
/// <strong>Note:</strong> If you re-use a given
/// <see cref="PdfCanvasProcessor"/>
/// , you must call
/// <see cref="Reset()"/>
/// </remarks>
/// <param name="page">the page to process</param>
public virtual void ProcessPageContent(PdfPage page)

(PdfCanvasProcessor.cs)

Note: If you re-use a given PdfCanvasProcessor, you must call Reset() [between ProcessPageContent calls]