java - Grails 渲染插件 css 问题

标签 java grails pdf-generation rendering

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

所以,我的问题是 - 如何在 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 文件的正确链接?

最佳答案

我的回答可能晚了,但我想在这里分享我在 grails 中渲染 pdf 的经验。我按照以下步骤操作并失败了,直到我得到一个 pdf:

  1. 使用模板gsp中的资源插件抓取一个捆绑了css的模块。

例如: 测试.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,那么将它们内联到模板中将会很麻烦。即使我们添加它们,也不要忘记将它们放在 media 标签中。对我来说,下面的工作非常好:

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

关于java - Grails 渲染插件 css 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10787221/

相关文章:

hibernate - 映射异常 : Could not determine Type

css - 在 ASP.NET 中将 HTML 转换为 PDF 时保持 CSS 样式

java - 如何通过 Java 反射使用方法

java - 集成测试的 Spring Boot 身份验证

java - Java、Scala、Groovy 和 jRuby 的平台将用什么语言实现?

java - 文本的某些部分左对齐,其他部分右对齐在 itext 的同一行中

jquery - 异步下载pdf

java - 如何防止我的图像面板在 JScrollPane 中挤压和扭曲

java - 如何比较 Java 中的 int 数组?

grails - Grails:如何通过命名查询和其他条件关闭来获取单个项目