当我生成带有jasper报告的PDF时,我不希望用户能够打印它。
是否可以从代码中进行选择,还是仅依赖于可视化程序(Web浏览器,adobe等)。
答案 0 :(得分:1)
如果要从Java导出,则可以使用jrxml属性或将值设置为SimplePdfExporterConfiguration
来实现。
要保护您的pdf文档(在这种情况下,不允许打印),首先要做的是对其进行加密,并确保在类路径中具有用于加密的必要的库,请参见How to configure PDF encryption in JasperReports Server 5.6.1
jrxml属性
<property name="net.sf.jasperreports.export.pdf.encrypted" value="true"/>
<property name="net.sf.jasperreports.export.pdf.128.bit.key" value="true"/>
<property name="net.sf.jasperreports.export.pdf.owner.password" value="12345"/>
或
java代码
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setEncrypted(true);
configuration.set128BitKey(true);
configuration.setOwnerPassword("1234");
请注意,我们设置的所有者密码不是用户密码,因此允许用户打开而无需密码。
net.sf.jasperreports.export.pdf.permissions.allowed
就您而言,我想您只希望允许屏幕阅读器,如果您还希望允许COPY或其他操作(请参见上面的链接),请在属性中添加|
jrxml属性
<property name="net.sf.jasperreports.export.pdf.permissions.allowed" value="SCREENREADERS"/>
或
java代码
configuration.setPermissions(PdfWriter.ALLOW_SCREENREADERS);
注意::阅读器/应用程序应尊重许可,因此开发人员可以随时打开并处理任何PDF文档。例如,iText包含一个标记
unethicalreading
,如果将其设置为true
,您将可以让所有者在不知道密码的情况下访问这些文档。