1

Webインターフェイスを介して特定の(バーコード)プリンターに送信されるCrystalレポートを設計しました。標準のCrystalReportViewerでレポートを生成できるようにすると問題が発生したため、現在、コードビハインドを使用してレポートを直接プリンターに送信しています。

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を作成/使用することで変更が発生していると確信しています。

フォントをデフォルトでTimesNewRomanに戻さずに、レポートを直接印刷物に送信するにはどうすればよいですか?

4

4 に答える 4

0

このアイデアは私に思い浮かびました。
レポートをCrystalからプリンターに直接送信する代わりに、ある種の仲介者を使用する場合、つまり、最初に.rptを.pdfにエクスポートしてから、PDFを印刷する場合はどうでしょうか。

(はい、それは非常に「木製のテーブル」テーブルアプローチになりますが、それが機能する場合は機能します。)

于 2010-07-15T13:09:10.690 に答える
0

私が使用していた特別なフォントは、考えられるすべてのサーバーに含まれているように見えましたが、Webインターフェイスを介して機能させることはできませんでした。私は結局、このプロジェクトのニーズに最も適した標準のWindowsフォントを見つけ、この問題を克服しようとすることをあきらめました。

于 2010-07-23T16:30:20.380 に答える
0

RASSDKAPIを使用する必要があります。Visual Studio 2010(v13)のCrystal Reportsには、このAPIが含まれています。(このコードは、Crystal Reports for Visual Studio 2005では機能しません...他のバージョンに関する情報はありません)

次の参照を既存のコードに追加します。

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

レポートに表示されるデータに応じて、CrystalReportFontを変更しようとしました。
Formate Formulaを使用して、フラグConditionを使用してフォントを変更します。

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