Конвертер изображений / форм в Pascal / Delphi code converter?

#image #delphi #forms #canvas #pascal

#изображение #delphi #формы #холст #pascal

Вопрос:

Кто-нибудь знает о каком-либо редакторе, позволяющем визуально создавать форму (под формой я имею в виду не форму DFM или Delphi, а «бумажную форму», подобную тем предварительно напечатанным формам, которые вы заполняете некоторой информацией) и который генерирует команды pascal для рисования этой формы на холсте принтера (или изображения)?

Что я хочу, так это простой способ визуально нарисовать / спроектировать эту форму, состоящую только из строк и текста, и способ преобразовать это в команды Pascal, которые при запуске нарисуют эту форму на холсте (изображении или принтере) с соблюдением исходного макета и масштаба, не имеет значения DPI холста, на котором она рисуется.

Обновление: Возможно, я недостаточно четко представлял, что мне нужно и зачем мне это нужно. Я разработал компонент с открытым исходным кодом под названием TFreeBoleto (freeboleto.sf.net ). Используется для создания и печати банковских бланков (распространенный метод выставления счетов населению в Бразилии). Прямо сейчас компонент использует изображение TBitmap, содержащее маску «заготовки», и методы ввода текста для динамических областей (т.Е.: номер заготовки, имя клиента и т.д.). Это нормально, когда смотришь на экран, но некоторые люди жалуются, что качество напечатанного изображения не очень хорошее. Компонент использует процедуру BltTBitmapAsDib для максимального повышения качества печати, но некоторые люди все еще считают, что этого недостаточно. Итак, моя идея заключалась в том, чтобы избежать использования растрового изображения в качестве макета формы и нарисовать все непосредственно на canvas (как форму, так и принтер). Посмотрите здесь пример того, как выглядит банковская заготовка.

Конечно, ReportBuilder и / или FastReport могли бы решить проблему, но они не бесплатны, поэтому я не могу включить их в компонент. Мне нужно «собственное» решение, которое могла бы скомпилировать любая стандартная установка Delphi.

Комментарии:

1. Мне кажется, вам нужен пакет редактора векторной графики с текстовыми и линейными объектами, который может редактировать, просматривать и печатать файлы WMF, EMF или SVG. Если это так, то часть «конвертер кода» в вашем названии и вопросе совершенно неверна.

2. Уоррен, мое первое желание — иметь все на чистом pascal. Я мог бы сделать это с помощью textout и других методов «рисования» непосредственно на холсте, но это заняло бы действительно много времени. Вот почему я подумал о каком-нибудь визуальном редакторе, который позволил бы мне визуально нарисовать то, что мне нужно, и преобразовал бы это в команды «pascal».

3. Хм. Это интересная концепция, но я действительно думаю, что вам было бы лучше использовать мета-файл (WMF) плюс несколько наложений динамического текста x, y, а не код для рисования картинки. Возможно, вам будет интересно узнать, что метафайлы на самом деле являются просто сериализованной формой вызовов Win32 GDI. Итак, если хотите, это код (вызовы GDI API), хранящийся в файле.

Ответ №1:

Возможно, вы получите то, что хотите, из конструктора отчетов Fast Reports, который представляет собой коммерческую систему отчетности для Delphi. Помните, что отчет — это просто страница. Эту страницу можно отобразить на экране или распечатать на принтере.

Вы также можете обнаружить, что вам поможет что-то вроде TRichView.

Независимо от того, используете ли вы TRichView в частности или нет, я бы рассмотрел возможность использования HTML для выполнения того, что вы хотите. Я бы использовал HTML CSS для создания макета экрана и принтера, который также можно просмотреть в Интернете. Для простого текстового макета плюс текстовые поля, я думаю, может быть достаточно даже простого HTML и HTML-таблиц. Для визуального оформления простых текстовых страниц с использованием приложения Delphi я бы использовал TRichView.

В обоих случаях вы бы создавали документы, а не код. Создать код, который создает страницу, без использования какой-либо системы документов, было бы действительно очень сложно, и я не уверен, что вы действительно стали бы делать с этим кодом, поскольку вам понадобился бы компилятор или интерпретатор, чтобы преобразовать этот код во что-то, что вы могли бы использовать. Пожалуйста, уточните, что вы подразумеваете под «созданием кода» и какой синтаксис вы хотели бы, чтобы этот код использовал. Если HTML — это код в вашем определении «кода», то, возможно, HTML — лучший вид «кода» для вашей проблемы.

