Как Villat указано в комментарий Один из способов установить уровень масштабирования - "this.zoom=50;
"
Вы можете сделать это, указав его в jrxml
<property name="net.sf.jasperreports.export.pdf.javascript" value="this.zoom=50;"/>
или
, установив его на SimplePdfExporterConfiguration
при экспорте из Java
....
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setPdfJavaScript("this.zoom=50;");
exporter.setConfiguration(configuration);
Однако
Решение о том, будет ли он выполнять / может выполнять javascript, решает читатель (приложение, используемое для открытия pdf).
Например, в стандартном Adobe Acrobat Reader DC aпользователь может вручную отключить это в меню «Правка»> «Настройки»
Более того, если считыватель уже открыт, кажется, что не всегда нравится менятьУровень масштабирования через javascript, мой установленный читатель работает правильно, только если он открывается с PDF.
Альтернативное решение
Если вы экспортируете в Java, вы можете опубликовать PDF-файл с добавлением OpenAction, см. Bruno Lowagie ответ https://stackoverflow.com/a/24095098/5292302
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0,
reader.getPageSize(1).getHeight(), 0.75f);
PdfAction action = PdfAction.gotoLocalPage(1, pdfDest, stamper.getWriter());
stamper.getWriter().setOpenAction(action);
stamper.close();
reader.close();
}
Следовательно, после экспорта,Вы вызываете аналогичный метод, если память позволяет, вы также можете сделать это в памяти, используя ByteArrayOutputStream
или аналогичный.
Это решение более надежно, но, в конце концов, читатель всегда долженпользователь использует, если это будет уважаться или нет.