java如何转换pdf
使用Apache PDFBox库转换PDF
Apache PDFBox是一个开源的Java库,支持PDF文档的创建、操作和提取内容。以下示例展示如何将文本内容写入PDF文件:
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;
public class PdfBoxExample {
public static void main(String[] args) throws Exception {
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.beginText();
contentStream.newLineAtOffset(100, 700);
contentStream.showText("Hello PDF");
contentStream.endText();
contentStream.close();
document.save("output.pdf");
document.close();
}
}
使用iText库处理PDF
iText是另一个流行的Java PDF处理库,支持高级PDF操作功能。以下是使用iText创建PDF的示例:

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
public class ITextExample {
public static void main(String[] args) throws Exception {
PdfWriter writer = new PdfWriter("output.pdf");
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
document.add(new Paragraph("Hello World with iText"));
document.close();
}
}
将HTML转换为PDF
使用Flying Saucer库可以将HTML内容渲染为PDF:

import org.xhtmlrenderer.pdf.ITextRenderer;
import java.io.FileOutputStream;
public class HtmlToPdf {
public static void main(String[] args) throws Exception {
String html = "<html><body><h1>Hello PDF</h1></body></html>";
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html);
renderer.layout();
FileOutputStream fos = new FileOutputStream("output.pdf");
renderer.createPDF(fos);
fos.close();
}
}
使用OpenPDF处理PDF
OpenPDF是iText的一个分支,提供类似的PDF处理功能:
import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
public class OpenPdfExample {
public static void main(String[] args) throws Exception {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("output.pdf"));
document.open();
document.add(new Paragraph("Hello OpenPDF"));
document.close();
}
}
使用JasperReports生成PDF
JasperReports是一个强大的报表生成工具,支持输出为PDF格式:
import net.sf.jasperreports.engine.*;
import java.util.HashMap;
public class JasperReportExample {
public static void main(String[] args) throws Exception {
JasperReport jasperReport = JasperCompileManager.compileReport("report.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap<>(), new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(jasperPrint, "output.pdf");
}
}
每种方法适用于不同场景:PDFBox适合基础PDF操作,iText/OpenPDF适合复杂文档生成,Flying Saucer适合HTML转PDF,JasperReports适合报表生成。选择时应考虑项目需求和许可限制。






