我遇到了RDLC报告在以PDF格式生成时打印空字符的问题。它只影响font ligatures,我理解为字母组合,例如:
我的研究显示这些字符组合被组合成一个字形,我在打印时看到它是一个空白区域。示例剪报:
PDF格式:
印刷:
因此症状是:
到目前为止,我已将其缩小为特定字体(Calibri)和特定服务器(Windows Server 2003 R2)。 PDF嵌入了字体:
我为了解决这个问题,我很满意:
我不确定如何/在何处开始比较字体环境,因此非常感谢想法和指针。
更新
感谢下面的答案,我检查了两台机器上的charmaps,但它们看起来完全相同:
服务器(问题所在):
本地(没有问题):
这也提醒我,我通过复制字体文件并直接安装来安装字体。两个版本都是5.72,数字签名,TrueType轮廓,但服务器显示OpenType Font
,而本地显示OpenType Layout
(可能只是不同的操作系统显示)。
一个有趣的观点是,如果我在本地使用Calibri Regular 48,我会看到结扎线:
而服务器不使用它:
此外,两台PDF都在同一台机器上打印,但只有服务器上生成的PDF才显示问题,因此我认为打印机驱动程序不是问题吗?
答案 0 :(得分:5)
你可以通过在字符之间插入单词joiner字符(U + 2060)或旧系统来进行搜索并替换和断开连字,零宽度没有中断空格(U + FEFF)吗?这应该强制它不使用连字。
答案 1 :(得分:1)
通常,ReportViewer生成的PDF甚至是Reporting Services won't embed fonts生成的PDF:
PDF呈现扩展插件不嵌入字体。必须在报表服务器和用于查看报表的客户端计算机上安装报表中使用的字体。
因此我会:
%windir%\fonts
,单击Calibrì,右键单击每个ttf文件,选择Properties
和在File version
标签中查找Details
。gs -dPDFA -dBATCH -dNOPAUSE -dUseCIEColor -dHaveTransparency=false -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sPDFACompatibilityPolicy=1 -sOutputFile=output_filename.pdf input_filename.pdf
一些附注: