import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.IOException;
public class HtmlToPdf {
public static void main(String[] args) {
try {
// 读取HTML文件
File inputHtml = new File("input.html");
Document doc = Jsoup.parse(inputHtml, "UTF-8");
// 创建一个新的PDF文档
PDDocument pdfDoc = new PDDocument();
PDPage page = new PDPage();
pdfDoc.addPage(page);
try (PDPageContentStream contentStream = new PDPageContentStream(pdfDoc, page)) {
// 设置字体和字号
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
// 获取HTML中的所有段落元素
Elements paragraphs = doc.select("p");
float yPosition = 750; // 初始y坐标位置
for (Element paragraph : paragraphs) {
String text = paragraph.text();
contentStream.beginText();
contentStream.newLineAtOffset(50, yPosition);
contentStream.showText(text);
contentStream.endText();
yPosition -= 15; // 每行之间的间距
}
}
// 保存PDF文件
pdfDoc.save("output.pdf");
pdfDoc.close();
System.out.println("PDF created successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Apache PDFBox和Jsoup两个库,分别用于生成PDF和解析HTML。Jsoup库读取并解析HTML文件。PDFBox创建一个新的PDF文档,并添加一个空白页。如果需要更复杂的HTML转PDF功能(如支持CSS、表格等),可以考虑使用其他工具或库,如Flying Saucer或wkhtmltopdf。
上一篇:html练习
下一篇:html 边框
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站