皕杰技术社区

 找回密码
 立即加入

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 680|回复: 12

[求助] linux服务器部署项目,背景水印图片无法正常查看

[复制链接]
发表于 2022-2-28 16:28:25 | 显示全部楼层 |阅读模式
本帖最后由 zhangweisep 于 2022-2-28 16:30 编辑

项目部署到服务器之后,无法正常查看设置的水印图片,在本地是可以的。
水印图片只能设置相对路径,无法设置网络图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即加入

x
发表于 2022-2-28 17:12:21 | 显示全部楼层
如果用浏览器访问本地的服务器可以看到背景水印图片,而访问远程服务器看不到的话,可能有如下原因:
1、在远程服务器上图片放置的位置不正确
2、图片的路径中有中文,且报表服务器的编码配置不正确

建议:
1、把图片放到准确的相对路径上
2、图片路径及图片文件名最好不要有中文。如果有中文的话,确保报表服务器端编码配置正确!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-1 10:51:26 | 显示全部楼层
admin 发表于 2022-2-28 17:12
如果用浏览器访问本地的服务器可以看到背景水印图片,而访问远程服务器看不到的话,可能有如下原因:
1、在 ...

项目部署到服务器上后是以jar包形式的,这个时候相对路径其实是会有问题的,不是正常的路径能访问的,需要在代码里处理。
这个时候我能写自定义函数来获取这个背景图片吗?
回复 支持 反对

使用道具 举报

发表于 2022-3-1 11:58:38 | 显示全部楼层
zhangweisep 发表于 2022-3-1 10:51
项目部署到服务器上后是以jar包形式的,这个时候相对路径其实是会有问题的,不是正常的路径能访问的,需 ...

你把报表的brt文件打包到jar中了?如果是打包到jar中,那就自己定义一个函数来读取背景图片!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-17 10:43:44 | 显示全部楼层
admin 发表于 2022-3-1 11:58
你把报表的brt文件打包到jar中了?如果是打包到jar中,那就自己定义一个函数来读取背景图片! ...

这个自定义函数的输出是什么,文件流吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-17 10:45:29 | 显示全部楼层
admin 发表于 2022-3-1 11:58
你把报表的brt文件打包到jar中了?如果是打包到jar中,那就自己定义一个函数来读取背景图片! ...

我使用urlImage这个自定义函数读取网络图片的方式,单元格使用这个函数可以显示图片,但是作为背景图片就无法显示
回复 支持 反对

使用道具 举报

发表于 2022-3-17 11:00:34 | 显示全部楼层
首选,我们建议你“不要 把brt文件及相关的资源放到jar包里!
如果你非要把brt文件及相关的图片资源放到jar包里的话,那么,你就只能自己用Java代码“定义一个函数”来读取背景图片!
皕杰报表本身提供很多的扩展接口和编程sdk,下载包里也有怎么使用这些接口的例子和文档,简单的来说,你要做的就是:
1、定义一个Java类(比如叫:JarImage)从jar包中读取图片:
public class JarImage extends CustomFunction {... ...}
2、在custom_functions.properties文件中配置好
3、在设计器中把brt文件的“背景图片”属性中应用该自定义函数


注:下载的示例包中的urlImage.java只是一个示例怎么来实现自定义函数的例子,是用于读取网络url上的图片的,而你的需求是读取jar包中的图片资源的,不能简单的使用urlImage函数。这个代码仅供参考

回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-17 13:37:41 | 显示全部楼层
admin 发表于 2022-3-17 11:00
首选,我们建议你“不要 把brt文件及相关的资源放到jar包里!”
如果你非要把brt文件及相关的图片资源放到j ...

获取到图片后,这个函数返回的是什么呢,文件流还是base64编码
回复 支持 反对

使用道具 举报

发表于 2022-3-18 20:40:32 | 显示全部楼层
zhangweisep 发表于 2022-3-17 13:37
获取到图片后,这个函数返回的是什么呢,文件流还是base64编码

我咨询了一下公司研发人员,如果你把图片放到jar包里,通过Java代码读取出来,转成Base64编码,给到html的background-image,类似:background-image:url(data:image/gif;base64,R0lGOD...),这种方式虽然在技术上行得通,但是是一种很不好的处理策略,因为:
1、Java代码处理jar里的图片资源,读取流,转成Base64编码,图片本身比较大,耗费很多服务器资源
2、图片转成的base64编码字符串很长很长,导致生成的html很大,会导致网络传输延迟

所以,还是建议你把brt文件和图片文件放到jar包的外面。
或者是打成war包的形式
回复 支持 反对

使用道具 举报

发表于 2022-3-21 13:07:22 | 显示全部楼层
zhangweisep 发表于 2022-3-17 13:37
获取到图片后,这个函数返回的是什么呢,文件流还是base64编码

如果你不在乎改成base64编码后,图片的大小膨胀的话(大概是1.3倍左右),请从网站上下载最新的版本,并查看帮助文档中的说明!(20220321版本中帮助文档中有详细的说明)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ|小黑屋|手机版|皕杰软件 ( 京ICP备14050931号 )

GMT+8, 2024-4-29 15:09 , Processed in 1.238435 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表