Created
August 13, 2011 23:55
-
-
Save trashhalo/1144384 to your computer and use it in GitHub Desktop.
Gradle task converts markdown to pdf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.petebevin.markdown.MarkdownProcessor | |
import org.xhtmlrenderer.pdf.ITextRenderer | |
import org.ccil.cowan.tagsoup.Parser | |
import org.apache.xalan.xsltc.trax.SAX2DOM | |
import org.xml.sax.InputSource | |
buildscript{ | |
repositories { | |
mavenCentral() | |
mavenRepo urls: "http://scala-tools.org/repo-releases" | |
mavenRepo urls: "http://download.java.net/maven/2/" | |
} | |
dependencies { | |
classpath "org.markdownj:markdownj:0.3.0-1.0.2b4" | |
classpath "org.ccil.cowan.tagsoup:tagsoup:1.2" | |
classpath "org.xhtmlrenderer:core-renderer:R8" | |
} | |
} | |
task build <<{ | |
def source = "resume.markdown" | |
def target = "resume.pdf" | |
//Convert from markdown to html | |
def mp = new MarkdownProcessor() | |
def html = "<html><body>${mp.markdown((new File(source).text))}</body></html>" | |
//Convert from html to w3c document | |
def parser = new Parser() | |
def sax2dom = new SAX2DOM() | |
parser.setContentHandler(sax2dom); | |
parser.setFeature(Parser.namespacesFeature, false); | |
parser.parse(new InputSource(new ByteArrayInputStream(html.getBytes()))); | |
//Use Document to create pdf | |
ITextRenderer renderer = new ITextRenderer(); | |
renderer.setDocument(sax2dom.getDOM(), null); | |
renderer.layout(); | |
renderer.createPDF((new File(target).newOutputStream())) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Updated 2014/07/05 in my fork https://gist.github.com/Arakade/932bd8c9d3b359fe30a3
HTH, Rupert