【问题标题】:iTextSharp A4 size roundingiTextSharp A4 大小四舍五入
【发布时间】:2015-06-17 23:46:57
【问题描述】:

根据 ISO 标准,A4 为 210x297 毫米,或约 595.2756x841.8898 点。有什么理由为什么在 iTextSharp 中,点值是四舍五入的,即。 595x842,即使它们是浮点数?

【问题讨论】:

    标签: c# pdf-generation itextsharp rounding


    【解决方案1】:

    它们不是在运行时四舍五入和获得的。 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 回答。引用他的评论:

    关键是用户单位与点对应,但不定义为等于 积分

    【讨论】:

    • +1:这些值确实没有四舍五入。请不要再链接到 SourceForge 上的邮件列表:我们已放弃该列表以支持 SO。关键是用户单位与点对应,但不定义为等于点。
    • 感谢布鲁诺的澄清,我会从我的回答中删除链接。
    【解决方案2】:

    我是负责 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 中以这种方式实现的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 2012-08-04
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多