Как отключить параметры при печати в созданном PDF-файле? - PullRequest
1 голос
/ 27 июня 2019

Когда я генерирую PDF с отчетами jasper, я не хочу, чтобы пользователь мог его распечатать.

Есть ли какой-то вариант сделать его из кода или он зависит только от программы, котораявизуализируйте его (веб-браузер, Adobe и т. д.).

1 Ответ

1 голос
/ 27 июня 2019

Вы можете достичь этого как с помощью свойств 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, вы сможете иметь доступ владельца к этим документам, не зная пароля.

...