0

我生成了一个带有一行字符 M 的 PDF。每个 M 具有一致的宽度,但每个 M 之间的距离在变化:第一对是 2px,第五个有 3px,然后接下来的四个有 2px,第十个是 3px,等等。

由于我的代码中的任何 M 或中间的任何空格绝对没有区别,唯一的结论是某些宽度值无法在坐标系中正确缩放,每隔一段时间就会产生一个额外的像素。

这是 PDF 在绘制字形时计算水平移动量的方式:

在此处输入图像描述

在计算标准 96DPI 显示器时,每个像素以 0.75 单位表示(经过彻底检查和测试)。

考虑到这一点,我需要确保 Tx 值可以被 0.75 整除。

这是我所知道的:

  1. w0 是来自宽度数组 (widths[]) 的整数
  2. Tfs 是一个可被 0.75 整除的数字(由我设置)
  3. Th 为 100(默认)
  4. Tc 和 Tw 均为 0(默认)

所以 Tj/1000 需要是一个整数,这意味着 Tj 需要能被 1000 整除。

一种方法是获取和调整 Tj 值。另一种方法是在计算 Tx 值后访问它,并将其更改为可被 0.75 整除的最接近的值。

如何在 iText 中执行此操作?

还是我的整个假设是错误的?

来源:链接(第 252 页)

4

1 回答 1

1

我之前在 SO 上看到过这个问题,我真的不明白你想要达到什么目的。如果您以相等的距离绘制 M 字母,那么它们将以相等的距离显示。您遇到的是显示技术的限制,它是由像素拟合引起的。
创建一个以 96dpi 像素完美显示的 PDF 文件并不是 PDF 格式的设计目的。即使您创建了这样一个在一个查看器中按预期显示的 PDF 文件,您也不能保证它在另一个查看器中会以相同的方式显示。

于 2013-09-17T22:15:44.527 回答