如何更改Adobe Reader的缩放级别?

问题描述 投票:1回答:1

我有一个Jasper报告,该报告在Java Spring中创建了PDF。我一直在尝试将缩放级别更改几个小时,但没有成功。每当我使用Adobe Reader打开pdf时,它的149%(甚至更糟糕)。有一个类似的question并没有帮助。

我尝试了以下属性名称,但没有一个起作用

我尝试过的值是

  • 0.5
  • 1.1
  • 2

我已经检查了我的Adobe Reader属性,并且缩放设置为默认值,并且accessibility也处于关闭状态。

jasper-reports zoom export-to-pdf
1个回答
0
投票

Villat中所示的comment所示,设置缩放等级的一种方法是“ this.zoom=50;

您可以通过在jrxml中进行指示来执行此操作

<property name="net.sf.jasperreports.export.pdf.javascript" value="this.zoom=50;"/>

或[>]

如果从Java导出,则将其设置为SimplePdfExporterConfiguration

....
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setPdfJavaScript("this.zoom=50;");
exporter.setConfiguration(configuration);

但是

由读者(用于打开pdf的应用程序,决定是否/可以执行javascript。)>

例如,在标准Adobe Acrobat Reader DC中,用户可以在菜单Edit >> Preferences下手动将其关闭

preferences

此外,如果阅读器已经打开,似乎并不总是喜欢通过javascript更改缩放级别,那么我安装的阅读器只有在打开pdf时才能正常工作。

替代解决方案

如果您使用Java进行导出,则可以添加一个OpenAction详细说明pdf,请参见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或类似方法在内存中执行此操作。

此解决方案更可靠,但最终,是否尊重用户始终取决于用户使用的读者。

© www.soinside.com 2019 - 2024. All rights reserved.