Вы можете достичь этого как с помощью свойств jrxml, так и путем установки значений SimplePdfExporterConfiguration
, если вы экспортируете из Java.
Чтобы защитить ваш документ PDF (следовательно, в этом случае запретить печать), первое, что вам нужно сделать, это зашифровать его и убедиться, что у вас есть необходимые библиотеки для шифрования в classpath, см. Как настроить шифрование PDF в JasperReports Сервер 5.6.1
jrxml properties
<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
, вы сможете иметь доступ владельца к этим документам, не зная пароля.