Bir Bahar uygulama var ve PDF nesil için destek oluşturmak gerekir. PDF'yi oluşturmak için Thymeleaf ile birlikte Flying-Saucer'ı kullanmayı düşünüyorum. Ancak, Uçan-daire ile Thymeleaf birlikte kullanımı hakkında çok fazla bilgi bulamıyorum. Bunları teknolojilere başka kim kullandı?Uçan fincan tabağı, Thymeleaf ve Bahar
15
A
cevap
17
Ben sorunsuz Thymeleaf 2.0.14 ile FlyingSaucer-R8 kullanıyorum (ve Thymeleaf olarak iyi çalışır ve emin güncel sürümü değilim).
Bu amaçla yapılandırılmış sınıf yolu şablon resolverli TemplateEngine
ayrı var. Bunu kullanarak String
olarak XHTML
üretmek. Flyingsaucer sonuçtan PDF belgesi oluşturur. Aşağıdaki örneği kontrol edin. DEĞİL ÜRETİM GARANTİSİZLİK ile hazır kod kullanımı it - aşağıda
Kod örneğidir. Netlik sağlamak için, hiçbir yakalama işlemesi yoktur ve kaynak önbelleği yoktur (PDF oluşturma oldukça pahalı bir işlemdir). Bunu bir düşün.
Kod
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.springframework.core.io.ClassPathResource;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.BaseFont;
import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
public class FlyingSoucerTestService {
public void test() throws DocumentException, IOException {
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("META-INF/pdfTemplates/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("XHTML");
templateResolver.setCharacterEncoding("UTF-8");
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
Context ctx = new Context();
ctx.setVariable("message", "I don't want to live on this planet anymore");
String htmlContent = templateEngine.process("messageTpl", ctx);
ByteOutputStream os = new ByteOutputStream();
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
ClassPathResource regular = new ClassPathResource("/META-INF/fonts/LiberationSerif-Regular.ttf");
fontResolver.addFont(regular.getURL().toString(), BaseFont.IDENTITY_H, true);
renderer.setDocumentFromString(htmlContent);
renderer.layout();
renderer.createPDF(os);
byte[] pdfAsBytes = os.getBytes();
os.close();
FileOutputStream fos = new FileOutputStream(new File("/tmp/message.pdf"));
fos.write(pdfAsBytes);
fos.close();
}
}
Şablon
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring3-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style>
div.border {
border: solid;
border-width: 1px 1px 0px 1px;
padding: 5px 20px 5px 20px;
}
</style>
</head>
<body style="font-family: Liberation Serif;">
<div class="border">
<h1 th:text="${message}">message</h1>
</div>
</body>
</html>
İlgili konular
- 1. Bahar denetleyicileri onların thymeleaf görünümlerini eşleme (intellij14)
- 2. Spring Boot ve Thymeleaf
- 3. Thymeleaf
- 4. thymeleaf
- 5. kaynak a .css dosyası, bahar mvc'de thymeleaf ile birlikte
- 6. Bahar Roo için Thymeleaf için herhangi bir ekleme var mı?
- 7. Sec: authorize ve th: thymeleaf
- 8. İç içe yerleştirme formlarını Thymeleaf
- 9. Thymeleaf ve Spring Boot'da mesajlar nasıl görüntülenir?
- 10. Thymeleaf: Ben <code>th:inline="javascript"</code> kullanarak javascript, thymeleaf kullanıyorum Thymeleaf
- 11. SpringBoot Thymeleaf Şablonu Çözmüyor
- 12. Bahar ve @JsonView
- 13. hazırda ve Bahar Boot
- 14. Thymeleaf eşdeğeri: url
- 15. Thymeleaf uygulamasında instanceof kullanın
- 16. Bahar MVC. Statik verileri güncelle
- 17. Thymeleaf - Sıkı HTML ayrıştırma sorunu
- 18. Thymeleaf 'da güncel tarihleri göster
- 19. Bahar
- 20. Thymeleaf tablosunda bir tablo oluşturun
- 21. Bahar
- 22. Thymeleaf ile Base64String Görüntüsünü Görüntüleme
- 23. Bahar
- 24. Maven ve Bahar = uygulama bağlamı oluşturulamadı: Bahar NamespaceHandler bulunamıyor
- 25. Bahar
- 26. KOTLIN ve @Valid Bahar açıklama
- 27. Bahar @RequestBody ve Enum değeri
- 28. Bahar @MVC ve @RequestParam doğrulama
- 29. Karahindiba Datatable + Thymeleaf + Pagination Sayı
- 30. Uçan daire: PDF'de bir kutu olarak işlenen Çince karakter
michal.kreuzman @ bu çözüm beni biraz yardım ettiği için bizimle hala umuyorum. Herşey gönlünce olsun. Yukarıdaki alıntı: 'ctx.setVariable ("mesaj", "Artık bu gezegende yaşamak istemiyoruz");' – KingJahfy
Bu yaklaşım aynı zamanda çeviri için messages.properties kullanarak, uluslararasılaşma ele almaz. Bunun yanı sıra, işe yarıyor. – SiriusBits