【问题标题】:Use base64 encoded image in a PictureBox on acumatica report?在 acumatica 报告的 PictureBox 中使用 base64 编码图像?
【发布时间】:2018-09-12 19:38:58
【问题描述】:

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

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

我试过了:

  1. 将源设置为“数据库”,将 Mime 类型设置为 image/bmp,并将 base64 编码字符串字段的值。这产生了 base64 不是有效链接的错误。我预料到了,因为它不是指向存储在数据库中的文件的链接。
  2. 将源设置为“外部”并将值设置为 base64 也会产生类似的错误

在 Acumatica 的报表设计器中有没有办法处理这个问题?

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

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    您需要在 Acumatica 中将 base64 字符串保存为文件附件。您可以使用Encoding.ASCII.GetBytes(<Base64String>)base64 string 转换为byte[] 并使用UploadFileMaintenance Graph 将图像保存为文件附件。

    //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) 中引用徽标显示来在报告中使用它。

    【讨论】:

    • 谢谢,这基本上也是我能想到的。我希望避免使用附件,但似乎这可能是唯一的解决方案。
    猜你喜欢
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2011-01-31
    • 2018-11-08
    • 1970-01-01
    相关资源
    最近更新 更多