Создание нового макета столбца DXL в пакетном + экспорт изображений - PullRequest
0 голосов
/ 10 июня 2019

У меня есть сценарий DXL, который предназначен для запуска в пакетном режиме.В этом сценарии мы читаем в файле XML и создаем новые столбцы для ссылочного модуля на основе содержимого XML.Иногда нам нужно создать макет DXL для определенного столбца, который создает растровое изображение, нарисованное на холсте, а затем вызвать exportPicture(), чтобы создать локальный PNG.

Проблема, с которой я сталкиваюсь, заключается в том, что когда этот метод exportPicture() запускается в пакетном режиме, он просто создает пустое изображение размером 1 КБ, но если тот же метод вызывается при работе через графический интерфейс, он работает просто отлично.

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

Создание столбцов:

   insert(column columnIndex)
   dxl(column columnIndex, dxlScript)
   setColumnTitle(columnIndex, columnTitle)

Экспорт изображения:

if (hasDXLCanvas(thisColumn)) 
{
  exportPicture                                                   //-
    (                                                             //-
      thisColumn,                                                 //-
      thisObject,                                                 //-
      tempStringOf( longPictName ),                               //-
      formatPNG_                                                  //-
    )
}

Вот скрипт макета DXL

int       height = 0
int       width  = 0
string  pictName
DBE   canvas
Bitmap bitmap
pictName = getPictName( obj )

if( !null( pictName )  ) 
{  
    canvas = getCanvas()

    if( !null( canvas ) )
    {
       bitmap = loadBitmap( canvas, pictName, true, width, height )

        if( !null( bitmap ) )
        {
            drawBitmap( canvas, bitmap, 0, 0 )
        }

        destroyBitmap( canvas, bitmap )
   }
}

Я предполагаю, что проблема связана с рисованием на холсте в пакетном режиме, но я могу ошибаться.Любое направление будет с благодарностью.

Заранее спасибо!

1 Ответ

1 голос
/ 11 июня 2019

В пакетном режиме многие функции графического интерфейса недоступны.Есть некоторые обходные пути для некоторых вещей (например, загрузка представления не разрешена, но вы можете изменить свойства представлений так, чтобы представление для изменения было представлением по умолчанию, затем сохранить и повторно открыть модуль), но неожидать, что все работает.Вместо использования пакетного режима вы можете поэкспериментировать с интерактивным режимом и ключом командной строки -dxl (-D)

...