Использовать закодированное в base64 изображение в отчете PictureBox на acumatica? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть строка, представляющая собой растровое изображение в кодировке base64, которое я записал с панели подписи и сохранил в пользовательской таблице в базе данных Acumatica. У меня есть DAC для таблицы, и я могу получить к нему доступ из дизайнера отчетов.

Проблема, с которой я столкнулся, заключается в том, как передать это закодированное в base64 изображение в отчет Acumatica. Существует элемент управления PictureBox, который, как мне кажется, должен быть тем, что я хочу, за исключением того, что он не обрабатывает закодированные данные изображения, а только ссылки на базу данных, внедренный файл или URL.

Я пытался:

  1. Установка Source для «Database», Mime Type для image / bmp и значение в поле строки в кодировке base64. Это привело к ошибке, что base64 не была действительной ссылкой. Я ожидал, потому что это не ссылка на файл, хранящийся в базе данных.
  2. Установка источника на «Внешний» и значение на base64 также вызвало аналогичную ошибку

Есть ли способ справиться с этим в конструкторе отчетов Acumatica?

Поскольку это размещаемое окружение, я не могу разместить временный файл, поэтому наилучшим решением было бы то, которое позволило бы каким-то образом использовать закодированное растровое изображение из базы данных внутри отчета. Однако приветствуется любое решение, которое выполняет работу, за исключением локального временного файла, поскольку это исключено.

1 Ответ

0 голосов
/ 15 сентября 2018

Вам нужно сохранить строку base64 как файл вложения в Acumatica. Вы можете использовать Encoding.ASCII.GetBytes(<Base64String>) для преобразования base64 string в byte[] и использовать UploadFileMaintenance График для сохранения изображения в виде файла.

//Graph for file management
UploadFileMaintenance upload = PXGraph.CreateInstance<UploadFileMaintenance>();

//Set filename
string fileName = string.Format(<FileName>, <FileExt>);
//Convert Base64 String to byte[]
byte[] data = System.Text.Encoding.ASCII.GetBytes(<Base64String>);
//Create file info, you may check different overloads as per your need
FileInfo file = new FileInfo(fileName, null, data);
upload.SaveFile(file, FileExistsAction.CreateVersion);

//To Attach file to Entity
PXNoteAttribute.SetFileNotes(<PXCache>, <EntityData>, file.UID.Value);

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

...