2012-05-28 5 views
3

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

Итак, мой вопрос: как правильно включить 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')}" /> 

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

ответ

2

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

+0

Благодарит Вас за ответ. На самом деле он задан так: development { grails.logging.jul.usebridge = true grails.serverURL = "http: // localhost: 8080/$ {appName}" } –

+0

есть ли 'http' до 'localhost '? также вы можете заставить ресурс использовать абсолютный ресурс пути (dir: 'css', file: 'main.css', absolute: true), чтобы убедиться, что плагин правильно загружает файл css. – aldrin

+0

Да, есть «http» перед «localhost». Также я попытался использовать абсолютный путь, но в этом случае он генерируется как http: // localhost: 8080/appname/css/main.css, что неверно, поскольку css находится в appname/static/css/main.css –

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.Добавлены стили inline в шаблоне 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/1599616