Конвертация отчетов в что-нибудь ...

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8036
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Конвертация отчетов в что-нибудь ...

Сообщение Игорь Столяров »

Привет всем !

Хотелось бы вернуться к давнему вопросу, который уже обсуждался.
Идея следующая - есть программа, которая генерит отчеты и рассылает их по e-mail.
Все хорошо, но плохо что страницы листов отчета в WMF.

Хотелось бы их конвертировать во что-то более удобоваримое. Например JPG или GIF.
Есть программы, которые конвертят векторную графику (WMF) в растровую (JPG, BMP, GIF).

В принципе, это делает Explorer - если в нем открыть WMF картинку с отчетом, то можно
сохранить ее в BMP, а потом уже через PaintBrush записать в JPG или GIF ....

Но хотелось бы эту нехитрую операцию встроить в прикладную программу.
Не знает ли кто-нибудь как это можно сделать средствами Clarion, через API Windows
или пусть даже какую-нибудь внешнюю библиотеку ? Особых требований нет ...

Заранее спасибо за любую информацию ! :)
Make Clarion Great Again ! 😎
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: Конвертация отчетов в что-нибудь ...

Сообщение seawolf »

Решал подобную задачу но на выходе был заказан Pdf. В этом случае от штатных средств C6 лучше отказаться (очень медленно делает преобразование) и использовать Image2Pdf. Работает очень быстро. Unlimited лицензия 250 $. Если все-таки речь WMF -> Tif,Jpeg или что-нибудь надо копать в сторону программ WMF(EMF)ToBmp или что-то подобное. Для преобразования между растрами однозначно FreeImage.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8036
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Конвертация отчетов в что-нибудь ...

Сообщение Игорь Столяров »

Да в общем-то с обработкой растровой графики и PDF все понятно и более того есть варианты ...
А вот как конвертнуть WMF в растровый формат .... ?
Make Clarion Great Again ! 😎
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: Конвертация отчетов в что-нибудь ...

Сообщение seawolf »

Если нет в природе чего-нибудь типа WmeToTif (BMP) могу предложить после WMF -> PDF крутнуть PDF далее через Gostcript GPL и получить bmp, tif, ppm и так далее.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Конвертация отчетов в что-нибудь ...

Сообщение Дед Пахом »

Если кому надо, сделал конвертер WMF -> BMP/GIF/JPG/PNG. Пользоваться так:
1. Зарегистрировать (нужен Framework 2.0 или выше):
c:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe "C:\ImageConverter\ImageConverter.dll" (полный путь к папке, где лежит dll, после этого её нужно класть под ноги к exe).
2. В коде что-то вроде

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

  OleCtrl=CREATE(0,CREATE:OLE)
  OleCtrl{prop:create}='ImageConverter.Converter'
  obj"=OleCtrl{prop:object}
  IF obj"[1] = '`'
    OleCtrl{prop:ReportException}=1
    OleCtrl{'Convert("' & CLIP(Src) & '", "' & CLIP(Dest) & '", "' & CLIP(imageFormat) & '")'}
    MESSAGE('Done!')
    DESTROY(OleCtrl)
  ELSE
    MESSAGE('ImageConverter не зарегистрирован!')
  END
Src - полный путь к wmf, Dest - полный путь к новому файлу, ImageFormat - один из BMP/GIF/JPG/PNG (например 'PNG', регистр букв не важен).

ЗЫ
меня хлебом не корми, дай комок на благо человечества сделать :D
Вложения
ImageConverter.zip
(2.11 КБ) 290 скачиваний
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8036
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Конвертация отчетов в что-нибудь ...

Сообщение Игорь Столяров »

Я конечно извиняюсь за свою наглость ... но нет ли у Вас "такого же, но без крыльев ?"
Т.е. без regasm.exe и FrameWork ? Например просто DLL из которой можно вызвать функции
конвертации в приложении Win32 ... А в остальном все классно, спасибо ! :)
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Конвертация отчетов в что-нибудь ...

Сообщение Дед Пахом »

Игорь Столяров писал(а):Я конечно извиняюсь за свою наглость ... но нет ли у Вас "такого же, но без крыльев ?"
Т.е. без regasm.exe и FrameWork ? Например просто DLL из которой можно вызвать функции
конвертации в приложении Win32 ... А в остальном все классно, спасибо ! :)
Не-а. Крылья как раз всю работу и выполняют, а моего кода там 3 строчки.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8036
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Конвертация отчетов в что-нибудь ...

Сообщение Игорь Столяров »

Помогите пожалуйста !

Не получается сформировать файл манифеста, для того, что бы получить программу, которая бы работала с ImageConverter.dll без регистрации DLL в реестре. Все сделал по описанию - но либо программа с полученным манифестом вообще не запускается, либо не видит Net DLL ... Заранее спасибо !
Вложения
Test.zip
Пример программы для работы с ImageConverter.dll
(30.68 КБ) 316 скачиваний
Make Clarion Great Again ! 😎
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Re: Конвертация отчетов в что-нибудь ...

Сообщение lsgsoftware »

В свое время много этим занимался.Лучший результат получал
путем "печати" отчета в файл на PDF-принтер.Клашин PDF сложные
табличные отчеты искажает, да с кирилицей бывают проблемы.
А дальше FineReader с версии 8. Легко переводит сложные табличные
PDF-репорты хоть в Ворд и без искажений.Более раннии версии файнридера
у меня сложные табличные репорты искажали.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Конвертация отчетов в что-нибудь ...