Комментарии:

1. Пожалуйста, проверьте мое обновление исходного вопроса. Я не думаю, что TRichView достаточно «мощный», чтобы обрабатывать форматирование, которое мне нужно.

2. Ваш вопрос стал практически без ответа, даже после его редактирования.

Ответ №2:

Я работаю с формами с помощью WPTools. Это также коммерческий продукт. Ядро — это очень хороший текстовый процессор и конструктор форм. Движок может отображать текст и формы на любом холсте (экран, принтер, также создавать PDF) и обладает высокой гибкостью. Выходные данные в основном в формате RTF и html.

Я также не вижу преимуществ в создании кода на pascal для перерисовки формы. Я думаю, что вам нужен хороший WYSIWYG-редактор, который создает документ, соответствующий вашим потребностям.

Комментарии:

1. Извините, я забыл сказать, что я не могу использовать коммерческие компоненты.

Ответ №3:

Проверьте ReportBuilder @ http://www.digital-metaphors.com

Это коммерческий инструмент для создания отчетов для Delphi — долгое время, очень высокого качества, со всем собственным исходным кодом Delphi, входящим в комплект поставки. Прямо сейчас я использую его для важного коммерческого проекта и настоятельно рекомендую его (я не работаю на них). За эти годы я использовал МНОГО инструментов для создания отчетов на Delphi, и этот — лучший IMO.

RBuilder также имеет обширную поддержку эмуляции бумажных форм, см.:http://www.digital-metaphors.com/products/report_design/form_emulation.html

Я не работал с этой функцией, но вы можете загрузить полнофункциональную демо-версию и попробовать ее.

Комментарии:

1. Пожалуйста, проверьте обновление моего первоначального вопроса. Я не могу использовать коммерческие компоненты для этого.

2. Если вы предоставляете полностью упакованный готовый к установке / запуску компонент, даже если у него открытый исходный код, вам не нужно включать коммерческие пакеты, которые вы использовали для сборки компонента — все это скомпилировано и связано с вашим распространяемым двоичным файлом — просто убедитесь, что вы не распространяете с «пакетами времени выполнения».

Ответ №4:

Вы можете использовать Adobe Acrobat (полную версию) для создания форм.

Затем вы можете использовать бесплатную программу Acrobat Reader для отображения и печати форм или другого COM-объекта в вашем приложении.

Я думаю, что это лучшее решение для вас.

PS Все инструменты для создания отчетов, которые включены в Delphi, бесплатны для разработки формы и могут свободно распространяться, если пользователь только просматривает и печатает уже разработанные отчеты.

То же самое справедливо для Adobe Acrobat (вы можете распространять формы), но вы добавили, что вам нужно распечатать форму и немного текста поверх формы. Возможно, это проще, если вы используете отчеты, но то же самое можно сделать и с помощью PDF.

Большинство механизмов создания отчетов не имеют открытого исходного кода, но доступны для бесплатного распространения. Существует множество компонентов для создания PDF — платных (одноразовых), бесплатных, а также с открытым исходным кодом.

PPS Я прочитал ваше обновление во второй раз. Поскольку вы используете TBitmap и можете выводить текст, вы можете использовать TMetafile. Существует множество редакторов для метафайлов, и метафайлы можно распространять бесплатно.

Комментарии:

1. Это сайт с ответами по программированию. Я полагаю, что OP спрашивает о том, как писать программное обеспечение, а не как устанавливать программное обеспечение других людей.

2. Я не могу найти никакого кода в других сообщениях, кроме предложений по использованию наиболее подходящей библиотеки. И я не думаю, что это зло — использовать хорошую и проверенную библиотеку вместо того, чтобы писать код с нуля.

3. Я помню, как читал некоторые обсуждения, где люди говорили, что использование Metafile работает не так, как ожидалось, в 100% случаев. Похоже, у него есть некоторые проблемы с растягиванием и т.д., А также некоторые несовместимости с драйверами некоторых принтеров. Я все равно перепроверю информацию о метафайлах и, возможно, проведу несколько тестов.

4. Использование библиотеки и использование полной готовой к использованию программы — это совершенно разные вещи.