yaml文件
<!-- freemarker的坐标依赖 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
<!-- servlet-api的坐标依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<!-- PDF工具类 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<!-- PDF中文支持 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.19</version>
</dependency>
<dependency>
<groupId>com.itextpdf.tool</groupId>
<artifactId>xmlworker</artifactId>
<version>5.4.1</version>
</dependency>
public class JSPStringToPDFExample {
public static void main(String[] args) {
// 设置 Freemarker 配置
Configuration configuration = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
configuration.setClassForTemplateLoading(JSPStringToPDFExample.class, "/");
// JSP 模板字符串
String jspTemplateString = "<html><body><h1>Hello, ${name}!</h1></body></html>";
try {
// 创建一个字符串输出流
StringWriter stringWriter = new StringWriter();
// 将 JSP 模板字符串加载到模板对象
Template template = new Template("jspTemplate", new StringReader(jspTemplateString), configuration);
Map<String,Object> map = new HashMap<>();
map.put("name","a");
// 合并模板和数据到字符串输出流
template.process(map, stringWriter);
// 获取生成的 HTML 内容
String htmlContent = stringWriter.toString();
// 将 HTML 内容转换为 PDF 字符串,下载的路径名
convertHtmlToPdf(htmlContent, "F:/aaa/output.pdf");
System.out.println("PDF generation completed successfully.");
} catch (Exception e) {
e.printStackTrace();
}
}
private static void convertHtmlToPdf(String htmlContent, String outputPdfFile) throws DocumentException, IOException {
// 创建 PDF 文档对象
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outputPdfFile));
document.open();
// 将 HTML 内容写入 PDF 文档
InputStream inputStream = new ByteArrayInputStream(htmlContent.getBytes());
XMLWorkerHelper.getInstance().parseXHtml(writer, document, inputStream);
// 关闭文档
document.close();
writer.close();
}
}