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