Сохранение в word с ошибками

Обсуждение Stimulsoft Reports.Net
Ответить
galinaBA
Сообщения: 5
Зарегистрирован: 11 фев 2021, 02:22

Сохранение в word с ошибками

Сообщение galinaBA » 19 апр 2021, 11:12

1. При сохранении отчёта с большим количеством текста (текст размещён, например, в нескольких TextBox-ах на одном DataBand) в Word происходит наложение текста - одной строки на другую. Приходится разделять в этом месте текст и помещать в разные TextBox - ы, и более того - разделять на разные DataBand-ы.
2. При использовании PageFooterBand - для вывода страниц или сносок, в конце страницы, где выводится например сноска, текст не видно (в word), но он выводится как бы за сноской. И если "поднять" текст вручную, то "скрытый" текст также поднимается и его становится видно.

При больших объемах текста при выводе сносок (разного размера текста) очень сложно, или невозможно, настроить так, чтобы текст при сохранении в word не накатывался друг на друга и не скрывался за сносками.

Подскажите, как можно решить эту проблему?
Aleksey
Сообщения: 2341
Зарегистрирован: 22 апр 2010, 02:57

Re: Сохранение в word с ошибками

Сообщение Aleksey » 19 апр 2021, 23:24

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

Вышлите пример отчета, который воспроизводит проблемы, для анализа.

Спасибо.
galinaBA
Сообщения: 5
Зарегистрирован: 11 фев 2021, 02:22

Re: Сохранение в word с ошибками

Сообщение galinaBA » 21 апр 2021, 03:13

Добрый день, выложили пример файла отчёта, сформированный отчёт в word, файл с комментариями.
Вложения
CommentsBigText.docx
(238.81 КБ) 27 скачиваний
BigText.docx
(39.15 КБ) 27 скачиваний
BigText.mrt
(112.44 КБ) 30 скачиваний
Aleksey
Сообщения: 2341
Зарегистрирован: 22 апр 2010, 02:57

Re: Сохранение в word с ошибками

Сообщение Aleksey » 23 апр 2021, 19:42

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

Спасибо за пример. Необходимо некоторое время для анализа проблемы.

Спасибо.
galinaBA
Сообщения: 5
Зарегистрирован: 11 фев 2021, 02:22

Re: Сохранение в word с ошибками

Сообщение galinaBA » 12 май 2021, 05:27

Добрый день,
Подскажите, уже есть какое-то решение данной проблемы?
Ivan
Сообщения: 633
Зарегистрирован: 10 авг 2006, 01:40

Re: Сохранение в word с ошибками

Сообщение Ivan » 12 май 2021, 14:17

Здравствуйте.
При сохранении отчёта с большим количеством текста (текст размещён, например, в нескольких TextBox-ах на одном DataBand) в Word происходит наложение текста - одной строки на другую. Приходится разделять в этом месте текст и помещать в разные TextBox - ы, и более того - разделять на разные DataBand-ы.
Вообще проблема экспорта отчётов в разные форматы - комплексная, т.к. в разных форматах есть свои ограничения и нюансы, из-за которых невозможно точно передать вид отчёта в превью.
В данном случае можно выделить две основные проблемы.

1. В вашем тестовом отчёте все текстбоксы лежат на одном датабэнде. У всех включено свойство "Grow to Height".
При этом возникает проблема при разделении текста по страницам - из-за того, что строка текста, попадающая на разрыв страницы, переносится на следующую страницу, размер последней части текста должен увеличиваться на размер этих перенесённых строк.
Но при включенном свойстве "Grow to Height" высота и так считается до низа отчёта, поэтому следующий текстбокс не сдвигается вниз, и верхний текст "залазит" под него.
Т.е. для решения этой проблемы надо у текстбоксов выключить свойство "Grow to Height".
Повторимся, эта проблема со свойством "Grow to Height" возникает, если на одном бэнде лежат один над одним несколько длинных текстов.

2. Отрисовка текста в MS-Word осуществляется собственными методами, которые не совпадают ни с Winforms (GDI+ (Standard, Typographic), GDI (WYSIWYG)), ни с Wpf, ни с Flex.
Поэтому текст в MS-Word выглядит иначе, чем в превью нашего продукта.
Обычно строка получается на несколько пикселей шире и поэтому последнее слово часто переносится на следующую строку.
Общая высота текста увеличивается, и последняя строка текста не помещается в ячейке таблицы и "обрезается".

Чтобы избежать этого, мы специально устанавливаем уплотнённый интервал шрифта.
Значение интервала задаётся свойством StiOptions.Export.Word.SpaceBetweenCharacters = -2;
Если этого не хватает, можно увеличить значение, например -4, -6 и т.п. Но буквы будут расположены более плотно и могут плохо читаться.

Также в некоторых случаях помогает такой workaround: надо у текстового компонента увеличить правый отступ, например установить Margins=0;10;0;0.
Переносы текста в превью получаются в других местах, и с некоторой вероятностью уже совпадают с переносами в MS-Word. :)

Встречается и ещё одна проблема в самом MS-Office.
Уже много лет, начиная с Office97 или ранее, была известна такая ситуация: текст выглядит немного по-разному в зависимости от выбранного принтера (обычно принтера по умолчанию).
Иногда отличается межстрочное расстояние, иногда символы отображаются чуть шире и предложения переносятся в других местах, соответственно в некоторых случаях текст может получиться на одну-две строки длиннее.
К версии Office2016 наконец что-то подкрутили в движке, и такая проблема почти перестала проявляться.
По крайней мере на доступных нам принтерах (реальных и виртуальных) мы больше не можем это воспроизвести.
Однако иногда пользователи сообщают нам о такой проблеме.
К сожалению, с этим мы ничего поделать не можем.
Например, ваша первая описанная проблема "Текст спрятался за сноску в конце 1ой страницы" у нас не воспроизводится, ваш присланный "BigText.docx" на первой странице у нас отображается корректно, последняя строка не прячется.

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