C# 报表查看器字体仅在WIndows Server计算机上拉伸

C# 报表查看器字体仅在WIndows Server计算机上拉伸,c#,.net,reportviewer,C#,.net,Reportviewer,我开发了一个制作运费账单的小应用程序,用户可以在其中输入他们想要的信息,并可以预览(一个带有ReportViewer控件的表单正在打开)或直接打印。reportviewer使用嵌入到应用程序中的本地报表 这里的示例: 我已经在WinXP、Vista和Windows 7机器上试用了该应用程序,没有问题,报告预览正确 但是当直接在服务器上安装时(2003R2,64位),字体会被拉伸(甚至从控件打印)。当直接打印时(我创建了自己的代码来执行此操作,报告在EMF中呈现,然后打印),我也有同样的问题 但是

我开发了一个制作运费账单的小应用程序,用户可以在其中输入他们想要的信息,并可以预览(一个带有ReportViewer控件的表单正在打开)或直接打印。reportviewer使用嵌入到应用程序中的本地报表

这里的示例:

我已经在WinXP、Vista和Windows 7机器上试用了该应用程序,没有问题,报告预览正确

但是当直接在服务器上安装时(2003R2,64位),字体会被拉伸(甚至从控件打印)。当直接打印时(我创建了自己的代码来执行此操作,报告在EMF中呈现,然后打印),我也有同样的问题

但是当从ReportViewer控件保存为PDF或Word时,确实会正确显示

这是一个麻烦,因为我们将桌面远程到服务器以使用我们的主MRP程序,因此在服务器内使用该程序将是最好的,因此我们不必仅为一次操作而切换回桌面机器


顺便说一句,这是正常的Arial字体,所以它不是缺少字体的问题。此外,服务器上安装了两个Crystal(我认为是版本9)和SQL server 2003 reporting runtime。这是在使用Visual Studio 2010。

我在Win2008R2设备上托管的虚拟机上遇到了相同的问题。我找到的解决方案由用户发布:

修复服务器本身的关键是确保SSRS服务获取的桌面分辨率为1024x768(即4:3的比率),前提是服务器正在通过桌面服务远程处理


作为一种解决方法,我将尝试高保真打印中所述的解决方案。

使用4:3分辨率的远程桌面连接为我解决了此问题。

这是一个已知问题,Reporting Services和Dynamics NAV开发人员花了很长时间调查和剖析Windows远程桌面的根本原因礼宾问题

有两种解决方案可供选择:

  • 将VB2010主机升级到Windows 8或Windows Server 2012
  • 从安装Windows 7或Windows Server 2008R2操作系统的Windows远程桌面修补程序

  • 先保存到PDF然后再从那里打印是否有问题?如果只是为了打印按钮而自动打印,则不会。但是,在预览窗口中,知道用户这将太复杂,而不只是最小化远程桌面并从他们的计算机上执行。这就是原因,我已经通过更改分辨率测试了远程桌面,问题消失了。我已经“绕过”了这个问题,在报表查看器控件中禁用了打印功能(现在只是一个预览),并使用PNG而不是EMF完成了自己的打印过程。这对我来说也很有效。一件重要的事。您需要将DpiX/DpiY属性设置得足够高,例如200。如果忽略此项,默认值96将使打印的文档变得模糊。@我很高兴我也有同样的问题,但在实现解决方案时有困难。你有一些示例代码吗?或者一些提示来为我指明正确的方向,比如哪些活动要进行implement@Exulted当然,我已经看过这篇文章,并对它进行了多次审查,但不知何故,我无法理解它。我想防止字体在屏幕和打印机上被拉伸。@Roland:我在这里使用了示例代码:ttp://msdn.microsoft.com/en-us/library/ms252091(v=vs.80).aspx I将DeviceInfo更改为PNG,并且仅使用值为300的属性DpiX和DpiY。在PrintPage方法中,将图元文件类型更改为Image,并使用Image.FromStream加载它。其余的应该可以正常工作。在CreateStream方法中使用Path.GetTempFileName()可能也是一个好主意。