我正在使用jasper插件生成我的报告。一切都很好,但是当我想在新标签页中打开pdf时,它会在当前标签页上打开。
我不知道该怎么做。有人可以帮我吗?
我正在使用“i-report”设计我的pdf。这是我的代码如下:
def index = {
println(params)
def testModel = this.getProperties().containsKey('chainModel') ?
chainModel : null
JasperReportDef report = null
if (params.containsKey('auto_print_dialog')){
report = docuJasperService.buildReportDefinition(params,
request.getLocale(), testModel)
}
else{
report = jasperService.buildReportDefinition(params,
request.getLocale(), testModel)
}
generateResponse(report)
}
def generateResponse = {reportDef ->
if (!reportDef.fileFormat.inline && !reportDef.parameters._inline) {
//response.characterEncoding = "UTF-8"
//response.setHeader("Content-disposition",
//"inline; filename=${params._name}");
response.setHeader("Content-disposition", "inline;
filename="+(reportDef.parameters._name ?: reportDef.name) +
"."+reportDef.fileFormat.extension);
response.contentType = "application/pdf"
response.outputStream << reportDef.contentStream.toByteArray()
} else {
render(text: reportDef.contentStream, contentType:
reportDef.fileFormat.mimeTyp,
encoding: reportDef.parameters.encoding ?
reportDef.parameters.encoding : 'UTF-8');
}
}
最佳答案
您将使用生成报告的链接来处理此问题。通常,添加目标_blank即可解决问题。例如:
<g:link controller="myReports" action="whateverReport" target="_blank">Click for your report</g:link>
这将在新选项卡中打开链接。
如果您使用的是表单,则向表单添加目标会将表单提交到新标签页。例如:
<form name="myForm" action="whateverReport" method="POST" target="_blank">
要么
<g:form name="myForm" controller="myReports" action="whateverReport" target="_blank">
如果需要,您甚至可以使用javascript
window.open
来执行此操作,但是由于其他地方对此文件进行了详细说明,因此我将其排除在示例之外。
关于grails - 在Grails中使用Jasper插件在新标签页中打开报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911163/