PDF生成-itext

530 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

一、itext生成PDF

在我们日常开发过程中经常需要生成PDF,可以使用itext来生成PDF。itext是开源的用于生成pdf的java类库。通过itext不仅可以生成PDF,还可以对PDF的样式进行设置,还可以利用图片给PDF生成水印、签章等等。本文先介绍生成PDF并进行样式设置,水印等在下一篇文章再介绍。

1、导入依赖

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.11</version>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-asian</artifactId>
    <version>5.2.0</version>
</dependency> 

itext-asian 是用于设置PDF字体的。

2、PDF生成

1、创建Document类的对象:

 Document document = new Document(PageSize.A4, 100, 100, 100, 100);

以上创建了一个标准A4纸的pdf。其中Document参数分别代表:pageSize-文档页面的大小,后面四个参数分别代表左、右、上、下的页边距。 也可以直接

Document document = new Document();  //默认是A4纸的大小。

可以通过下面方法建立一个纵向的pdf文件。

Document document = new Document(PageSize.A4.rotate());

2、创建一个与document 相关联的writer,可以通过writer将PDF文件写入到一个输出流或者磁盘中

磁盘:

PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("d:/demo.pdf"));

输出流:

ByteArrayOutputStream bao = new ByteArrayOutputStream();
PdfWriter pdfWriter = PdfWriter.getInstance(document, bao);

3、打开流,创建pdf第一页

document.open();
document.newPage();

4、创建段落:可以使用Paragraph创建段落,第一个参数是段落内容,第二个是设置段落字体,关于字体有一个很容易踩的坑,我们单独拿出一章来讲。

Paragraph paragraph=new Paragraph("my first pdf demo",font);
paragraph.setAlignment(int alignment);  //设置文字对齐方式的。参数值“1”表示居中对齐;参数值“2”表示靠右对齐,默认是靠左对齐。

paragraph.setSpacingBefore(float spacing);//设置段前行间距。

paragraph.setSpacingAfter(float spacing);// 设置段后行间距。

paragraph.paragraph.setLeading(float fixedLeading);// 设置首行缩进。

paragraph.setIndentationLeft(float indentation);//设置左缩进。

//设置作者 
document.addAuthor("duan"); 
//设置创建日期 
document.addCreationDate(); 
// 设置创建者 
document.addCreator("duan.com"); 
// 设置生产者 
document.addProducer(); 
// 设置关键字 
document.addKeywords("duan"); 
//设置标题 
document.addTitle("duan"); 
//设置主题 
document.addSubject("An example to show how attributes can be added to pdf files.");

document.add(paragraph);  //往文档中添加段落内容,如有多个段落,可重复按顺序添加

5、关闭文档:文档这个一定不要忘了关,否则会造成资源的浪费。

Document.close();

以上就是使用itext生成pdf的基本内容,这只是最初级的PDF生成,我们还可以利用itext给PDF添加水印、签章等,这些在后面的学习中会慢慢深入。下一篇文章讲一下itext生成pdf修改字体才过的坑。这都是我自己在用的过程中的一些收货,可能有些地方了解的片面,欢迎大家指正。