1

我设计了一个水晶报告,它将通过网络界面发送到特定的(条形码)打印机。允许在标准水晶报表查看器中生成报表会导致问题,因此我现在使用代码隐藏将报表直接发送到打印机。

ReportDocument Report = new ReportDocument();                      
ParameterDiscreteValue Order = new ParameterDiscreteValue();

Order.Value = Convert.ToInt32(txtOrder);
Report.Load(reportPath);
Report.SetParameterValue("OrderNo", Order);

PageMargins margins;
margins = Report.PrintOptions.PageMargins;
margins.bottomMargin = 0;
margins.leftMargin = 0;
margins.rightMargin = 0;
margins.topMargin = 0;

Report.PrintOptions.ApplyPageMargins(margins);
Report.PrintOptions.PrinterName = "\\\\printserver\\Zebra  Z6M Plus (300dpi)";                
Report.PrintToPrinter(1, false, PageNum, PageNum);

Report.Close();

从设计器 (CRXI) 打印时,一切正常,但是当 Web 界面将作业发送到打印机(任何打印机)时,它会将字体更改为 Times New Roman,这会弄乱所有字段大小。如果我使用标准的 .NET 报表查看器,它会使用正确的字体,所以我很确定更改是由创建/使用 ReportDocument 引起的。

如何在不将字体默认为 Times New Roman 的情况下将报告直接发送到打印件?

4

4 回答 4

0

我想到了这个想法:
与其直接将报告从 Crystal 发送到打印机,不如使用某种中间人,即先将 .rpt 导出为 .pdf,然后打印 PDF,该怎么办?

(是的,这将是一种非常“木桌”的桌子方法,但如果它有效,它就有效。)

于 2010-07-15T13:09:10.690 回答
0

您需要使用 RAS SDK API。适用于 Visual Studio 2010 (v13) 的 Crystal Reports包含此 API。(此代码在 Visual Studio 2005 的 Crystal Reports 中不起作用......我没有关于其他版本的信息)

将此引用添加到您现有的代码:

CrystalDecisions.ReportAppServer.ClientDoc
CrystalDecisions.ReportAppServer.Controllers
CrystalDecisions.ReportAppServer.ReportDefModel

并使用此代码(VB ...对不起)

Using rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
    rpt.Load(file, CrystalDecisions.[Shared].OpenReportMethod.OpenReportByTempCopy)
    rpt.SetDataSource(_ReportSource)
    Dim options As New CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions
    options.Collated = _Collate
    options.NumberOfCopies = _Copies
    ' TODO: Implement_startPageN and _endPageN
    Dim optPrint As CrystalDecisions.ReportAppServer.ReportDefModel.PrintOptions
    optPrint = rpt.ReportClientDocument.PrintOutputController.GetPrintOptions
    optPrint.PrinterName = _PrinterName                                                    rpt.ReportClientDocument.PrintOutputController.ModifyPrintOptions(optPrint)
    rpt.ReportClientDocument.PrintOutputController.PrintReport(options)
    rpt.Close()
End Using
于 2013-10-11T07:34:46.100 回答
0

虽然我使用的特殊字体似乎已包含在可以想象的每台服务器上,但我始终无法通过 Web 界面让它工作。我最终找到了一种标准的 windows 字体,它最适合这个项目的需求,并放弃了试图解决这个问题。

于 2010-07-23T16:30:20.380 回答
0

我试图根据报表上显示的数据更改 Crystal Report 字体。
我使用 Formate 公式使用标志条件更改字体。

if({?vIsRightToLeft}=true)then
"Attari Font"
Else
"Arial"
于 2019-03-04T05:14:12.240 回答