powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / проблема с печатью bmp
18 сообщений из 18, страница 1 из 1
проблема с печатью bmp
    #35494256
John1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день

PB 11.1 build 8542

нужно напечатать много этикеток с картинками
использую очевидный вариант

long Job,i

printsetup()
Job = PrintOpen( )

for i=1 to 12000
printbitmap(Job, "c:\test.bmp", 2000,2000,0,0)
next
printclose(Job)

и обнаруживаю, что печатает только около 10000.
Печатал в PDFCreator

Программа TaskInfo показала, что каждый printbitmap занимает один GDI Object
и их счетчик у моей программы больше 10000 не поднимался

сам test.bmp черно-белый 1.7 Кб

Можно ли с этим бороться и как?
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494263
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы попробовал тогда сделать в цикле, блоками, например, по тысяче. По идее должно сработать.
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494302
John1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению нет

printclose эти объекты не освобождает, равно как и выбор другого принтера в printsetup

два блока от printsetup до printclose по 6000 штук показали в первом 6000,
во втором продолжение до 9999 и так ждет кнопки "выход"
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494366
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если попробовать через DataWindow печатать?
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494406
John1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я пробовал через window - picture - print, но там, насколько я понимаю, врожденный порок - картинка на момент печати должна быть видна, то есть в другое приложение не ходи, окна не двигай, мышью не езди.
для промышленного приложения это не годится.

не говоря уже о том, что эта картинка на экране совсем не нужна

где-то на форуме мелькало ваше предложение делать через datastore - не хватает грамотности - не подскажете место в документации, где посмотреть
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494429
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
John1234я пробовал через window - picture - print, но там, насколько я понимаю, врожденный порок - картинка на момент печати должна быть видна, то есть в другое приложение не ходи, окна не двигай, мышью не езди.
для промышленного приложения это не годится.

не говоря уже о том, что эта картинка на экране совсем не нужна

где-то на форуме мелькало ваше предложение делать через datastore - не хватает грамотности - не подскажете место в документации, где посмотреть
Посмотрите насчет функции bitmap(...) для DataWindow/DataStore.
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494437
John1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, посмотрю
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494688
John1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поигрался с datastore:

long Job,i
datastore xxx

xxx = create datastore
xxx.dataobject="test3" // в этом DW есть две картинки: picture p_1 и computed field computed_1

xxx.print(true,true) // печать DW целиком проходит успешно, обе картинки напечатались

// имя и начинка обеих картинок доступны
messagebox(xxx.object.compute_1.name,string(xxx.object.compute_1.expression))
messagebox(xxx.object.p_1.name,string(xxx.object.p_1.filename))

printsetup()
Job = PrintOpen( )

// но попытка печати приводит к ошибке
xxx.object.compute_1.print(Job, 1000,1000,1000,1000)

printclose(Job)

я явно допускаю элементарную ошибку, но не пойму где
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494702
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
John1234 // но попытка печати приводит к ошибке
xxx.object.compute_1.print(Job, 1000,1000,1000,1000)

printclose(Job)

я явно допускаю элементарную ошибку, но не пойму где
Потому, что compute object не имеет метода print и вообще никаих методов не имеет. Печатать нужно само DataWindow как Вы делали выше.
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494711
John1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но мне-то нужно картинку напечатать в нужное место и нужного размера
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494781
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
John1234но мне-то нужно картинку напечатать в нужное место и нужного размера
Разместите этот объект (с картинкой) в Detail части DataWindow и выставляйте Detail Height для каждой строки позиции (SetDetailHeight(...)) и выражений на x и y позицию объекта. тогда будет на нужное иесто и нужного размера (выражения на width и height).
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494821
John1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то есть, формировать буфер страницы в datawindow, а потом целиком скидывать на принтер

в принципе возможно. но ,учитывая конкретную ситуацию, я в качестве временной меры вставлю счетчик Printbmp, а искать буду в сторону высвобождения GDI или в сторону устойчивой печати элемента window

спасибо
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494887
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
John1234но ,учитывая конкретную ситуацию, я в качестве временной меры вставлю счетчик Printbmp, а искать буду в сторону высвобождения GDI
Но ведь ресурсы похоже не освобождает какой-то код внутри PB, как Вы на это повлиять сможете?
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494891
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только если попробовать сменить build/написать bug report.
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35494945
John1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конечно

просто у меня выдача не только на windows-принтеры, но и на специальные (zebra, datamax), поэтому логика "сформировал этикетку - сразу напечатал" для меня более удобна.

идеальный вариант - объединить невидимость datastore с возможностью поэлементной печати в window, но это я от малограмотности :)
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35495758
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
John1234просто у меня выдача не только на windows-принтеры, но и на специальные (zebra, datamax), поэтому логика "сформировал этикетку - сразу напечатал" для меня более удобна.

Печатайте не прямо из PB, а например из DLL на C в которой полностью контролируйте весь процесс с созданием и освобождением ресурсов.
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35496638
John1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таким образом, резюмирую

Проблема: Printbmp в рамках одного запуска .exe занимает и не отдает GDI Object, что ограничивает объем выдачи в 10000 картинок

Ожидавшиеся (хотя бы формально) или описанные выше пути решения:
1. указать команду или режим, которая освобождает этот ресурс - увы :(
2. написать bug report - попробую
3. частично перейти на другой язык/инструмент (DLL на C) - возможно, но не хочется
4. перестроить идеологию печати, формировать буфер страницы в datastore и потом его печатать - возможно, но идеологию трогать не хочется
5. попробовать найти надежно работающий вариант с печатью элемента окна - надо еще поискать, хотя надежды мало
6. вставить счетчик обращений к printbmp - самый простецкий вариант, которого вполне хватит в 90% случаев (цена вопроса 20 строк кода)
7. оформить печать в виде отдельного .exe и запускать его по мере надобности. по минимуму оформить как "одна накладная - один запуск", по максимуму "одна накладная - сколько надо запусков". Конечно, появятся вопросы передачи параметров, но зато проблема будет решена в общем. Причем функция частичной печати длинной накладной есть и сейчас, так что кардинальной перестройки не потребуется. цена вопроса 200 строк кода.

Так что я быстренько вставлю счетчик, а дальше буду думать
...
Рейтинг: 0 / 0
проблема с печатью bmp
    #35504002
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно мой ответ "не в кассу", но я вообще-то подобные проблемы очень удобно решал в Word-е, используя режим слияния.
Очень понравилось. Но... к PB это отношения не имеет.

Good Luck !
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / проблема с печатью bmp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]