Giter VIP home page Giter VIP logo

grails-wkhtmltopdf's Introduction

Grails Wkhtmltox / Wkhtmltopdf

This plugin provides an easy integration of the wkthmltox library into Grails.

Wkhtmltopdf

"Simple shell utility to convert html to pdf using the webkit rendering engine, and qt." http://code.google.com/p/wkhtmltopdf/ GNU Lesser GPL

Installation

mac

brew install wkhtmltopdf

linux

apt-get install wkhtmltopdf

see: http://code.google.com/p/wkhtmltopdf/wiki/compilation compiled versions available at: http://code.google.com/p/wkhtmltopdf/downloads/list

finally make sure the following command works as expected:

wkhtmltopdf www.google.de test.pdf

Configuration

put the following line into your Config.groovy and adjust the path to your wkhtmltox binary ( which wkhtmltopdf )

unix

grails.plugin.wkhtmltox.binary = "/usr/bin/wkhtmltopdf"

windows

grails.plugin.wkhtmltox.binary = "C:/local/wkhtmltopdf/wkhtmltopdf.exe"

also add the pdf mime type to Config.groovy

grails.mime.types = [
    all:           '*/*',
    .....
   pdf:         'application/x-pdf'
]

Usage

to stream the content of an controller-action as pdf just call: /context/some/someAction.pdf

class SomerController {
    def someAction = {
        def someInstance = SomeDomainObject.get(params.id)

        render( filename:"File ${someInstance.id}.pdf",
				view:"/some/someGspTemplate",
                model:[someInstance:someInstance],
                header:"/pdf/someHeader",
                footer:"/pdf/someFooter",
                marginLeft:20,
                marginTop:35,
                marginBottom:20,
                marginRight:20,
                headerSpacing:10,
        )
    }
}

Or create binary pdf data and use them for any other purpose

class SomeService implements Serializable {

		def byte[] pdfData = wkhtmltoxService.makePdf(
                view: "/pdf/someGspTemplate",
                model: [someInstance: someInstance],
                header: "/pdf/someHeader",
                footer: "/pdf/someFooter",
                marginLeft: 20,
                marginTop: 35,
                marginBottom: 20,
                marginRight: 20,
                headerSpacing: 10,
        )
	
	
		// DO Something e.g. send as mail
		//sendAsynchronousMail {
        //    multipart true
        //    to "[email protected]"
        //    subject "see PDF Attachment";
        //    attachBytes "PDF Attachment.pdf", "application/x-pdf", pdfData
        //    body "see my pdf attachment"
        //}
    }
}

write your gsps as usual, just make sure, that the url's to the resources are absolute and reachable by the host maschine

<link rel="stylesheet" href="${resource(dir: '/css/style.css', absolute: true)}" type="text/css"/>
<img src="${resource(dir: '/images/image.jpg', absolute: true)}" width="200px"/>

Options

see the following command for all options available:

wkhtmltopdf --extended-help

Known issues

grails-wkhtmltopdf's People

Contributors

quorak avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.