18.04.2012, 18:54 | #1 |
Участник
|
Выгрузка отчета в RTF - усечение полей.
Добрый день.
Может кто-нибудь решал проблему усечения полей отчета при выгрузке в RTF? Есть отчет, на нем куча контролов с типом Text (статичный текст). Шрифт Arial,7 или больше. Ширина контролов стоит Auto. Отчет выглядит нормально на экране и печати. При сохранении его в RTF, происходит систематическая ошибка в определении ширины контролов в меньшую сторону. Из-за чего происходит усечение последних 1-2 символов, либо идет попытка сделать перенос текста на следующую строку и тогда теряется уже последнее слово целиком. Для выгрузки в PDF проблема тоже существует, но проявляется на меньшем числе контролов, т.е. почти не заметна. Глюк воспроизводится на ax 3.0 и ax 2009 Иногда (похоже при выборе определенного принтера, но точно установить не удалось) эффект пропадал. Опытным путем удалось установить, что если явно сделать ширину контрола не Auto, а проставить фиксированную ширину, равную числу символов в тексте + 1 ( единица измерения ширины контрола Char) то все становится нормально. Способ работает, но очень уж неудобен в использовании. Может есть вариант попроще ? |
|
14.08.2017, 16:37 | #2 |
Участник
|
Похожая ситуация, только текстовое поле в отчете со свойством DynamicHeight = Yes. В аксапте и при печати на принтер всё хорошо. При выводе в RTF пропадает часть данных. Заметил что это происходит из-за алгоритма переноса на новую строчку. В аксаптовской форме отчета при переносе место для разрыва ищется по пробелу и по "-", возможно еще какие-то символы.
При выгрузке в RTF ищутся в первую очередь пробелы и там рвется, но при этом высота для текста не увеличивается, в итоге часть данных пропадает. Заметил такое же поведение при выгрузке в PDF. Но там можно повлиять на алгоритм внеся исправления в метод breakText (внутренний метод findLastBlank) класса PDFViewer. Подскажите, через какой класс создается RTF? DAX 2009 SP1 RU6 Последний раз редактировалось Daiver; 14.08.2017 в 16:53. |
|
14.08.2017, 17:22 | #3 |
Участник
|
Штатным образом все делали.
|
|
14.08.2017, 23:30 | #4 |
Участник
|
Цитата:
Заметил такое же поведение при выгрузке в PDF. Но там можно повлиять на алгоритм внеся исправления в метод breakText (внутренний метод findLastBlank) класса PDFViewer.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
15.08.2017, 08:32 | #5 |
Участник
|
X++: int findLastBlank (str _s) { int i = 0; for (i = strlen(_s); i >= 1; i--) { if (substr(_s, i, 1) == ' ') break; } return i; } X++: if (substr(_s, i, 1) == ' ' || substr(_s, i, 1) == '-') Последний раз редактировалось Daiver; 15.08.2017 в 08:54. |
|
|
За это сообщение автора поблагодарили: Logger (10), Weez (2). |
15.08.2017, 09:01 | #6 |
Участник
|
Можно чуть подробнее? Что именно делали штатным образом? Может есть где-то настройка форматирования RTF, или имеется ввиду что сами контролировали в коде ширину контрола?
Мне хотелось бы посмотреть на класс который формирует RTF при сохранении отчета, наверняка там есть нечто подобное как и в классе PDFViewer, но с ходу не нашел этот класс Может подскажите где копнуть? |
|
15.08.2017, 09:06 | #7 |
Участник
|
Цитата:
Сообщение от Daiver
Можно чуть подробнее? Что именно делали штатным образом? Может есть где-то настройка форматирования RTF, или имеется ввиду что сами контролировали в коде ширину контрола?
Мне хотелось бы посмотреть на класс который формирует RTF при сохранении отчета, наверняка там есть нечто подобное как и в классе PDFViewer, но с ходу не нашел этот класс Может подскажите где копнуть? Багу просто обошли. Проявлялась она так : в заголовке табличной части отчета был заголовочный текстовый контрол высотой где то в 3-4 строки. Текст в обычном отчете - переносился. При выгрузке в RTF - не переносился а был написан в одну строку так что внизу контрола была пустота а на верхней строке усеченный текст. Мы отредактировали отчет - сделали вместо одного контрола - несколько в ручную разбив текст на куски. Штатным образом для авторазбиения там ничего настройками сделать нельзя второй вариант - описан в заголовке темы. Там просто играли шириной контролов, можно занулить у них margin и немножко подвинуть размер. Как правило хватало. Только модификация, которую мы так и не делали. Последний раз редактировалось Logger; 15.08.2017 в 09:08. |
|
|
За это сообщение автора поблагодарили: Daiver (1). |
Теги |
pdf, rtf, выгрузка в rtf, отчет |
|
|