Форум » [x]Harbour » рендерер печатных форм (помогите найти и понять) » Ответить

рендерер печатных форм (помогите найти и понять)

dimao: Добрый день! Я тут озадачился "овиндовслением" старой проги. Она печатает весьма полезный отчетик в текстовый файл, который приходится потом печатать через wordpad. Я как-то раз взял и сверстал его в табличке в ООWriter - получилось вдвое короче без потери читабельности. Подскажите, есть какие-то рендереры печатных форм, чтобы печатать таблички в windows или unix? Я никогда ничего подобного не писал, поэтому подробные хауту приветствуются. в программе формируется массив колонок для одной строки и передается примитивному рендереру-форматтеру. Он по своим настройкам делает многострочные ячейки, если нужно, заданной ширины. Спасибо. ЗЫ: пытался слету разобраться в формировании PDF - что-то озарение не пришло и просветление не наступило! Помогите, пожалуйста!

Ответов - 26, стр: 1 2 All

dimao: Кому интересно, вот один из прототипов того старого форматера: http://dimao.blogspot.com/2011/02/blog-post_13.html#links.

Dima: Выбрасывай печать после "форматера" через Win32Prn , если я верно понял задачу.

dimao: Я посмотрю, но, скорее всего, это не совсем то. Вот бы результат в виде таблички, как в Ворде или Ёкселе. С регулировкой шрифта, толщины линий таблицы, отступов. Хотя, пойду-ка почитаю, что такое win32prn. Спасибо!


Dima: dimao пишет: Вот бы результат в виде таблички, как в Ворде или Ёкселе Делай тогда в Excel , поможем.

dimao: Dima пишет: поможем Спасибо! Тогда, можно слегка подробнее с примерчиком оформления хотя-бы одной строки таблицы с настройками? вчера скачал последнюю ночную сборку Харбора - пока больше ничего нет. Что еще нужно?

Dima: Начни с простого примера из .........core-master\contrib\hbwin\tests\ole.prg Кстати табличку можно сделать и с помощью http://clipper.borda.ru/?1-4-0-00000815-000-0-0-1539625509

Andrey: Посмотри примеры DBF_to_XLS_03 и DBF_to_DOC_03 на https://abonent4.ru/minigui/ Там они правда на МиниГуи, но текст оттуда можешь взять в Харбор.

dimao: Dima пишет: Кстати табличку можно сделать и с помощью http://clipper.borda.ru/?1-4-0-00000815-000-0-0-1539625509 Спасибо. Чуть поднапрягся и собрал-таки тестовый пример, найденный на просторах сети! Вот может быть это то, что нужно, судя по виду. Буду разбираться с кодом!

dimao: Спасибо! Я сначала посмотрю на pagescript, потом на OLE. Если что- то не пойму - спрошу.

dimao: Не, PageScript не прокатит. Он просто делает имитацию виндового документа. На самом деле все так же на абсолютных координатах, не переносит текст внутри ячейки. Придется OLE копать.

Dima: dimao пишет: не переносит текст внутри ячейки Переносит если мы говорим о Pstextbox (тут важно подобрать высоту , размер шрифта и толщину рамки если таковая будет)

MIKHAIL: Я для себя сделал небольшую функцию для формирования отчетов в OO scalc. На основании шаблона документа, в котором задаются шапка подвал и табличная часть, можно выводить данные с форматированием ячеек. Данные подготавливаются в массиве и передаются в функцию, которая формирует отчет. Если нужно, могу скинуть.

SergKis: dimao Возможно будет интересно, таблица xls из xml без ole, т.е. на машине могут отсутствовать excel, scalc, а отчет можно сформировать с цветами, фонтами .... Это использование hbxlsxml.lib Пример \MiniGui\SAMPLES\Advanced\Tsb_Brw2xml

dimao: Dima пишет: Переносит если мы говорим о Pstextbox Ну вроде про него. Получается, нужно самому задать размер ячейки и туда напечатать, а переносы прога сама сделает, если сможет? высоту ячейки сама не подбирает?

dimao: MIKHAIL пишет: Если нужно, могу скинуть. Скиньте, если можно.

dimao: SergKis пишет: таблица xls из xml без ole Вот это интересно - побЁг смотреть!

Dima: dimao пишет: Получается, нужно самому задать размер ячейки и туда напечатать, а переносы прога сама сделает, если сможет? Да Вот пример авто переноса Поиграйся и поймешь. dimao пишет: высоту ячейки сама не подбирает? Нет , но при желании можешь это сделать сам

dimao: Ясно. Просто у меня задача наименьшей кровью сделать вывод в какую-то удобопечатаемую табличку. Наверное метод xlsxml подойдет лучше. Буду пробовать.

MIKHAIL: отчет в scalc нужен установленный openoffice и вроде еще Microsoft Visual C++ 2015 Redistributable (x86) пример на скорую руку накидал, если что не работает пиши, может какую то функцию забыл вставить...

Haz: dimao пишет: Наверное метод xlsxml подойдет лучше. я на него перешёл в отчётах, но есть специфика. 1 При построении отчёта ячейки заполнять нужно только слева направо и сверху вниз. 2 К моменту вывода ячейки все форматы должны быть явно описаны выше. 3 неудобное информирование об ошибках со стороны Excel. 4 Исходного кода поболее надо чем при выводе OLE 5 есть незначительные мелочи, не реализованные в библиотеке Но в целом, это пока для меня самый удобный инструмент.

SergKis: Haz пишет Но в целом, это пока для меня самый удобный инструмент. Подтверждаю. Оч. давно используем платный LibXL, но попробовал xlsxml и теперь все таблицы получаю им. Главное, первым делом создать описания всех стилей, а потом вывод как на матричный принтер слева на право и сверху вниз

Dima: SergKis пишет: потом вывод как на матричный принтер слева на право и сверху вниз Это конечно минус , в Ole можно прыгнуть куда угодно , но это дело привычки наверное :)

SergKis: Dima пишет Это конечно минус , в Ole можно прыгнуть куда угодно , но это дело привычки наверное Минуса не вижу. В проекте формы-таблицы мы всегда знаем ее показатели, но не содержимое. Описываем показатели, потом ссылаемся на них при связке с информацией при выводе. Скорость получения отчета получается приятная. + наличие excel, calc не обязательно, если что, отсылаем xml кому надо ...

MIKHAIL: SergKis пишет: Минуса не вижу Смотря какие задачи стоят. Интерактивности и автоматизации макросов в xml по моему не засунуть

Haz: MIKHAIL пишет: Интерактивности и автоматизации макросов в xml по моему не засунуть Формул сколько угодно. Даже удобнее чем в OLE. То чего нет, к примеру форматирование перед печатью я выполняю открыв xml через ту же ole

krutoff: Может не в той теме пишу, но продублирую. Попробовал XLSXML - отлично! Но заказчик захотел поле Number 16 знаков для номера банк.карты и вывод успешно загнулся. Я доковырял до модуля xlsxml_s.prg строка 123: ::writeData( "Number", row, column, AllTrim( Str( xData, 18, 6 ) ), style ) Получается, если разрядность больше - идут звезды при выводе. Не знаю, кто поддерживает этот модуль, - поправьте, плз.



полная версия страницы