1. При сохранении отчёта с большим количеством текста (текст размещён, например, в нескольких TextBox-ах на одном DataBand) в Word происходит наложение текста - одной строки на другую. Приходится разделять в этом месте текст и помещать в разные TextBox - ы, и более того - разделять на разные DataBand-ы.
2. При использовании PageFooterBand - для вывода страниц или сносок, в конце страницы, где выводится например сноска, текст не видно (в word), но он выводится как бы за сноской. И если "поднять" текст вручную, то "скрытый" текст также поднимается и его становится видно.
При больших объемах текста при выводе сносок (разного размера текста) очень сложно, или невозможно, настроить так, чтобы текст при сохранении в word не накатывался друг на друга и не скрывался за сносками.
Подскажите, как можно решить эту проблему?
Сохранение в word с ошибками
Re: Сохранение в word с ошибками
Здравствуйте,
Вышлите пример отчета, который воспроизводит проблемы, для анализа.
Спасибо.
Вышлите пример отчета, который воспроизводит проблемы, для анализа.
Спасибо.
Re: Сохранение в word с ошибками
Добрый день, выложили пример файла отчёта, сформированный отчёт в word, файл с комментариями.
- Вложения
-
- CommentsBigText.docx
- (238.81 КБ) 293 скачивания
-
- BigText.docx
- (39.15 КБ) 327 скачиваний
-
- BigText.mrt
- (112.44 КБ) 300 скачиваний
Re: Сохранение в word с ошибками
Здравствуйте,
Спасибо за пример. Необходимо некоторое время для анализа проблемы.
Спасибо.
Спасибо за пример. Необходимо некоторое время для анализа проблемы.
Спасибо.
Re: Сохранение в word с ошибками
Добрый день,
Подскажите, уже есть какое-то решение данной проблемы?
Подскажите, уже есть какое-то решение данной проблемы?
Re: Сохранение в word с ошибками
Здравствуйте.
В данном случае можно выделить две основные проблемы.
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" на первой странице у нас отображается корректно, последняя строка не прячется.
Спасибо.
Вообще проблема экспорта отчётов в разные форматы - комплексная, т.к. в разных форматах есть свои ограничения и нюансы, из-за которых невозможно точно передать вид отчёта в превью.При сохранении отчёта с большим количеством текста (текст размещён, например, в нескольких 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" на первой странице у нас отображается корректно, последняя строка не прячется.
Спасибо.