Jasper reports 如何更改adobe readers的缩放级别?

Jasper reports 如何更改adobe readers的缩放级别?,jasper-reports,zooming,export-to-pdf,Jasper Reports,Zooming,Export To Pdf,我有一个Jasper报告,它在JavaSpring中创建了一个PDF。几个小时以来,我一直在尝试更改缩放级别,但没有成功。每当我用AdobeReader打开pdf文件时,它都是149%(同事的情况更糟)。有一个类似的例子也没有帮助 我尝试过以下财产名称,但没有一个有效 “缩放” “” “” com.jaspersoft.studio.viewer.zoom com.jaspersoft.studio.unit.viewer.zoom 我尝试过的价值观是 0.5 1.1 二, 我已经检查了

我有一个Jasper报告,它在JavaSpring中创建了一个PDF。几个小时以来,我一直在尝试更改缩放级别,但没有成功。每当我用AdobeReader打开pdf文件时,它都是149%(同事的情况更糟)。有一个类似的例子也没有帮助

我尝试过以下财产名称,但没有一个有效

  • “缩放”
  • “”
  • “”
  • com.jaspersoft.studio.viewer.zoom
  • com.jaspersoft.studio.unit.viewer.zoom
我尝试过的价值观是

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

设置缩放级别的一种方法是“
this.zoom=50;

您可以通过在jrxml中指示它来实现这一点

<property name="net.sf.jasperreports.export.pdf.javascript" value="this.zoom=50;"/>
然而 由阅读器(用于打开pdf的应用程序)决定是否执行javascript

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

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

替代解决方案 如果您是用java导出的,您可以在pdf中添加OpenAction,请参阅的答案

因此,一旦导出,您将调用一个类似的方法,如果内存允许,您也可以在内存中使用
ByteArrayOutputStream
或类似方法来执行此操作

这个解决方案更可靠,但最终还是取决于用户使用的读者是否会尊重它

设置缩放级别的一种方法是“
this.zoom=50;

您可以通过在jrxml中指示它来实现这一点

<property name="net.sf.jasperreports.export.pdf.javascript" value="this.zoom=50;"/>
然而 由阅读器(用于打开pdf的应用程序)决定是否执行javascript

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

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

替代解决方案 如果您是用java导出的,您可以在pdf中添加OpenAction,请参阅的答案

因此,一旦导出,您将调用一个类似的方法,如果内存允许,您也可以在内存中使用
ByteArrayOutputStream
或类似方法来执行此操作


这个解决方案更可靠,但最终还是取决于用户使用的读者是否会尊重它

你能添加你的代码吗?为了了解为什么
yourExporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT,“this.zoom=50;”不适用于you@Villat它不起作用,因为我没有使用jacascript。我有一个Java Spring应用程序,它使用Jasper Reports创建pdf,然后通过连接发送回来,然后使用Adobe打开它。您是否尝试过类似于
yourExporter.setParameter(JRHtmlExporterParameter.ZOOM_RATIO,new Float(2.0))@Villat您的答案是正确的,但它的表达方式对我不起作用,下面的答案给了我正确的格式。您可以添加您的代码吗?为了了解为什么
yourExporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT,“this.zoom=50;”不适用于you@Villat它不起作用,因为我没有使用jacascript。我有一个Java Spring应用程序,它使用Jasper Reports创建pdf,然后通过连接发送回来,然后使用Adobe打开它。您是否尝试过类似于
yourExporter.setParameter(JRHtmlExporterParameter.ZOOM_RATIO,new Float(2.0))
@Villat您的答案是正确的,但它的表达方式对我不起作用,下面的答案给了我正确的格式
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();
}