2016-01-13 48 views
0

目前我遇到这样的问题,即从我们的c#内核进行打印时,使用其嵌入字体的矩阵打印机上的打印不起作用。打印机/水晶报告总是将字体更改为某些窗口字体。由于这个事实,打印单页非常慢。使用c#和水晶报告在矩阵打印机上打印

如果我直接用水晶报表设计器打印,一切工作都很好,并使用正确的字体。所以它工作,但不是从C#打印时。这意味着,驱动程序和打印机运行良好,并且水晶报告也可以将所有内容发送到打印机。就在我开始在.net应用程序中打印时,它不起作用。

在报告中设置了正确的打印机,并且我不覆盖任何设置。我只是创建报告并打印它:

private ReportDocument reportDocument = new ReportDocument('C:\\Rpt\\Test.rpt'); 
// Passing parameter and every thing to the report 
// Than print it: 
reportDocument.PrintOptions.PrinterName = "Tally"; 
reportDocument.PrintToPrinter(1, false, 0, 0); 

水晶报告中的.net打印引擎/运行时是否有一些错误?我的设计师没有使用.net为此,所以其他组件将被使用,这是有效的。

EDIT

this article从树液SNC,我发现:

FYI - CR设计器使用DEVMODE结构访问打印机,.NET使用>在系统.NET框架equivolent .Drawing.Printing.PrinterSettings

也许这是问题?

编辑2

使用Crystal Reports RAS进行打印,可以解决这个问题。我会试一试,让你知道。

谢谢大家!

回答

0

我不会说这是因为运行时,而是因为.NET接口调用Crystal Reports引擎的选项。通常情况下,您可以重新构建目标系统/打印机内置的字体。我不是Crystal Reports的专家,但是在PostScript和PDF中,您可以在文档中嵌入必要的字体,也可以让输出设备使用自己的字体。 CR必须具有类似的选项,但在客户端软件中使用它时,必须明确地激活它。

+0

我无法嵌入这些字体,因为它们不是TrueType字体。但是,谢谢:) – BendEg

+0

我不是指嵌入到PDF中的字体,而是打印机内置的字体。您基本上必须强制CR引用它发送到打印机的文档中的打印机字体。 – Neppomuk

+0

我做过了,使用PrintToPrinter时似乎不起作用。使用RAS解决了这个问题 – BendEg

相关问题