1

我使用 Taglib<g:mediaitem bean="${item}" />将媒体标签手风琴呈现为项目类型

def item=attrs['bean']    
if(item?.type=='img')
    {
      out << '<img src="'+item?.src+'" />'
    }else if(item?.type=='audio') {
       out<< '<audio src="'+item?.src+'" />'
    }
      //..........

当我使用这个标签来渲染 pdf 时,我得到了 end-tag 的错误,我搜索解决方案,我找到了renderPngrendering:inLinePng,。我不能在 TagLib 中使用它。

我的问题是:如何在 taglib 中使用渲染 png 插件在 gsp 中渲染将渲染为 pdf 的图像时不会出错。如果我可以使用 pngRenderingService.render,应该传递哪些参数?

4

1 回答 1

1

首先,您必须以字节为单位转换图像,然后使用渲染插件标签库渲染图像,例如,

 File imageFile = new File(servletContext.getRealPath("images/imageName.png"))
 out << rendering.inlinePng(bytes: imageFile.bytes)

编辑................................................. .....................

我正在开发一个项目,在该项目中,我还使用渲染插件下载 PDF 格式的内容,我发布的上述代码在我这边运行良好。

Bellow 是我在 PDF 中呈现图像的完整标签。

class ComJftTagLib {
    static final namespace = 'jft'

    def image = { attrs ->
        String dir = attrs.remove('dir')
        String file = attrs.remove('file')
        File imageFile = new File(servletContext.getRealPath("/${dir}/${file}"))
        out << rendering.inlineGif(bytes: imageFile.bytes)
    }
}

我的图像放在 images/ 文件夹中。

编辑................................................. .....................

out << '<img src="data:'
out << 'image/png'
out << ';base64,'
out << new String(new Base64().encode(imageFile.bytes), "UTF-8")
out << '" />'
于 2013-08-05T15:02:54.527 回答