Pergunta sobre rendering, pdf-generation, java, grails – Grails renderização plugin css issue

3

Acabei de instalar o plugin de renderização grails e gostaria de usá-lo para gerar arquivos PDF. Eu criei um modelo simples, mas ele é exportado sem nenhum estilo css. Se eu simplesmente processar o modelo do grails, a página será exibida com todos os estilos no meu navegador da web.

Então, minha pergunta é - como incluir corretamente o arquivo CSS durante o processo de geração de PDF?

Meu modelo:

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

E eu tenho estilo .odd no meu webui.css, mas ele não é aplicado na linha.

Qualquer ajuda seria apreciada.

Edit1: Eu descobri que os estilos são buscados, se eu fizer da seguinte maneira:

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

Mas eu não quero codificar o nome do aplicativo (este também é um caminho de contexto básico). Existe uma maneira melhor de gerar um link adequado para um arquivo css?

Sua resposta

3   a resposta
2

grails.serverURL no Config.groovy para o url do aplicativo (ex. grails.serverURL = http: // localhost: 8080 / appname). O plugin resolve todos os links relativos através desta configuração

Eu vejo, parece algum problema de configuração local. Muito obrigado, vou tentar descobrir isso então. Alex K.
Obrigado pela resposta. Na verdade, é definido assim: development {grails.logging.jul.usebridge = true grails.serverURL = "localhost: 8080 / ${nome do aplicativo}" } Alex K.
existe um 'http' antes de 'localhost'? Você também pode forçar o recurso a usar o recurso de caminho absoluto (dir: 'css', file: 'main.css', absolute: true) para garantir que o plug-in obtenha o arquivo css corretamente. aldrin
Não consigo ver qual é o problema. Eu apenas tentei um aplicativo de teste com o plugin e funcionou bem (usando renderPdf (template: "/ report", filename: 'test.pdf')) aldrin
0

mas acabei apenas incorporando o conteúdo do arquivo externo no gsp para renderização de PDF:

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

3

mas eu queria compartilhar minha experiência aqui com o processamento de PDF em Grails. Eu segui os passos abaixo e passei para o próximo até obter um pdf:

Usou o plugin de recursos no modelo gsp para pegar um módulo onde o css foi empacotado.

Por exemplo: Test.gsp

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

O acima funcionou bem, mas os estilos não foram utilizados no pdf após a renderização. Eu tive que cair para o passo 2.

2.Iniciei usando tag como mencionado acima na declaração do problema. Resultado: sem alteração. Não consegui obter os estilos no pdf. Falha ao passo 3

3.Adicionado os estilos inline no modelo gsp. E então eu pude aplicá-las no pdf. Aponte para notar aqui é que se você seguir a etapa 3 e você tiver css como bootstrap.css, então, inlining-los no modelo será incômodo. Mesmo se adicioná-los, não se esqueça de colocá-los dentro da tag de mídia. Para mim, o abaixo funcionou perfeitamente bem:

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

Perguntas relacionadas