如何更改 adobe readers 缩放级别?
How to change adobe readers zoom level?
我有一个 Jasper Report,它在 Java Spring 中创建了一个 PDF。几个小时以来,我一直在尝试更改缩放级别,但没有成功。每当我使用 Adobe reader 打开 pdf 时,它的 149%(同事更糟)。有一个类似的 question 没有帮助。
我尝试了以下 属性 个名称,其中 none 个有效
- "zoom"
- "net.sf.jasperreports.viewer.zoom"
- "net.sf.jasperreports.viewer.zoom"
- com.jaspersoft.studio.viewer.zoom
- com.jaspersoft.studio.unit.viewer.zoom
我试过的值是
- 0.5
- 1.1
- 2
我检查了我的 Adobe 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 脚本。
例如,在标准 Adobe 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 是否会受到尊重。
我有一个 Jasper Report,它在 Java Spring 中创建了一个 PDF。几个小时以来,我一直在尝试更改缩放级别,但没有成功。每当我使用 Adobe reader 打开 pdf 时,它的 149%(同事更糟)。有一个类似的 question 没有帮助。
我尝试了以下 属性 个名称,其中 none 个有效
- "zoom"
- "net.sf.jasperreports.viewer.zoom"
- "net.sf.jasperreports.viewer.zoom"
- com.jaspersoft.studio.viewer.zoom
- com.jaspersoft.studio.unit.viewer.zoom
我试过的值是
- 0.5
- 1.1
- 2
我检查了我的 Adobe 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 脚本。
例如,在标准 Adobe 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 是否会受到尊重。