Auto Print Dialog

Обсуждение Stimulsoft Reports.WEB
Ответить
Edvard2011
Сообщения: 20
Зарегистрирован: 20 июл 2017, 05:32

Auto Print Dialog

Сообщение Edvard2011 »

Добрый день.

У нас есть ASP.Net проект в котором ранее использовался Stimulsoft.Report.Web 2013.1.16
Запуск страницы там происходил так:

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

 protected void Page_Load(object sender, EventArgs e)
{
   stiViewer.Report = GetReport();           
   stiViewer.PrintDestination = Stimulsoft.Report.Web.StiPrintDestination.Pdf;          
   stiViewer.PrintToPdf();
}
Здесь надо обратить внимание на последний метод stiViewer.PrintToPdf()
Это было сделано для того, чтобы пользователь сразу после загрузки отчета имел на экране диалог печати.

Сейчас проект переделан под Stimulsoft.Report.Web 2021.4.4
Такого метода у вьюера уже нет. И теперь отчет появляется в браузере и просто ждет реакции пользователя.
Юзер недоволен тем, что ему приходится лишний раз ворочать тяжелую мышь и нажимать сначала меню Print, потом Print Pdf, а потом еще и Печать в окне диалога.

Есть ли возможность вываливать диалог печати кодом, как было ранее?

И второй вопрос по той же теме.
Я попытался воспользоваться методой описаной у вас ч\з StiReportResponse.
Т.е. :

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

protected void ButtonPrintHtml_Click(object sender, EventArgs e)
{
	var report = this.GetReport();
	StiReportResponse.PrintAsHtml(report);
       //StiReportResponse.PrintAsPdf(rpt);

}
В этом случае диалог печати действительно вываливается. Но это сопровождается рядом досадных побочных эффектов.
Диалог печати сопровождается появлением на заднем фоне уродливой страницы с отчетом вместо того, чтобы появляться во всплывающем окне на фоне текущей страницы. Уродливость ее в том, что она смещена влево и по сути страница не нужна, т.к. отчет хорошо виден в окне диалога печати. После печати пользователю нужно нажимать в браузере Back, тобы вернуться на исходную страницу, что его сильно утомляет.

StiReportResponse.PrintAsPdf(rpt) я тоже пробовал. Вылядит аналогично.

Можно ли избежать этого? Если нельзя, то можно ли печатать без диалога печати с параметрами по умолчанию? Или задать параметры печати кодом.
Другими словами минимизировать участие юзера в процессе печати.

Использовались: Windows 10, VS 2019, Stimulsoft.Report.Web 2021.4.4.0, Microsoft Edge 99.0.
Aleksey
Сообщения: 2906
Зарегистрирован: 22 апр 2010, 06:57

Re: Auto Print Dialog

Сообщение Aleksey »

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

Как вариант, вы можете использовать следуюший скрипт для вызова печати:
//where jsStiWebViewer1 -> "js" + Viewer ID
jsStiWebViewer1.postPrint("PrintWithoutPreview");

Спасибо.
Edvard2011
Сообщения: 20
Зарегистрирован: 20 июл 2017, 05:32

Re: Auto Print Dialog

Сообщение Edvard2011 »

Спасибо, скрипт работает.
Не могли бы вы ответить еще и на второй вопрос на счет StiReportResponse?
Aleksey
Сообщения: 2906
Зарегистрирован: 22 апр 2010, 06:57

Re: Auto Print Dialog

Сообщение Aleksey »

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

> Можно ли избежать этого? Если нельзя, то можно ли печатать без диалога печати с параметрами по умолчанию? Или задать параметры печати кодом.

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

Спасибо.
Edvard2011
Сообщения: 20
Зарегистрирован: 20 июл 2017, 05:32

Re: Auto Print Dialog

Сообщение Edvard2011 »

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

Оказалось, я рано обрадовался работе скрипта.
Он криво печатает многостраничные отчеты. Это видно на картинке ниже:

Изображение

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

Изображение

Если инициировать печать ч\з кнопку Print, то тоже все получается хорошо.

Изображение

Запуск скрипта роисходил таким образом:

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


<*.aspx>

<cc1:StiWebViewer ID="stViewer" runat="server" ViewMode="WholeReport" Width="100%" 
        Height="100%" Theme="Office2013WhiteBlue" OnGetReport="stViewer_GetReport"  
        ShowTooltipsHelp="False" ShowExportToDocument="True" PrintDestination = "Pdf"  
        ShowAboutButton="False" OnViewerEvent="stViewer_ViewerEvent" />
        

<*.aspx.cs>        
        protected void Page_Load(object sender, EventArgs e)
        {
        	...
        	if (!Page.ClientScript.IsStartupScriptRegistered(this.GetType(), "ShowPrintDialogScript"))
            {
                string script = @"<script type=text/javascript>
                            {   
                                //setTimeout(""jsstViewer.postPrint('PrintWithoutPreview')"", 5000); //setTimeout ничего не меняет
                                jsstViewer.postPrint('PrintWithoutPreview');          
                            }
                            </script>";

                Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowPrintDialogScript", script);
            }
        }
Использовались: Windows 10, VS 2019, Stimulsoft.Report.Web 2021.4.4.0, Microsoft Edge 99.0.
Aleksey
Сообщения: 2906
Зарегистрирован: 22 апр 2010, 06:57

Re: Auto Print Dialog

Сообщение Aleksey »

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

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

Спасибо.
Edvard2011
Сообщения: 20
Зарегистрирован: 20 июл 2017, 05:32

Re: Auto Print Dialog

Сообщение Edvard2011 »

Размер страницы совпадает в браузере и в репорте.
А остальные параметры Edge использует свои и откуда они берутся неясно. И как их прочитать тоже неясно. Насколько мне известно, у разных браузеров разные поля печати по умолчанию. И под какой из них подгонять репорт?
Если в диалоге печати(который вызван скритпом) вручную играться с полями, то можно добиться приемлимого вида. Но это неподъемная задача для юзера.

Если же вызвать диалог печати через кнопку Print(от StiWebViewer control), то никаких игр не требуется. Все идельно выглядит. На третьей картинке в предыдущем сообщении видно, как меняется печать. Это и есть цель. Т.е. сделать то же самое скриптом, например, иммитировать нажатие этой кнопки. Или еще что-нибудь.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Auto Print Dialog

Сообщение HighAley »

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

К сожалению, у нас нет вашего отчёта для проверки.
Но похоже, что страница растягивается браузером.
Попробуйте экспортировать отчёт в PDF, если там видите обрезанный текст, то так оно и есть.

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

Для правильной печати скриптом, лучше использовать команду PrintPdf:

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

jsStiWebViewer1.postPrint("PrintPdf");
Спасибо.
Edvard2011
Сообщения: 20
Зарегистрирован: 20 июл 2017, 05:32

Re: Auto Print Dialog

Сообщение Edvard2011 »

Cкрипт jsStiViewer.postPrint("PrintPdf"); помог.
Спасибо.
Вложения
rptDetailsUS.mrt
(59.29 КБ) 418 скачиваний
Aleksey
Сообщения: 2906
Зарегистрирован: 22 апр 2010, 06:57

Re: Auto Print Dialog

Сообщение Aleksey »

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

Спасибо за пример. Нужно время для анализа, о результатах дадим знать.

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