Как я могу исправить проблему с методом CrystalReport PrintToPrinter - PullRequest
0 голосов
/ 01 апреля 2019

Я настроил свой сервер iis на Windows 10 и развернул на нем веб-приложение mvc-5, все работает нормально, кроме Crystal Reports PrintToPrinter, когда я пытаюсь вызвать этот метод, ничего не печатается, а веб-приложение ничего не делает и просто висит там. но когда я разработал это приложение с vs17 на том же компьютере, метод printToPrinter работает нормально. Он застревает только после публикации на iis.

Я пытался

popt.PrinterName = printerSettings.PrinterName; rd.ReportClientDocument.PrintOutputController.PrintReport (Popt);

этот метод тоже. вот мой фактический код:

        DataTable dt = new DataTable();
        string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand(sqlQuery))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    sda.Fill(dt);
                }
            }
        }

        ReportDocument rd = new ReportDocument();
        rd.Load(Path.Combine(Server.MapPath("~/Reporting/Crystals/rptKitchenCopy.rpt")));


        rd.SetDataSource(dt);
        Response.Buffer = false;
        Response.ClearContent();
        Response.ClearHeaders();
        Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
        stream.Seek(0, SeekOrigin.Begin);
        PrinterSettings settings = new PrinterSettings();

        System.Drawing.Printing.PrintDocument pDoc = new System.Drawing.Printing.PrintDocument();

        CrystalDecisions.Shared.PrintLayoutSettings PrintLayout = new CrystalDecisions.Shared.PrintLayoutSettings();

        System.Drawing.Printing.PrinterSettings printerSettings = new System.Drawing.Printing.PrinterSettings();
        var dpn = settings.PrinterName;
        printerSettings.PrinterName = dpn;

        System.Drawing.Printing.PageSettings pSettings = new System.Drawing.Printing.PageSettings(printerSettings);

        CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions popt = new CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions();
        popt.PrinterName = printerSettings.PrinterName;
        rd.ReportClientDocument.PrintOutputController.PrintReport(popt);



        // rd.PrintOptions.PrinterName = "\\ ";
       // rd.PrintToPrinter(printerSettings, pSettings, false, PrintLayout);
       // rd.PrintToPrinter(1, true, 1, 1);

        return File(stream, "application/pdf", "KitchenCopy.pdf");

Я ожидаю, что он также будет печатать на сервере iis с принтером по умолчанию, который я разместил на той же машине.

1 Ответ

0 голосов
/ 03 апреля 2019

Я обнаружил причину этой проблемы, так как я размещал и разрабатывал свое веб-приложение на Windows 10 (оба на одной машине), причина этой проблемы была по умолчанию, что мой Windows 10 iis обнаруживал «печать Microsoft в PDF» как принтер по умолчанию, поэтому я отключил это в Windows и добавил

Настройки PrinterSettings = new PrinterSettings (); rd.PrintOptions.PrinterName = settings.PrinterName;

в моем коде. надеюсь, что это будет кто-то с той же проблемой. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...