Скорость печати

Обсуждение Stimulsoft Reports.NET
Ответить
ask
Сообщения: 50
Зарегистрирован: 21 ноя 2007, 11:02
Откуда: Kazan

Скорость печати

Сообщение ask »

Здравстуйте. На нашем предприятии есть небольшая специфика - пакетная печать документов. При этом создаются и отправляются на печать сотни документов подряд, так что актуальна проблема скорости обработки репортов. Все бы хорошо, простые отчеты создаются и обрабатываются достаточно хорошо, но большинство отчетов содержат в себе рисунки, которые берутся из базы данных. Проблема же состоит в том что при пакетной печати скорость обработки докуметов ниже, чем скорость печати принтеров, т.е. не успевает забиваться очередь печати принтера. Понимаю, что здесь скорее вопрос производительности виртуальной машины, просто хотелось бы услышать ваше экспертное мнение на тему ускорения обработки печатных форм с рисунками. Перепробовал достаточно много методов и печать из другого потока и перенесение локального пула очереди печати на отдельный сервер. Заранее спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Скорость печати

Сообщение Edward »

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

Если есть возможность подготовить документы к печати заранее, то возможен вариант сохранения построенных отчетов в mdc или mdz формат. Формат mdz - это упакованный zip - архиватором mdc файл.
Для загрузки и сохранения построенных отчетов используются следующие команды:

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

report.Render(false);

report.SaveDocument(string path);
report.SavePackedReport(string path);

report.LoadDocument(string path);
report.LoadPackedDocument(string path);
Если Вы загружаете отчеты перед построением из шаблонов, компилируете каждый раз перед построением, то это также потребляет память и процессорное время в большей степени, чем предварительно скомпилированный в dll отчет. Здесь пример кода, который автоматизирует процесс подготовки шаблона отчета к построению компиляцией его в dll:

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

StiReport report = null;
                    
string compiledReportFile = "report.dll";

if (File.Exists(compiledReportFile))
{
report = StiReport.GetReportFromAssembly(compiledReportFile, true);
    report.RegData("MyData", dataSet);
    report.Render();
}
else
{
    report = new StiReport();
    report.Load(file);
        
    report.RegData("MyData", dataSet);
                                        
        report.Compile(compiledReportFile);                        
            
    report.Render();
}
report.Show();
Спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Скорость печати

Сообщение Edward »

Переведите также, если возможно, изображения для отчетов в EMF или WMF форматы, это уменьшит траффик от отчета к принтеру.

Спасибо.
ask
Сообщения: 50
Зарегистрирован: 21 ноя 2007, 11:02
Откуда: Kazan

Скорость печати

Сообщение ask »

Попробовал. Было 2 возможный варианта: певый - работать с одним обьектом StiReport и использовать блокировки при печати этого обьекта из других потоков.
Второй - передавать в потоки обьект отрендеренного отчета через SaveDocumentToString или SaveDocument. Навскидку можно сказать что печать во втором случае должна быть быстрее, поскольку печатающих потоков могу запускать хоть целую кучу. Однако практика показала иное. Печать с блокировками работает в 2 раза быстрее чем во втором случае. Безусловно здесь сказывается специфика наших отчетов - обилие рисунков, конвертация которых в стринг и обратно съедает все преимущество многопоточной печати. Однако.
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

Скорость печати

Сообщение Сергей »

Доброго времени суток.

Есть отчет на 2 тысячи страниц. Рендерится в предварительном просмотре быстро. Но при печати очень низкая скорость, порядка 100 страниц за 2,5 минуты. То есть 2 тысячи страниц будут отправляться на печать 50 минут. Проблема решается предварительным экспортом в PDF и уже распечаткой из него. При этом экспорт 2 тыс. страниц занимает 2 минуты, отправка получившегося PDF на печать - 5 минут.

Можно как-то получить аналогичную печати через PDF скорость (или бОльшую :dreamer: )?

Спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Скорость печати

Сообщение Edward »

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

Скорее всего вопрос в количестве отправляемой информации на печать на принтер. Это получается слабым звеном в описанно ситуации. Каков размер Pdf файла?

Также уточните, пожалуйста модель принтера и как он подключен к системе.

Спасибо.
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

Скорость печати

Сообщение Сергей »

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

Размер получаемого PDF файла в 2000 страниц - 5,51 МБ.
Принтер Xerox DocuTech 180 HLC. Подключен как "стандартный TCP/IP".
Насчет объема информации. Даже если печатать в файл, то скорость отправки на печать не меняется. Причем, по-моему (точно не проверял), это не зависит от модели принтера и подключен ли он вообще (печатал на "FILE" принтер, установленный через AdobePS Driver).

Спасибо.
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Скорость печати

Сообщение Jan »

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

Сложно что-то сказать. В момент печати генаратор отчетов рисует всю информацию на странице на канве принтера. Также перед печатью каждой страницы производится передача ее параметров принтеру. Какой-то из этих моментов выволняется медленно. Пришлите пожалуйста mdc файл отчета для изучения на support@stimulsoft.com.

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