Crystal 报告中的坐标系

Coordinate system in Crystal Reports

我正在使用 CR 版本 13.0.25 - 我相信截至该日期的实际最新版本是 13.0.26,因此,基本上是 CR 的最新版本。我正在使用的是从 C# 代码动态地重新定位报告中的元素。

有几个报告的原始 rpt(多年前设计的)跨越多个页面。这些尤其给我带来了问题,但它们并不是唯一的问题。这里的问题集中在y(垂直)维度上。

CR 文档使用基于文档左上角的坐标系,也基于缇 (1440 twips/in)。因此,理论上,我应该能够将 ReportObjectTop 值设置为 1440,并且该元素应该从某个基准(页面顶部或页边距底部 -我相当确定它在边距的底部)。

我的结果似乎没有反映这一点 - 至少不完全如此。

当我设置 Top 值时,某些文档似乎缩放了 y 维度。事实上,我可以应用一个恒定的比例因子(它根据文档而变化)并且我可以使字段以相对 1"​​ 的间距一直显示到页面底部。但是,该比例因子因文档而异记录。

因此,除了在我们的生产代码中进行试验外,我还做了以下工作:

我创建了一个 C# 控制台应用程序,它打开一个 rpt 文件,抓取其中的一些元素,重新定位它们,然后将它发送到打印机。我设计了一个新的 rpt 文件,其页眉和页脚的大小尽可能小,并在详细信息部分放置了 10 个文本字段。我遍历字段(通过 ReportDocumentReportObjects 并将它们重新定位在 0、1440 (1")、2880 (2") 等

这与具有默认页边距(每边默认为 0.167 英寸)的文档完美搭配。第一个元素的顶部紧靠边距的底部,第二个元素从第一个元素的顶部到第二个元素的顶部为 1",依此类推页面。但是,如果我减少边距到零 - 无论是通过编程方式还是在设计中,我都得到了这种缩放效果。这些元素现在都相距大约 7/8" 左右,而不是我期望的 1"。

有谁知道关于为什么坐标系似乎在变化的神奇公式或文档?我可以理解,如果我更改可以抵消页面上所有内容的边距(假设边距是我们的基线),但在我看来,元素间距为 1440 时仍应呈现为 1".

我认为 Y 是距该部分顶部的垂直距离,而不是距页面顶部的垂直距离。