Матричный режим

Обсуждение Stimulsoft Reports.NET
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Матричный режим

Сообщение Vital »

На данный момент наши возможности по управлению печатью на матричные принтеры сильно ограничены. Мы проверим проблему с кодировкой.

Спасибо.
Serg
Сообщения: 53
Зарегистрирован: 13 мар 2007, 11:44
Откуда: Ukraine

Матричный режим

Сообщение Serg »

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

Код: Выделить всё

string reportStr = report.GetReportForDotMatrixReport(encoding, 
						drawBorder, borderType, killSpaceLines, killSpaceGraphLines,
						putFeedPageCode, cutLongLines, zoomX, zoomY, 
						new StiPagesRange(StiRangeType.Pages, string.Format("{0}-{1}", 
						printDocument.PrinterSettings.FromPage, printDocument.PrinterSettings.ToPage), 0));

					StiRawPrinterHelper.SendStringToPrinter(printDocument.PrinterSettings.PrinterName, report.ReportAlias, reportStr, encoding);
Первая перекодировка происходит при экспорте

Код: Выделить всё

public void ExportTxt(StiReport report, Stream stream, StiTxtExportSettings settings)
{
...
StreamWriter sw = new StreamWriter(stream, encoding);
...
Вторая при печати

Код: Выделить всё

public static void SendStringToPrinter(string printerName, string docName, string text, Encoding encoding)
{
..
byte[] data = encoding.GetBytes(text);
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Матричный режим

Сообщение Edward »

Большое спасибо за предоставленную информацию. Вы нам сильно помогли в решении данного вопроса.

Патч будет доступен в версии от 5 мая.

Спасибо.

Serg
Сообщения: 53
Зарегистрирован: 13 мар 2007, 11:44
Откуда: Ukraine

Матричный режим

Сообщение Serg »

При попытке распечатки отчета в матричном режиме после диалога принтера выскакивает Exception "Value cannot be null.\r\nParameter name: encoding"

Код: Выделить всё

   at System.IO.StreamWriter..ctor(Stream stream, Encoding encoding, Int32 bufferSize)
   at System.IO.StreamWriter..ctor(Stream stream, Encoding encoding)
   at Stimulsoft.Report.Export.StiTxtExportService.ExportTxt(StiReport report, Stream stream, StiTxtExportSettings settings)
   at Stimulsoft.Report.Export.StiTxtExportService.ExportTxt(StiReport report, Stream stream, Encoding encoding, Boolean drawBorder, StiTxtBorderType borderType, Boolean killSpaceLines, Boolean killSpaceGraphLines, Boolean putFeedPageCode, Boolean cutLongLines, Single zoomX, Single zoomY, StiPagesRange pageRange)
   at Stimulsoft.Report.StiReport.GetReportForDotMatrixReport(Encoding encoding, Boolean drawBorder, StiTxtBorderType borderType, Boolean killSpaceLines, Boolean killSpaceGraphLines, Boolean putFeedPageCode, Boolean cutLongLines, Single zoomX, Single zoomY, StiPagesRange pageRange)
   at Stimulsoft.Report.Print.StiDotMatrixPrintProvider.Print(StiReport report, String printerName, Encoding encoding, Boolean drawBorder, StiTxtBorderType borderType, Boolean killSpaceLines, Boolean killSpaceGraphLines, Boolean putFeedPageCode, Boolean cutLongLines, Single zoomX, Single zoomY, Int32 fromPage, Int32 toPage)
   at Stimulsoft.Report.StiReport.PrintToDotMatrixPrinter(String printerName, Encoding encoding, Boolean drawBorder, StiTxtBorderType borderType, Boolean killSpaceLines, Boolean killSpaceGraphLines, Boolean putFeedPageCode, Boolean cutLongLines, Single zoomX, Single zoomY, Int32 fromPage, Int32 toPage)
   at Stimulsoft.Report.Render.StiPreviewControl.OnClickPrintButton(Object sender)
   at Stimulsoft.Report.Render.StiPreviewControl.InvokeClickPrintButton()
   at Stimulsoft.Report.Render.StiPreviewControl.tbPrint_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at Stimulsoft.Controls.StiToolButton.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at Stimulsoft.Controls.StiToolButton.OnMouseUp(MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)
...
Экспорт проходит нормально. Сохранение отчета из предварительного просмотра - тоже. Кодовая страница 866 - правильная. Экспортированный файл при печати на prn выводится правильно.
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Матричный режим

Сообщение Vital »

Поправили. Спасибо. Будет доступно в билде от 9 мая.
Ajax
Сообщения: 18
Зарегистрирован: 05 дек 2012, 18:52

Матричный режим

Сообщение Ajax »

Как програмно установить/сбросить опцию "использовать Escape-коды" в настройках Dot-Matrix Viewer?
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Матричный режим

Сообщение HighAley »

Здравствуйте.

Вы можете использовать следующую опцию:

Код: Выделить всё

StiOptions.Viewer.DotMatrix.UseEscapeCodes = true;
По умолчанию она выключена.

Спасибо.
Ответить