Вопрос по rendering, java – Grails рендеринга плагин CSS проблема

3

Я только что установил плагин Grails для рендеринга и хотел бы использовать его для создания PDF-файлов. Я создал простой шаблон, но он экспортируется без каких-либо стилей CSS. Если я просто отображаю шаблон из Grails, в моем веб-браузере появляется страница со всеми стилями.

Итак, мой вопрос - как правильно включить файл CSS во время процесса создания PDF?

Мой шаблон:

<!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>

И у меня есть стиль .odd в моем webui.css, но он не применяется в строке.

Любая помощь будет признательна.

Edit1: я узнал, что стили выбираются, если я делаю это следующим образом:

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

Но я не хочу жестко задавать имя приложения (это также путь к базовому контексту). Есть ли лучший способ создать правильную ссылку на файл CS

Ваш Ответ

3   ответа
2

grails.serverURL в Config.groovy для URL приложения (например, grails.serverURL = http: // localhost: 8080 / appname). Плагин разрешает все относительные ссылки с помощью этого параметра

Спасибо за ответ. На самом деле это так: development {grails.logging.jul.usebridge = true grails.serverURL = "localhost: 8080 / ${Имя приложения}" Alex K.
есть ли «http» перед «localhost»? также вы можете заставить ресурс использовать ресурс абсолютного пути (dir: 'css', file: 'main.css', absolute: true), чтобы плагин правильно получал файл css. aldrin
Да, перед «localhost» стоит «http». Также я попытался использовать абсолютный путь, но в этом случае он генерируется как http: // localhost: 8080 / appname / css / main.css, что неверно, поскольку css находится в appname / static / css / main.css Alex K.
я заметил, чтоlocalhost: 8080 / имя_приложения / CSS / main.css redirects в любом случае будет перенаправлять на ../static/ .., чтобы это не было проблемой. aldrin
Я не понимаю, в чем проблема. я только что попробовал тестовое приложение с плагином, и оно работало хорошо (используя renderPdf (template: "/ report", имя файла: 'test.pdf')) aldrin
3

уже поздно с моим ответом, но я хотел бы поделиться своим опытом здесь с рендерингом PDF в Grails. Я выполнил следующие шаги и перешел к следующему, пока не получил PDF:

Использовал плагин ресурсов в шаблоне 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 и у вас есть css, как bootstrap.css, то вставка их в шаблон будет громоздкой. Даже если мы добавим их, не забудьте поместить их в тег медиа. Для меня ниже работает отлично:

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

но в итоге я просто включил содержимое внешнего файла в gsp для рендеринга PDF:

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

Похожие вопросы