现在,我已经设置了render-plugin,并且得到了不错的PDF文件,但是我还需要将图像放入表格的几列中。这些图像由实例的数据字段有条件地选择。
我认为图像在正确的位置,因此 Assets /图像文件夹中有图像。
我在模板中使用以下GSP行,渲染器将使用该行创建PDF。
<td><g:if test="${od?.priceFSC > 0.1}"><asset:image src="checkOut16x16.png" width="16" height="16"/></g:if></td>
作为HTML View ,图像可完美打印,但在渲染PDF时会丢失。
我检查了文档并尝试了示例中的代码:
Controller :
def createPDF() {
def file = new File("asets/CheckOut16x16.png")
def OfferHeader offerHeader = OfferHeader.get(params.id)
[offerHeader: offerHeader])
renderPdf(template: "/stocknote/Stocknote", model: [offerHeader: offerHeader,imageBytes: file.bytes], filename: "Stocknote-"+params.id+".pdf")
}
风景:
<rendering:inlinePng bytes="${imageBytes}" class="some-class" />
我不在乎这里的条件,我只是想看看它是否会被打印出来,但这不是因为 View 破裂了:
URI
/stocknote/editStocknote/32
Class
org.grails.taglib.GrailsTagException
Message
Request processing failed; nested exception is org.grails.gsp.GroovyPagesException: Error processing GroovyPageView: [views/stocknote/editStocknote.gsp:32] [views/stocknote/_StocknoteDetail.gsp:3] 'bytes' is required
Caused by
[views/stocknote/editStocknote.gsp:32] [views/stocknote/_StocknoteDetail.gsp:3] 'bytes' is required
我不知道自己做错了什么,但错误消息似乎令人困惑,“必填字节”,但是我有bytes =“$ {imageBytes}”。
希望有人能给我一些帮助或解释。
最佳答案
听起来文件路径不正确,请尝试:
Controller :
def assetResourceLocator
def createPDF() {
def file = assetResourceLocator.findAssetForURI( 'CheckOut16x16.png' )
def OfferHeader offerHeader = OfferHeader.get(params.id)
[offerHeader: offerHeader])
renderPdf(template: "/stocknote/Stocknote", model: [offerHeader: offerHeader,imageBytes: file.getByteArray()], filename: "Stocknote-"+params.id+".pdf")
}
View 应该很好。
关于image - Grails渲染插件不会渲染图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43518518/