在acumatica报表的PictureBox中使用base64编码的图像?

时间:2018-09-12 19:38:58

标签: acumatica

我有一个字符串,该字符串是从签名板捕获并存储在Acumatica数据库的自定义表中的base64编码位图。我有用于表的DAC,并且可以从报表设计器中访问它。

我遇到的问题是如何将这种base64编码的图像添加到Acumatica中的报表上。有一个PictureBox控件似乎是我想要的,但它似乎不处理编码的图像数据,仅链接到数据库,嵌入的文件或URL。

我尝试过:

  1. 将“源”设置为“数据库”,将“ MIME类型”设置为image / bmp,然后将 值是base64编码的字符串字段。这产生了一个错误,表明base64不是有效的链接。我希望这是因为它不是数据库中存储文件的链接。
  2. 将源设置为“外部”并且将值设置为base64也会产生类似的错误

Acumatica的报表设计器有什么方法可以解决这个问题?

因为这是一个托管环境,所以我不能托管一个临时文件,因此最好的解决方案是允许该数据库中的编码位图以某种方式在报表中使用。但是,除了已被排除的本地临时文件外,任何可以完成工作的解决方案都将受到欢迎。

1 个答案:

答案 0 :(得分:0)

您需要将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);

有关完整文件附件的示例,您可以参考this KB。将文件作为附件保存后,您应该可以通过引用现成的销售订单报告(SO641010中的徽标显示来在报告中使用它。