【发布时间】:2013-12-10 04:20:28
【问题描述】:
当 RDLC 报告以 PDF 格式打印时,我遇到了打印空字符的问题。它只影响font ligatures,我理解它是字母组合,例如:
- 提
- 英尺
- fi
- tt
我的研究表明,这些字符组合被组合成一个字形,打印出来时我将其视为一个空白区域。剪报示例:
在 PDF 上:
印刷:
因此症状是:
- PDF 在屏幕上显示良好
- 打印(物理打印或使用XPS writer)时,所有连字都显示为空格
到目前为止,我已将范围缩小到特定字体 (Calibri) 和特定服务器 (Windows Server 2003 R2)。 PDF 嵌入了字体:
我很乐意解决这个问题:
- 防止LocalReport.Render 合并连字
- 启用 Server 2003 将字体视为我的 Windows 7 机器
我不确定我将如何/从哪里开始比较字体环境,因此非常感谢想法和指针。
更新:
感谢下面的答案,我检查了两台机器上的charmaps,但它们看起来相同:
服务器(问题所在):
本地(没问题):
这也提醒我,我是通过复制字体文件并直接安装它们来安装字体的。两个版本都是 5.72、数字签名、TrueType Outlines,但是服务器显示 OpenType Font 而本地显示 OpenType Layout(可能只是不同的操作系统显示)。
有趣的一点是,如果我在本地使用 Calibri Regular 48,我会看到连字:
而服务器不使用它:
此外,两个 PDF 都是在同一台机器上打印的,但只有服务器上生成的 PDF 会出现问题,因此我认为打印机驱动程序不是问题?
【问题讨论】:
-
Here Calibri 缺少
tt特别提到。看起来,无论字体嵌入到 PDF 中,都使用本地 2003 安装副本。在 2003 机器上升级字体版本和/或使其始终使用嵌入式字体(打印机驱动程序选项?)是最好的解决方案。如果您只控制生成 PDF 的计算机,也许 降级 Calibri 有一个选项。 -
@VadimR - 看起来两种字体都包含相同的连字(不是你说的
tt或ti),但这并不能解释为什么我看到ti和@ 987654340@ 在一台机器上被省略,而不是另一台。 -
您能否提供一个示例 PDF 并指出打印输出中究竟缺少哪些连字,例如通过扫描打印输出?
-
如果我在记事本中写下“信息”(使用 Calibri Bold),则会即时创建连字并正确写入 postscript 或 XPS(10 个字形)。
-
如果您暂时从服务器中删除所有 Calibri,然后重新启动并尝试打印 PDF,该怎么办?
标签: c# pdf fonts rdlc ligature