【发布时间】:2015-06-17 23:46:57
【问题描述】:
根据 ISO 标准,A4 为 210x297 毫米,或约 595.2756x841.8898 点。有什么理由为什么在 iTextSharp 中,点值是四舍五入的,即。 595x842,即使它们是浮点数?
【问题讨论】:
标签: c# pdf-generation itextsharp rounding
根据 ISO 标准,A4 为 210x297 毫米,或约 595.2756x841.8898 点。有什么理由为什么在 iTextSharp 中,点值是四舍五入的,即。 595x842,即使它们是浮点数?
【问题讨论】:
标签: c# pdf-generation itextsharp rounding
它们不是在运行时四舍五入和获得的。 PageSize.A4.Right 和 PageSize.A4.Top 是为 A4 类型(它是 iTextSharp 中的一个内部类)定义的矩形(宽度、高度)的两个值。来自PageSize.cs:
/** This is the a4 format */
public static readonly Rectangle A4 = new RectangleReadOnly(595,842);
如您所见,它与舍入无关。
编辑:
有关该问题的确切解释,请参阅 Bruno 回答。引用他的评论:
关键是用户单位与点对应,但不定义为等于 积分
【讨论】:
我是负责 PDF 标准的 ISO 委员会的成员。该标准规定,PDF 中的所有测量值均以用户单位(NOT 点)表示。
默认情况下,一个用户单元大致对应一个印刷点,但 ISO 委员会意识到它们并不完全相同。
这确实是一个令人困惑的原因。我目前正在为下周在圣何塞举行的 ISO 会议做准备。我们正在研究 ISO-32000-2 (PDF 2.0),尽管 ISO-32000-1 已经处于良好状态,但我们仍然发现了一些例子,它说的是点而不是用户单位,我们将替换 point em> 由 用户单位 在 ISO-32000-2..
底线:通常认为 PDF 中的 A4 页面尺寸为 595 x 842 个用户单位(可能是因为整数值比实际值更受欢迎),这就是它在 iText 中以这种方式实现的原因。
【讨论】: