我需要一个java 后端 demo 内容如下:有一个html我需要把他转为pdf并且生成在自己本地
这是一个基于Spring Boot和Thymeleaf的Java后端Demo,可以将HTML转换为PDF并将其保存在本地。
首先,你需要添加以下依赖项到你的pom.xml文件中:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.1.20</version>
</dependency>
</dependencies>
在你的应用程序中,创建一个Controller类:
import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.xhtmlrenderer.pdf.ITextRenderer;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
@Controller
public class HtmlToPdfController {
@GetMapping("/pdf")
@ResponseBody
public void generatePdfFromHtml(@RequestParam("url") String url, HttpServletResponse response) {
try {
String fileName = "output.pdf";
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
Document document = new Document(PageSize.A4);
OutputStream os = response.getOutputStream();
PdfWriter.getInstance(document, os);
document.open();
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);
document.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
在这个Controller中,我们创建了一个名为generatePdfFromHtml的GET请求处理方法,它将HTML的URL作为参数传递。在这个方法中,我们设置了响应类型为PDF,并将PDF保存到输出流中。
我们使用iText和Flying Saucer来转换HTML到PDF。首先,我们创建一个iText的Document对象,并将输出流传递给PdfWriter对象。然后,我们创建一个ITextRenderer对象,并将HTML的URL传递给它。我们调用layout()方法来计算每个元素的位置和大小,然后调用createPDF()方法将HTML转换为PDF。最后,我们关闭文档。
要测试这个Demo,你可以使用以下代码:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>HTML to PDF Demo</title>
</head>
<body>
<h1>HTML to PDF Demo</h1>
<p>Click the button to download the PDF.</p>
<button onclick="downloadPdf()">Download PDF</button>
<script>
function downloadPdf() {
window.location.href = "/pdf?url=" + encodeURIComponent(window.location.href);
}
</script>
</body>
</html>
注意,在这个示例中,我们使用JavaScript来调用后端API并下载PDF文件。你需要将/pdf端点替换为你的实际端点。
当你点击下载按钮时,你将会看到一个新的PDF文件被下载到你的本地文件系统中。
原文地址: https://www.cveoy.top/t/topic/btwW 著作权归作者所有。请勿转载和采集!