Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >生成密码保护pdf。如何为每个用户获得唯一的密码?

生成密码保护pdf。如何为每个用户获得唯一的密码?
EN

Stack Overflow用户
提问于 2016-11-25 10:04:13
回答 1查看 4.5K关注 0票数 3

我已经将我的报告上传到JasperServer上,在那里我正在安排报告,并使用作业rest以电子邮件的形式将pdf作为附件发送给用户。一切都很完美,但是我们也需要对pdf进行加密。我读过wiki主题并且能够加密pdf。

但是我们希望密码是动态的,并且对每个用户来说都是不同的(比如他们的电话号码和出生日期的组合)。链接中描述的示例将密码指定为jrxml中的report属性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<property name="net.sf.jasperreports.export.pdf.user.password" value="123456"/>
<property name="net.sf.jasperreports.export.pdf.owner.password" value="123456"/> 

密码被指定为字符串,对于从这个jrxml生成的每一个pdf来说都是相似的。

我试过这样的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<property name="net.sf.jasperreports.export.pdf.user.password" value="{$F{dateOfBirth}}"/>

其中$F{ dateOfBirth }是运行查询的用户的dateOfBirth。但是它没有输入字段值,而是将其视为一个字符串,并设置密码to=“{$F{dateOfBirth}”。

我该怎么做呢?他们有没有办法让我为每个用户设置不同的密码?

注意:数据源是为jasperserver上的报表配置的。在作业执行api调用中,Jasperserver执行查询,填充报告,导出为pdf,并将其作为电子邮件发送给用户。

EN

回答 1

Stack Overflow用户

发布于 2016-11-30 07:06:44

正如一条评论所提到的,只需使用Java即可。

下面是一个示例,我将如何编写这个代码(这并不完美,但我认为您会理解的):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;
import net.sf.jasperreports.engine.fill.JRFillParameter;

public class GetBirthdayScriptlet extends JRDefaultScriptlet {

    private Connection conn;

    private Connection getConnection() throws JRScriptletException {
        if (conn == null) {
            if (getParameterValue(JRFillParameter.REPORT_CONNECTION) != null) {
                conn = (Connection) (getParameterValue(JRFillParameter.REPORT_CONNECTION));
            } else {
                throw new RuntimeException("No db-connection configured in the report!");
            }
        }
        return conn;
    }

    public String getBirthday(String email) throws JRScriptletException, SQLException {
        ResultSet result = null;
        String resultString = null;
        CallableStatement stmt = getConnection().prepareCall("select birthday from birthday_table where email = " + email);
        stmt.executeUpdate();
        result = stmt.getResultSet();
        if(result.next()){
            result.getString(1);
        }
        return resultString;
    }
}

将这个小片段打包到一个jar中,并将其添加到Studio构建路径中,并将其上传到Jaspersoft服务器。

在您的报告中,概要说明了在scriptlet上进行->“codesnippet”,这个脚本的类是GetBirthdayScriptlet (这是codesnippet类)。

要在报表中使用的表达式是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$P{>>scriptlet-name<<_SCRIPTLET}.getBirthday("email@example.com")

不要输入字符串,只需使用参数即可。

另外,也许可以考虑使用参数LoggedInUserEmailAddress中内置的Jaspersoft

如果你想对现场报告进行加密,这会有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40810417

复制
相关文章
Openlayers2卷帘功能的实现
在WebGIS开发中,经常会有用户提需求,要实现卷帘功能,卷帘功能主要是实现两张图之间的对比。在前文中,讲到了openlayers3以及Arcgis for js中卷帘的实现,在本文讲述如何在openlayers2中实现卷帘功能。
牛老师讲GIS
2018/10/23
1.5K0
Openlayers2卷帘功能的实现
openlayers之selectfeature
在本文叙述如何在openlayers中实现鼠标经过某一对象时,对象高亮;点击某一对象时,弹出该对象的信息。重点为OpenLayers.Layer.Vector和OpenLayers.Control.SelectFeature,下面开始讲解。
牛老师讲GIS
2018/10/23
1.6K0
openlayers之selectfeature
手机端实现打印功能
1、  打印代理PC,使用Spring轮询机制,每隔一定时间,通过HTTPClient,向服务器发出查询待打印队列的请求。
week
2018/08/27
1.8K0
WordPress 添加网页打印功能
网页页面打印功能方便我们快速链接打印机,Wordpress方面有很多插件,今天何先生在这里介绍简单代码就能实现的方法。
空木白博客
2019/04/23
1.8K0
OpenLayers入门(二)
好久不见,距离OpenLayers入门第一篇已经过了很久,为什么迟迟没有后续呢,主要有两个原因,一是因为近期项目里使用地图的部分比较少,二是因为很多时候即使功能做出来了,但是还是不能完全理解,不是很明白的东西除了贴代码之外也写不了啥,其实第一篇也是很基础很简单的,但是意外的是看的人是最多的,这让我意识到可能即使是贴一下代码对一些人也是有帮助的,这就是这一篇的主要目的,可能有一些地方会看不懂,但是不要问,问我也不知道,如果你恰好了解的话十分欢迎在评论里分享,感谢~
街角小林
2022/06/15
2.8K0
OpenLayers入门(二)
openlayers实现画圆
通过OpenLayers.Control.DrawFeature和OpenLayers.Handler.Point实现在地图上画圆心。
牛老师讲GIS
2018/10/23
3.3K0
openlayers实现画圆
c#实现打印功能
c#实现打印功能,可以设置纸张大小,字体和颜色等         /// <summary>         /// 打印的按钮         /// </summary>         /// <param name="sender"></param>         /// <param name="e"></param>         private void btnPrint_Click(object sender, EventArgs e)         {            
跟着阿笨一起玩NET
2018/09/20
3.5K0
OpenLayers入门(一)
OpenLayers(https://openlayers.org/)是一个用来帮助开发Web地图应用的高性能的、功能丰富的JavaScript类库,可以满足几乎所有的地图开发需求。
街角小林
2022/06/15
5K0
OpenLayers入门(一)
element ui实现前台打印功能
      在项目中经常会使用打印功能,这次我们来看一下element ui实现打印功能,后台采用springboot作为后台接口方法,后台抽数据就不用看了,大家都明白,抽出来需要打印的数据就好,然后传给前台json数据。前台element ui来处理打印工作。下面咱们看一下前台如何做一个打印功能。
十分钟空间
2022/08/17
2.9K0
HTML打印准考证用JS在html页面实现打印功能
用JS在html页面实现打印功能 做项目时,有在网页实现全局和局部打印的需求,百度许久,现总结如下: 打印方式一: 1.首先在head里面加入下面一段js代码: <script language="javascript"> function preview(fang) { if (fang < 10){ bdhtml=window.document.body.innerHTML;//获取当前页的html代码 sprnstr="<!--startprint"+fang+"-->";//设置打印开始区域
SingYi
2022/07/14
9.9K0
HTML打印准考证用JS在html页面实现打印功能
利用bootstrap-table插件自带的打印功能打印表格
文章目录 1、前端代码: 2、前端页面: 1、表格数据展示 2、点击打印按钮之后: 3、插件下载地址: 4、碰到的bug 1、前端代码: <link href="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.css" rel="stylesheet"> <script src="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.js"
别团等shy哥发育
2023/02/25
2K0
利用bootstrap-table插件自带的打印功能打印表格
OpenFeign超时控制和日志打印功能
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")    value的值是8001程序名称
一个风轻云淡
2022/11/13
8590
OpenFeign超时控制和日志打印功能
Python Print打印计时器功能
我们仔细看看print的参数:print(value,sep=’ ‘,end=’\n’,file=sys.stdout,flush=False)
用户7886150
2020/11/25
1.9K0
Vite + Vue3 + OpenLayers
本文案例使用 Vite 搭建项目,在 Vue 3 的基础上使用 OpenLayers 。
德育处主任
2022/04/15
2.8K0
Vite + Vue3 + OpenLayers
Echart在Openlayers的应用
echart,一个由百度前端发起的canvas国产类库(官网:http://echarts.baidu.com/index.html)。echart其实是在canvas类库zrender的基础上做的主题图库,优点有数据驱动,图例丰富,功能强大,支持数据拖拽重计算,数据区域漫游等功能,不论是从使用便捷程度、美观程度等方面都是不错的选择,在本文讲述如何在Openlayers中结合echart实现地图统计图的展示。
牛老师讲GIS
2018/10/23
2.6K0
Echart在Openlayers的应用
openlayers实现在线编辑
在前面有篇博文讲述了基于Arcgis for js和wkt实现在线数据的采集和编辑功能,在本文讲述如何在openlayers实现类似的功能。上一篇博文的地址为:
牛老师讲GIS
2018/10/23
3.5K0
openlayers实现在线编辑
PPT如何打印奇数页和偶数页?获取更多打印功能?
1、点击[视图] 2、点击[大纲视图] 3、点击[文本] 4、点击[复制] 5、点击[开始菜单] 6、点击[Word] 7、点击[布局] 8、点击[纸张方向] 9、点击[横向] 10、点击[文本] 11、点击[粘贴] 12、点击[文本] 13、点击[文件] 14、点击[打印] 15、点击[打印所有页] 16、点击[仅打印奇数页]
裴来凡
2022/05/28
4.9K0
PPT如何打印奇数页和偶数页?获取更多打印功能?
openlayers实现多图显示
概述: 本文讲述在openlayers中如何实现多图联动。 思路: 1、判断鼠标在哪个地图上; 2、添加该地图的地图移动事件; 3、设置另外一个地图的bound为该地图的。 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>openlayers map</title> <link rel="stylesheet" href="http://localhost/olapi/theme
牛老师讲GIS
2018/10/23
1.3K0
点击加载更多

相似问题

如何在画布中(重新)填充圆形- requestAnimationFrame - HTML,JS

111

缩放元素时出现不必要的模糊效果

10

缩放HTML画布元素

14

用背景图像填充HTML画布中的圆形

14

标记在缩放时“改变”位置

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文