<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.0.6</version>
</dependency>
Document:这是iText库中最常用的类,它代表了一个pdf实例。如果你需要从零开始生成一个PDF文件,你需要使用这个Document类。首先创建(new)该实例,然后打开(open)它,并添加(add)内容,最后关闭(close)该实例,即可生成一个pdf文件。
- com.itextpdf.text.Paragraph:表示一个缩进的文本段落,在段落中,你可以设置对齐方式,缩进,段落前后间隔等。
- com.itextpdf.text.Chapter:表示PDF的一个章节,他通过一个Paragraph类型的标题和整形章数创建。
- com.itextpdf.text.Font:这个类包含了所有规范好的字体,包括family of font,大小,样式和颜色,所有这些字体都被声明为静态常量。
- com.itextpdf.text.List:表示一个列表;
- com.itextpdf.text.pdf.PDFPTable:表示一个表格;
- com.itextpdf.text.Anchor:表示一个锚,类似于HTML页面的链接。
- com.itextpdf.text.pdf.PdfWriter:当这个PdfWriter被添加到PdfDocument后,所有添加到Document的内容将会写入到与文件或网络关联的输出流中。
- com.itextpdf.text.pdf.PdfReader:用于读取PDF文件;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
public class PdfTest {
public static void main(String[] args){
File filedir = new File("D:/pdf");//pdf保存路径
if(!filedir.exists()) {
filedir.mkdirs();
}
// String path = request.getSession().getServletContext().getRealPath("/");
File pdf = new File(filedir+"/cxy.pdf");//pdf文件路径
Document document = new Document(PageSize.A4.rotate());//rotate函数支持横向打印
try {
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdf));
//方法一:使用Windows系统字体(TrueType)
BaseFont baseFont = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
//方法二:使用iTextAsian.jar中的字体
//BaseFont baseFont = BaseFont.createFont("STSong-Light",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
//方法三:使用资源字体(ClassPath)
BaseFont baseFont = BaseFont.createFont("/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
Font font = new Font(baseFont,10);//可以设置字号
document.open();
document.add(new Paragraph("中文问题解决了",font));
document.close();
writer.close();
} catch (DocumentException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws FileNotFoundException,Exception {
String htmlFile = "C:\\Users\\Administrator\\Desktop\\test.htm";
String pdfFile = "C:\\Users\\Administrator\\Desktop\\test.pdf";
// PdfUtils.parseHTML2PDFFile(pdfFile, new FileInputStream(htmlFile));
String ss = "";
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(htmlFile), "UTF-8"));
String t = "";
while ((t = br.readLine()) != null) {
// System.out.println(t);
ss += t;
}
PdfUtils.parseHTML2PDFFile2(pdfFile, ss);
}
public static void parseHTML2PDFFile2(String pdfFile, String html)
throws DocumentException, IOException {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream(pdfFile));
document.open();
XMLWorkerHelper.getInstance().parseXHtml(writer, document,
new ByteArrayInputStream(html.getBytes("Utf-8")),
Charset.forName("UTF-8"));
document.close();
}
HTML 里加 <body style="font-size:12.0pt; font-family:微软雅黑">