pkpmgl 发表于 2024-9-25 14:30:26

AR17通过api直接导出图片

本帖最后由 pkpmgl 于 2024-9-25 14:32 编辑

需求:在后台代码中创建api,通过api直接导出图片

代码参考地址:
AR 15 导出为图片 - ActiveReports专区 - 求助中心 - 葡萄城开发者社区 (grapecity.com.cn)
渲染为Images - ActiveReports 报表控件用户手册 - 葡萄城产品文档中心 (grapecity.com.cn)

问题描述:在最后的渲染部分,提示对象为空【Object reference not set to an instance of an obiect.】

Bella.Yuan 发表于 2024-9-26 12:24:40

您好,我这边测试了导出图片是正常可以导出的,看您这里修改了代码,这个还得您打断点一步一步具体调试看看呢。

pkpmgl 发表于 2024-9-29 16:47:47

本帖最后由 pkpmgl 于 2024-9-30 08:26 编辑

Bella.Yuan 发表于 2024-9-26 12:24
您好,我这边测试了导出图片是正常可以导出的,看您这里修改了代码,这个还得您打断点一步一步具体调试看 ...
我原来写过导出PDF的方法:

现在按照同样的写法,想要导出图片:

方法【outputProvider.GetPrimaryStream()】在导出PDF的方法中能获取到值,在导出图片的方法中只能得到null

Felix.Li 发表于 2024-9-30 12:08:35

您好,我这边大概做了一个Demo,您可以参考试一下:

pkpmgl 发表于 2024-9-30 13:59:24

Felix.Li 发表于 2024-9-30 12:08
您好,我这边大概做了一个Demo,您可以参考试一下:

您好,我看到您提供的代码了。这种写法我这里也是可以的,最终图片是导出到了服务器的某个位置,但这不太符合我的需求。
我想实现的是:前端调用接口,后端返回一个图片文件给前端,前端能够直接下载。

原来这种写法是能直接下载pdf文件的,但是同样的写法没办法下载图片文件

Felix.Li 发表于 2024-9-30 17:19:41

您其实稍微改一下就行了,上面那个Demo是将导出的图片流用一个文件型的接收的。并且保存在本地。

您换一个接收就可以,其次就是您把最后接收的图片流结果,写一个接口,然后返回给前端,前端在去解析这个流文件展示就行了基本就是改一下这个:

GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider memory = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
// Overwrite output file if it already exists.
//outputProvider.OverwriteOutputFile = true;

reportDocument.Render(imageRenderingExtension, memory, imageSetting);memory您自己在处理一下
页: [1]
查看完整版本: AR17通过api直接导出图片