说明
1、创建PDF对象
2、读取文本数据
3、将文本数据写入PDF文件
jar包
- com.itextpdf:io:7.1.18
- com.itextpdf:kernel:7.1.19
- com.itextpdf:layout:7.1.11
转化示例
import com.itextpdf.io.font.FontProgram;
import com.itextpdf.io.font.FontProgramFactory;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
/**
* 字体程序
*/
private static volatile FontProgram FONT_PROGRAM = null;
/**
* 自定义锁
*/
private static final String MY_LOCK_OBJ = "MyFontLock";
// 加载字体程序
private static FontProgram getFontProgram() throws IOException {
if (FONT_PROGRAM == null){
synchronized (MY_LOCK_OBJ) {
if (FONT_PROGRAM == null) {
// FONT_PATH字体路径
FONT_PROGRAM = FontProgramFactory.createFont(FONT_PATH, true);
log.info("初始化字体成功");
}
}
}
return FONT_PROGRAM;
}
public static void textToPdf(File inputTextFile, File outputPdfFile) throws IOException {
if (inputTextFile == null || outputPdfFile == null) {
return;
}
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader br = null;
try {
// Creating a PdfWriter
PdfWriter writer = new PdfWriter(Files.newOutputStream(outputPdfFile.toPath()));
// Creating a PdfDocument
PdfDocument pdf = new PdfDocument(writer);
// Creating a Document
Document document = new Document(pdf);
fis = new FileInputStream(inputTextFile);
// 防止路径乱码 如果utf-8 乱码 改GBK
isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
br = new BufferedReader(isr);
String line;
// Identity-H 编码用于水平书写,文本从左到右排列
PdfFont pdfFont = PdfFontFactory.createFont(getFontProgram(), PdfEncodings.IDENTITY_H);
while ((line = br.readLine()) != null){
Paragraph paragraph = new Paragraph(line).setFont(pdfFont).setFontSize(FONT_SIZE);
document.add(paragraph);
}
document.close();
} finally {
FileUtil.closeStream(br, isr, fis);
}
}