3

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にstyle .oddがありますが、行には適用されません。

どんな助けでもいただければ幸いです。

編集1:次のようにすると、スタイルがフェッチされることがわかりました。

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

ただし、アプリケーション名をハードコーディングしたくありません(これはベースコンテキストパスでもあります)。cssファイルへの適切なリンクを生成するためのより良い方法はありますか?

4

3 に答える 3

3

私の答えは遅いかもしれませんが、ここでの私の経験を、pdfをgrailsでレンダリングすることで共有したいと思いました。私は以下の手順に従い、PDFを取得するまで次の手順にフェイルオーバーしました。

  1. テンプレートgspのリソースプラグインを使用して、cssがバンドルされているモジュールを取得しました。

例: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>
于 2013-03-27T02:16:44.967 に答える
2

grails.serverURLConfig.groovyでアプリのURL(例:grails.serverURL = http:// localhost:8080 / appname)に設定してみてください。プラグインは、この設定を介してすべての相対リンクを解決します

于 2012-05-29T10:52:44.873 に答える
0

私は自分の答えを他の場所で共有しましたが、PDFレンダリングのために外部ファイルの内容をgspに埋め込むだけで終わりました:

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

于 2015-09-25T15:43:42.173 に答える