当我们使用ITextRenderer从thymeleaf HTML模板生成PDF时,如何设置PDF页面大小A4?
我已生成PDF但页面大小不合适,如何在JAVA中设置页面大小A4 ITextRenderer库
ClassLoaderTemplateResolver templateResolver = new
ClassLoaderTemplateResolver();
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
Context context = new Context();
context.setVariable("name", "Thomas");
String html = templateEngine.process("templates/Quote", context);
OutputStream outputStream = new FileOutputStream("message.pdf");
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html);
renderer.layout();
renderer.createPDF(outputStream,true);
outputStream.close();
答案 0 :(得分:4)
请注意,您使用的是FlyingSaucer
,而不是iText
。
FlyingSaucer
是一种内部使用的产品(非常旧版本)iText
。
你正在立即摆脱10多年的错误修正和发展。
如果您对iText
感到满意,解决此问题的最佳方法是使用pdfHTML。
它是我们写给iText7核心库的附加组件,专门用于将HTML转换为PDF格式。
简单示例:
File src = new File("source_html_file.html");
File dest = new File("target_pdf_file.pdf");
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
Document doc = new Document(pdf, PageSize.A4);
InputStream stream = new FileInputStream(src);
ConverterProperties converterProperties = new ConverterProperties();
FontProvider dfp = new DefaultFontProvider(true, true, true);
converterProperties.setFontProvider(dfp);
HtmlConverter.convertToPdf(stream, pdf, converterProperties);
在线查看教程以获取更多信息 https://developers.itextpdf.com/content/itext-7-examples/itext-7-converting-html-pdf