Страница 4 из 5

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 12 Март 2020, 19:55
morkovin
RaFaeL писал(а): 04 Март 2020, 12:39 огромное спасибо за наводку по фреймам в RTF. Реализовал класс по рисованию rtf фреймами, получилось просто бомбически, клиенты в восторге. Работает на основе данных, которые изначально подготавливаются для экспорта в xlsx, только в xlsx объект это ячейка, а тут фрейм, все остальное одинаково. Может кому пригодится творчество, поддерживается экспорт текстовых данных и картинок
Можно ли эти фреймы вставлять вручную в RTF-файл (Т.е. сделать шаблон для заполнения в Worde), а потом из программы обратиться к этим фреймам и заполнять их данными программно?

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 12 Март 2020, 19:57
RaFaeL
Для такого режима намного больше подходит режим с переменными в полях, смотрите выше

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 12 Март 2020, 20:09
morkovin
RaFaeL писал(а): 12 Март 2020, 19:57 намного больше подходит режим с переменными в полях, смотрите выше
При печати на бланках строгой отчетности расставлять эти поля сущее мучение, т.к. они подвергаются форматированию со стороны Worda.В результате всё съезжает. Хорошо если в допустимых пределах, но чаще в зависимости от содержимого - недопустимые пределы. А вот расставить фреймы поверх рисунка (подложки) и заполнить их - то что нужно. Ничего съезжать не будет. Но как к ним адресоваться из программы и т.д.?

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 12 Март 2020, 20:42
RaFaeL
Так а в чем проблема целиком документ RTF программно создать?

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 12 Март 2020, 21:09
morkovin
RaFaeL писал(а): 12 Март 2020, 20:42 Так а в чем проблема целиком документ RTF программно создать?
Т.е. "накрыть" миллиметровой сеткой скан бланка, нарисовать на нём фреймы, записать их координаты и указать их в программе? :(
Можно, конечно.
И всё-таки, фреймы обезличены? Или есть какой-нибудь Name-атрибут? Тогда можно было бы написать макрос и вставить его в файл-шаблон или еще что-то придумать.

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 12 Март 2020, 21:48
RaFaeL
morkovin писал(а): 12 Март 2020, 21:09 Т.е. "накрыть" миллиметровой сеткой скан бланка, нарисовать на нём фреймы, записать их координаты и указать их в программе?
Ну да
morkovin писал(а): 12 Март 2020, 21:09 И всё-таки, фреймы обезличены? Или есть какой-нибудь Name-атрибут? Тогда можно было бы написать макрос и вставить его в файл-шаблон или еще что-то придумать.
Имен у фреймов нет, это просто стиль абзаца. Еще раз - вставьте во фрейм переменные и замените через Fields.Update(), как выше описано. Фрейм останется на месте, текст заменится

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 16 Апрель 2020, 15:42
dik1970
Никто не сталкивался с переносом text-RTF полей в отчете? Есть отчет в середине которого выводится кусок RTF-текста переменной длины (заполняется из blob-а) и если он не влазит на текущую страницу, то переносится на следующую целиком. Можно ли динамически сделать разрыв страницы?

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 16 Апрель 2020, 17:10
kreator
Дело-то не в RTF. Если делать стандартно, то надо считать количество строк в контроле TEXT и руками его пилить и форсировать переход на новую страницу.

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 16 Апрель 2020, 17:39
dik1970
kreator писал(а): 16 Апрель 2020, 17:10 Дело-то не в RTF. Если делать стандартно, то надо считать количество строк в контроле TEXT и руками его пилить и форсировать переход на новую страницу.
С обычным текстом все понятно, но здесь строки то разные по размеру

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 16 Апрель 2020, 22:18
kreator
prop:LineHeight для каждой строки должен быть свой? Да, это я не подумал. Тогда, в качестве бреда, посмотреть:

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

MemoLineHeight = CustRpt$?Fil:MemoField{PROP:LineHeight, X#}
Недокументированно, но вдруг. Или:

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

MemoLineHeight = (CustRpt$?Fil:MemoField{PROP:Line, X#}){PROP:LineHeight}
Если и это нет, то тогда попробовать каждую строчку из rtf-текста перекидывать в отдельный однострочный rtf-контрол (prop:Line) и считать высоту.

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 16 Апрель 2020, 22:22
dik1970
Спасибо, завтра покручу.

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 16 Апрель 2020, 23:26
RaFaeL
Если что, высота строки текста в контроле не равна высоте строки текста в отчете! И также не равна высоте строки текста в RTF в Word. Там везде какие-то разные высоты, непонятно от чего зависящие. Т.е. берем текст неким шрифтом, меряем высоту, она будет ну допустим 11, выгружаем в rtf, там оно 12. Потом у этого же текста меняем шрифт, меряем, получаем допустим 12, выгружаем - 11! Разница за счет величины межстрочного интервала, который гуляет в широких пределах (я здесь не имею в виду полуторные интервалы и т.п., именно одинарный интервал в обычно текстовом контроле). Как правильно посчитать, так не не придумал

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 26 Апрель 2020, 12:55
dik1970
Как-то странно, вот такой контрол : TEXT,AT(16,0,180,6),USE(tech),RESIZE делится на строки через prop:Line, а вот
такой TEXT,AT(16,0,180,6),USE(tech),RESIZE,RTF(TEXT:FIELD) - нет

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 26 Апрель 2020, 19:31
Губин Игорь
dik1970 писал(а): 26 Апрель 2020, 12:55 RTF(TEXT:FIELD)
Воскури мануал. RTF - вот в чём проблема

Экспорт отчетов в doc/docx или аналоги. Какие есть варианты?

Добавлено: 26 Апрель 2020, 22:17
dik1970
это понятно, делать то что