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プラグインを使用して、pdfにレンダリングされるgspで画像をレンダリングするときにエラーが発生しないようにするにはどうすればよいですか。pngRenderingService.render を使用できる場合、渡すべき引数は何ですか?

4

1 に答える 1

1

まず、画像をバイト単位で変換してから、レンダリング プラグイン タグ lib を使用して画像をレンダリングする必要があります。

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

編集................................................. ...................

私はレンダリング プラグインを使用してコンテンツを PDF 形式でダウンロードするプロジェクトに取り組んでおり、投稿した上記のコードは私の側でうまく機能しています。

以下は、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 に答える