Сообщение Дед Пахом »

Игорь Столяров писал(а):Помогите пожалуйста !

Не получается сформировать файл манифеста, для того, что бы получить программу, которая бы работала с ImageConverter.dll без регистрации DLL в реестре. Все сделал по описанию - но либо программа с полученным манифестом вообще не запускается, либо не видит Net DLL ... Заранее спасибо !
Игорь, можно "на ты"? OK :?
Я ж подробно всё в статье описал http://www.clarionlife.net/content/view/325/29/, не читал? Вот сейчас повторил всё по шагам, и работает!
По ходу ты:
  • не создал манифест для dll и не внедрил его в dll:
    GenMan32.exe mynetdll.dll /out
    GenMan32.exe mynetdll.dll /add /manifest:mynetdll.dll.manifest
  • не включил в манифест exe секцию
    <dependentAssembly>
    <assemblyIdentity
    name="mynetdll"
    version="1.0.0.0"
    processorArchitecture="MSIL" />
    </dependentAssembly>
    </dependency>
  • неудачно назвал приложение так же, как и dll (для .NET нет разницы exe или dll - это всё сборки, и не известно, какой файл она будет брать)
  • и наконец OLE control должен работать в окне, так что нужна процедура типа Window, а код конвертации выполнять после открытия окна.
Я в архив включил работающий вариант со всеми исходниками. Там я заменил пути к файлам c:\test.wmf и c:\test.jpg на просто test.wmf и test.jpg, потому что под Вистой при включённом UAC это не работает (нет прав на корневой каталог c:\). ImageConverter.dll уже с манифестом внутри (не нужен GenMan32).
Удачи!
Вложения
test2.zip
(91.84 КБ) 295 скачиваний
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8036
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Конвертация отчетов в что-нибудь ...

Сообщение Игорь Столяров »

Спасибо !

Конечно я читал описание - иначе бы мне такой способ регистрации DLL
через манифест просто не пришел бы голову ... ;)

Да, действительно я сделал несколько ошибок, спасибо за уточнение по внедрению манифеста в DLL ...
Но главного я так и понял. Куда включить секцию

<dependentAssembly>
<assemblyIdentity
name="ImageConverter"
version="1.0.0.0"
processorArchitecture="MSIL" />
</dependentAssembly>
</dependency>

в манифест TEST.EXE ? Куда бы я ее вставлял - получаю сообщение "Приложние не было запущено, потому что некорректно настроено". Удаляю манифест с исправлением или создаю заново - программа TEST.EXE запускается,
но есстественно не работает вызов ImageConverter ....

Вопрос - можно получить для TEXT.EXE манифест с исправлением (c корректно сделанной этой вставкой) ?
Заранее спасибо ! :)
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Конвертация отчетов в что-нибудь ...

Сообщение Дед Пахом »

Привет!
Я тут поигрался с этим манифестом и доигрался до того, что какие бы манифесты не подсовывал и настройки в Global/App settings не включал/выключал, test.exe запускается и конвертит wmf! Даже удалял все obj, clw, lib и вообще всё, кроме app, всё равно результат один - работает... хотя не должно.
А манифест делается так - добавляем
<dependency>
<dependentAssembly>
<assemblyIdentity
name="ImageConverter"
version="1.0.0.0"
processorArchitecture="MSIL" />
</dependentAssembly>
</dependency>

после последнего </dependency> (т.е. внутри элемента <assembly>), сохраняем, дальше отключаем в app settings его генерацию, чтобы не перезаписал нашу вставку. Вот так у меня:

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="SoftVelocity.Clarion7.Application"
    type="win32"
/>
<description>Clarion application.</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="X86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
<dependency>
    <dependentAssembly>
    <assemblyIdentity
        name="ImageConverter"
        version="1.0.0.0"
        processorArchitecture="MSIL" />
    </dependentAssembly>
</dependency>
</assembly>
Попробуй всё это проделать с совсем новым app (другое имя, другой каталог). Т.е. сначала убедиться, что со стандартным манифестом запускается, но dll не зарегистрирована, потом с новым манифестом убедиться, что всё OK (ну или не OK).

В предыдущем архиве манифеста нет, т.к. я включил крыжик "Линковать manifest в проект"
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8036
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Конвертация отчетов в что-нибудь ...

Сообщение Игорь Столяров »

Есть подозрение что "безотказность" связана с тем, DLL (или ее копия в другой папке) зарегистрирована REGASM на твоем компьютере ....

Теперь (после корректного добавления секции в манифест) программа запускается.
Но ImageConverter не видет по любому и с манифестом и без .... :(
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Конвертация отчетов в что-нибудь ...

Сообщение Дед Пахом »

Игорь Столяров писал(а):Есть подозрение что "безотказность" связана с тем, DLL (или ее копия в другой папке) зарегистрирована REGASM на твоем компьютере ....
Специально перед тестами выполнял разрегистрацию, и test.exe честно говорил "Не зарегистрирована". regasm руками не вызывал, но сейчас посмотрел - есть ImageConverter в реестре!
Что сказать... Надо провести ещё испытания.
С уважением, ДП
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Конвертация отчетов в что-нибудь ...

Сообщение Дед Пахом »

Вот такой вариант работает железобетонно, без окон, без OLE. Добавлены 3 api-функции в глобальный эмбед. В архиве рабочий манифест и манифест первоначальный (сгенерённый IDE).
Вложения
test3.zip
(563.83 КБ) 323 скачивания
С уважением, ДП
Ответить