如何更改 adobe readers 缩放级别?

How to change adobe readers zoom level?

我有一个 Jasper Report,它在 Java Spring 中创建了一个 PDF。几个小时以来,我一直在尝试更改缩放级别,但没有成功。每当我使用 Adob​​e reader 打开 pdf 时,它的 149%(同事更糟)。有一个类似的 question 没有帮助。

我尝试了以下 属性 个名称,其中 none 个有效

我试过的值是

我检查了我的 Adob​​e Reader 属性,缩放设置为默认值,accessibility 也关闭。

作为 Villat indicated in 设置缩放级别的一种方法是“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);

不过

由 reader(用于打开 pdf 的应用程序)决定它是否 will/can 执行 java 脚本。

例如,在标准 Adob​​e Acrobat Reader DC 中,用户可以在菜单编辑>>首选项下手动关闭此功能

此外,如果 reader 已经打开,它似乎并不总是喜欢通过 java 脚本更改缩放级别,我安装的 reader 只有在打开时才能正常工作pdf.

备选方案

如果您在 java 中导出,您可以 post 详细说明添加 OpenAction 的 pdf,请参阅 Bruno Lowagie's answer

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 或类似的方法在内存中执行此操作。

此解决方案更可靠,但最终总是取决于用户使用的 reader 是否会受到尊重。