【问题标题】:JasperReport: Is it possible to set Initial Zoom in PDF? [duplicate]JasperReport:是否可以在 PDF 中设置初始缩放? [复制]
【发布时间】:2012-02-17 12:55:54
【问题描述】:

我有一个导出为 PDF 的 JasperPrint,它显示为嵌入到网页中。

是否可以以任何方式设置初始缩放?

我知道如何使用 POI(通过 javascript)来实现,但我找不到在 Jasper 中添加 JavaScript 代码的方法...

编辑:

感谢@AlexK的链接,我找到了解决办法:)

public ByteArrayOutputStream fillPDF(JasperPrint jasperPrint) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    try{
        JRPdfExporter exporter = new  JRPdfExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, "this.zoom = 70;");
        exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,baos); 
        exporter.exportReport(); 
    }catch (Throwable e){
    }
    return baos;
}

【问题讨论】:

  • JasperPrint 是 Java 类。 JavaScript 是在浏览器中调用的客户端语言。你不能把这两者混在一起。
  • @ShadowWizard:如果您不知道该怎么做,请不要编辑我的问题。就像我说的那样,我知道如何使用 POI(Java 也是)来做到这一点。你的评论没有建设性。谢谢。
  • @ganzux 可以在pdf中添加js。在此处查看详细信息:stackoverflow.com/questions/8733276/…
  • 我只取出了JavaScript标签并修复了无效的单引号。我没有碰你的内容。
  • @ShadowWizard:我认为 javascript 标签是正确的。感谢您解决我的问题:)。

标签: javascript pdf-generation jasper-reports


【解决方案1】:

@ganzux 的回答。可以借助 JavaScript 设置缩放。

表达式将是:this.zoom = 70;

sn-p 是:

public ByteArrayOutputStream fillPDF(JasperPrint jasperPrint) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    try{
        JRPdfExporter exporter = new  JRPdfExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, "this.zoom = 70;");
        exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,baos); 
        exporter.exportReport(); 
    }catch (Throwable e){
    }
    return baos;
}

【讨论】:

  • 这是已弃用的代码,请参阅建议的重复代码以获取非弃用代码和使用 jrxml 的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 2023-04-06
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多