Grails渲染插件css问题

时间:2012-05-28 15:43:29

标签: java grails pdf-generation rendering

我刚刚安装了grails渲染插件,并希望用它来生成PDF文件。我创建了简单的模板,但它没有任何CSS样式导出。如果我只是从grails渲染模板,那么页面会在我的Web浏览器中显示所有样式。

所以,我的问题是 - 如何在PDF生成过程中正确包含CSS文件?

我的模板:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <link rel="stylesheet" href="${resource(dir:'css',file:'main.css')}" />
    <link rel="stylesheet" href="${resource(dir:'css',file:'webui.css')}" />
    <r:layoutResources/>
    <title>Report</title>
</head>
<body>
    <div id="content">
        <div id="center-container">
        <h1><g:message code="default.list.label" args="[entityName]" /></h1>
        <table>
            <thead>
                <tr>
                    <th class="trip">trip</th>
                </tr>
            </thead>
            <tbody>
                <tr class="odd">
                    <td>
                        ${tip}
                    </td>
                </tr>
            </tbody>
        </table>
</div>
    </div>
</body>
</html>

我的webui.css中有样式.odd,但它不适用于该行。

任何帮助都将不胜感激。

Edit1:我发现如果按以下方式执行,则会获取样式:

<link rel="stylesheet" href="my_appname${resource(dir:'css',file:'main.css')}" />

但我不想硬编码应用程序名称(这也是一个基本上下文路径)。有没有更好的方法来生成到css文件的正确链接?

3 个答案:

答案 0 :(得分:3)

我的答案可能会迟到但我想在这里分享我在grails中渲染pdf的经验。我按照以下步骤进行操作,然后失败到下一步,直到我得到一个pdf:

  1. 使用模板gsp中的资源插件来获取捆绑了css的模块。
  2. 例如: Test.gsp

    <html>
    <head>
      <r:require modules="bootstapApp"/>
      <r:layoutResources/>
    </head>
    <body>
       ....
       <r:layoutResources/>
    </body>
    </html>
    

    以上工作正常,但渲染后的pdf中没有使用样式。我不得不踩到第2步。

    2.在问题陈述中开始使用上述标记。 结果:没有变化。我无法在pdf中获得样式。 失败到第3步

    3.在模板gsp中添加内联样式。然后我就可以将它们应用到pdf中了。这里要注意的是,如果您按照步骤3进行操作,并且您有像bootstrap.css这样的CSS,那么在模板中内联它们将会非常麻烦。即使我们添加它们,也不要忘记将它们放在媒体标签中。对我来说,下面的工作非常好:

    <style type="text/css">
    @media all {
        //CSS styles goes here
    }
    </style>
    

答案 1 :(得分:2)

尝试将Config.groovy中的grails.serverURL设置为app url(例如grails.serverURL = http:// localhost:8080 / appname)。该插件通过此设置解析所有相对链接

答案 2 :(得分:0)

我在其他地方分享了我的答案,但我最终只是将外部文件内容嵌入到gsp for pdf渲染中:

https://stackoverflow.com/a/32767378/1599616