是否需要使用Java制作一些PDF?如果你不熟悉iText库,今天给大家分享的优锐课学习笔记就带大家看到这段开源软件生成PDF。
在某些基于Java的应用程序中,需要创建PDF,因为PDF由于其只读和与平台无关的属性而成为最受欢迎的文档类型之一。iText是一个开放源代码库,可帮助你在应用程序中集成PDF功能(创建/操作)。
iText具有作为Document对象的类,这些类基本上是主要容器,而其他类驻留在其中。段落是一种可以写入Document对象的内容类型。其他内容类型是Anchor, Chapter, Phrase, PdfpTable, Section, List等。这些类有助于创建PDF文档。
让我们看一下工作示例。
必需的JAR: itextpdf-5.1.0.jar
DataObject.java:
package com.test.pdf;
public class DataObject {
private String year;
private String income;
private String comanyName;
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getIncome() {
return income;
}
public void setIncome(String income) {
this.income = income;
}
public String getComanyName() {
return comanyName;
}
public void setComanyName(String comanyName) {
this.comanyName = comanyName;
}
}
HeaderFooter.java:
package com.test.pdf;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.ExceptionConverter;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfTemplate;
import com.itextpdf.text.pdf.PdfWriter;
class HeaderFooter extends PdfPageEventHelper {
/** The header/footer text. */
String header;
/** The template with the total number of pages. */
PdfTemplate total;
/**
* Allows us to change the content of the header.
* @param header The new header String
*/
public void setHeader(String header) {
this.header = header;
}
/**
* Creates the PdfTemplate that will hold the total number of pages
*/
public void onOpenDocument(PdfWriter writer, Document document) {
total = writer.getDirectContent().createTemplate(25, 16);
}
/**
* Adds a header to every page
*/
public void onEndPage(PdfWriter writer, Document document) {
PdfPTable table = new PdfPTable(2);
try {
table.setWidths(new int[]{
200, 30});
table.setLockedWidth(true);
table.getDefaultCell().setBorder(Rectangle.SUBJECT);
table.