Ofbiz 如何在 xsl-fo 使用 screenfop 视图时动态设置 PDF 的名称
Ofbiz how to set name of PDF dynamically while using screenfop view with xsl-fo
我正在使用## Ofbiz XSL FO 模板下载PDF 文件##。
目前总是以相同的名称下载 pdf 文件。我需要设置PDF文件的名称。如何动态设置文件名?在其他一些问题中,我看到我们必须设置响应 header "Content-Disposition",但不确定在 ofbiz 中在哪里设置。
任何答案或指示都会有所帮助。
我的controller.xml
<view-map name="InvoicePDF" type="screenfop"
page="component://myapp/widget/OrderScreens.xml#InvoicePDF" content-type="application/pdf" encoding="none"/>
我的OrderScreens.xml
<!-- PDF Screens -->
<screen name="InvoicePDF">
<section>
<actions>
<property-map resource="AppUiLabels" map-name="uiLabelMap" global="true"/>
<service service-name="getInvoiceDetails" auto-field-map="true"/>
</actions>
<widgets>
<platform-specific>
<xsl-fo><html-template location="component://myapp/webapp/myapp/static/pdf/invoicePrint.fo.ftl"/></xsl-fo>
</platform-specific>
</widgets>
<fail-widgets>
<label style="h3" text="${uiLabelMap.PrintPermission}"/>
</fail-widgets>
</section>
</screen>
我尝试了一个选项并且它对我有用 -
我在 actions 标签中添加了一个新的 groovy 脚本,如下所示:
<script location="component://myapp/webapp/myapp/WEB-INF/actions/setContentDisposition.groovy"/>
setContentDisposition.groovy
import javax.servlet.*;
import javax.servlet.http.*;
filename = invoiceNumber +"_" + month + ".pdf";
response.setHeader( "Content-Disposition", "attachment;filename=" + filename );
我正在使用## Ofbiz XSL FO 模板下载PDF 文件##。 目前总是以相同的名称下载 pdf 文件。我需要设置PDF文件的名称。如何动态设置文件名?在其他一些问题中,我看到我们必须设置响应 header "Content-Disposition",但不确定在 ofbiz 中在哪里设置。 任何答案或指示都会有所帮助。
我的controller.xml
<view-map name="InvoicePDF" type="screenfop"
page="component://myapp/widget/OrderScreens.xml#InvoicePDF" content-type="application/pdf" encoding="none"/>
我的OrderScreens.xml
<!-- PDF Screens -->
<screen name="InvoicePDF">
<section>
<actions>
<property-map resource="AppUiLabels" map-name="uiLabelMap" global="true"/>
<service service-name="getInvoiceDetails" auto-field-map="true"/>
</actions>
<widgets>
<platform-specific>
<xsl-fo><html-template location="component://myapp/webapp/myapp/static/pdf/invoicePrint.fo.ftl"/></xsl-fo>
</platform-specific>
</widgets>
<fail-widgets>
<label style="h3" text="${uiLabelMap.PrintPermission}"/>
</fail-widgets>
</section>
</screen>
我尝试了一个选项并且它对我有用 - 我在 actions 标签中添加了一个新的 groovy 脚本,如下所示:
<script location="component://myapp/webapp/myapp/WEB-INF/actions/setContentDisposition.groovy"/>
setContentDisposition.groovy
import javax.servlet.*;
import javax.servlet.http.*;
filename = invoiceNumber +"_" + month + ".pdf";
response.setHeader( "Content-Disposition", "attachment;filename=" + filename );