Merge pull request #9223 from chris9408/feature/BAEL-3826
Feature/bael 3826
This commit is contained in:
commit
5d81fd3f6f
10
pdf/pom.xml
10
pdf/pom.xml
|
@ -60,6 +60,16 @@
|
||||||
<artifactId>poi-ooxml</artifactId>
|
<artifactId>poi-ooxml</artifactId>
|
||||||
<version>${poi-ooxml.version}</version>
|
<version>${poi-ooxml.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.thymeleaf</groupId>
|
||||||
|
<artifactId>thymeleaf</artifactId>
|
||||||
|
<version>3.0.11.RELEASE</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.xhtmlrenderer</groupId>
|
||||||
|
<artifactId>flying-saucer-pdf</artifactId>
|
||||||
|
<version>9.1.20</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.baeldung.pdf;
|
||||||
|
|
||||||
|
import com.lowagie.text.DocumentException;
|
||||||
|
import org.thymeleaf.TemplateEngine;
|
||||||
|
import org.thymeleaf.context.Context;
|
||||||
|
import org.thymeleaf.templatemode.TemplateMode;
|
||||||
|
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
|
||||||
|
import org.xhtmlrenderer.pdf.ITextRenderer;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
public class PDFThymeleafExample {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws IOException, DocumentException {
|
||||||
|
PDFThymeleafExample thymeleaf2Pdf = new PDFThymeleafExample();
|
||||||
|
String html = thymeleaf2Pdf.parseThymeleafTemplate();
|
||||||
|
thymeleaf2Pdf.generatePdfFromHtml(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void generatePdfFromHtml(String html) throws IOException, DocumentException {
|
||||||
|
String outputFolder = System.getProperty("user.home") + File.separator + "thymeleaf.pdf";
|
||||||
|
OutputStream outputStream = new FileOutputStream(outputFolder);
|
||||||
|
|
||||||
|
ITextRenderer renderer = new ITextRenderer();
|
||||||
|
renderer.setDocumentFromString(html);
|
||||||
|
renderer.layout();
|
||||||
|
renderer.createPDF(outputStream);
|
||||||
|
|
||||||
|
outputStream.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String parseThymeleafTemplate() {
|
||||||
|
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
|
||||||
|
templateResolver.setSuffix(".html");
|
||||||
|
templateResolver.setTemplateMode(TemplateMode.HTML);
|
||||||
|
|
||||||
|
TemplateEngine templateEngine = new TemplateEngine();
|
||||||
|
templateEngine.setTemplateResolver(templateResolver);
|
||||||
|
|
||||||
|
Context context = new Context();
|
||||||
|
context.setVariable("to", "Baeldung.com");
|
||||||
|
|
||||||
|
return templateEngine.process("thymeleaf_template", context);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<body>
|
||||||
|
<h3 style="text-align: center; color: green">
|
||||||
|
<span th:text="'Welcome to ' + ${to} + '!'"></span>
|
||||||
|
</h3>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,52 @@
|
||||||
|
package com.baeldung.pdf;
|
||||||
|
|
||||||
|
import com.lowagie.text.DocumentException;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.thymeleaf.TemplateEngine;
|
||||||
|
import org.thymeleaf.context.Context;
|
||||||
|
import org.thymeleaf.templatemode.TemplateMode;
|
||||||
|
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
|
||||||
|
import org.xhtmlrenderer.pdf.ITextRenderer;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
public class PDFThymeleafUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenThymeleafTemplate_whenParsedAndRenderedToPDF_thenItShouldNotBeEmpty() throws DocumentException, IOException {
|
||||||
|
String html = parseThymeleafTemplate();
|
||||||
|
|
||||||
|
ByteArrayOutputStream outputStream = generatePdfOutputStreamFromHtml(html);
|
||||||
|
|
||||||
|
assertTrue(outputStream.size() > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ByteArrayOutputStream generatePdfOutputStreamFromHtml(String html) throws IOException, DocumentException {
|
||||||
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
ITextRenderer renderer = new ITextRenderer();
|
||||||
|
renderer.setDocumentFromString(html);
|
||||||
|
renderer.layout();
|
||||||
|
renderer.createPDF(outputStream);
|
||||||
|
|
||||||
|
outputStream.close();
|
||||||
|
return outputStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String parseThymeleafTemplate() {
|
||||||
|
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
|
||||||
|
templateResolver.setSuffix(".html");
|
||||||
|
templateResolver.setTemplateMode(TemplateMode.HTML);
|
||||||
|
|
||||||
|
TemplateEngine templateEngine = new TemplateEngine();
|
||||||
|
templateEngine.setTemplateResolver(templateResolver);
|
||||||
|
|
||||||
|
Context context = new Context();
|
||||||
|
context.setVariable("to", "Baeldung.com");
|
||||||
|
|
||||||
|
return templateEngine.process("thymeleaf_template", context);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue