Страница 1 из 1

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

Добавлено: 02 июл 2008, 11:53
ask
Здравстуйте. На нашем предприятии есть небольшая специфика - пакетная печать документов. При этом создаются и отправляются на печать сотни документов подряд, так что актуальна проблема скорости обработки репортов. Все бы хорошо, простые отчеты создаются и обрабатываются достаточно хорошо, но большинство отчетов содержат в себе рисунки, которые берутся из базы данных. Проблема же состоит в том что при пакетной печати скорость обработки докуметов ниже, чем скорость печати принтеров, т.е. не успевает забиваться очередь печати принтера. Понимаю, что здесь скорее вопрос производительности виртуальной машины, просто хотелось бы услышать ваше экспертное мнение на тему ускорения обработки печатных форм с рисунками. Перепробовал достаточно много методов и печать из другого потока и перенесение локального пула очереди печати на отдельный сервер. Заранее спасибо.

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

Добавлено: 02 июл 2008, 17:57
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();
Спасибо.

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

Добавлено: 02 июл 2008, 19:52
Edward
Переведите также, если возможно, изображения для отчетов в EMF или WMF форматы, это уменьшит траффик от отчета к принтеру.

Спасибо.

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

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

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

Добавлено: 06 май 2009, 10:28
Сергей
Доброго времени суток.

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

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

Спасибо.

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

Добавлено: 07 май 2009, 21:37
Edward
Здравствуйте.

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

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

Спасибо.

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

Добавлено: 08 май 2009, 14:14
Сергей
Здравствуйте.

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

Спасибо.

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

Добавлено: 09 май 2009, 18:44
Jan
Здравствуйте,

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

Спасибо.