例子1:Hello World
最简单的例子,就是向pdf中插入Hello World。编辑PDF的通用顺序:
Created with Raphaël 2.1.0
Start
创建PdfWriter
创建PdfDocument
创建Document
End
代码如下:
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import java.io.File;
import java.io.IOException;
/**
* Simple Hello World example.
*/
public class C01E01_HelloWorld {
public static final String DEST =
"results/chapter01/hello_world.pdf";
public static void main(String args[])
throws IOException {
File file =
new File(DEST);
file.getParentFile().mkdirs();
new C01E01_HelloWorld().createPdf(DEST);
}
public void createPdf(String dest)
throws IOException {
PdfWriter writer =
new PdfWriter(dest);
PdfDocument pdf =
new PdfDocument(writer);
Document document =
new Document(pdf);
document.add(
new Paragraph(
"Hello World!"));
document.close();
}
例子2:插入列表
接下来几个例子就直接贴代码,如果不清楚的可以查看之前的第1章内容:
import
com.itextpdf.io.font.FontConstants
import
com.itextpdf.kernel.font.PdfFont
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.List
import
com.itextpdf.layout.element.ListItem
import
com.itextpdf.layout.element.Paragraph
import java
.io.File
import java
.io.IOException
public class C01E02_RickAstley {
public static final String DEST =
"results/chapter01/rick_astley.pdf"
public static void main(String args[]) throws IOException {
File file = new File(DEST)
file
.getParentFile()
.mkdirs()
new C01E02_RickAstley()
.createPdf(DEST)
}
public void createPdf(String dest) throws IOException {
//Initialize PDF writer
PdfWriter writer = new PdfWriter(dest)
//Initialize PDF document
PdfDocument pdf = new PdfDocument(writer)
// Initialize document
Document document = new Document(pdf)
// Create a PdfFont
PdfFont font = PdfFontFactory
.createFont(FontConstants
.TIMES_ROMAN)
//
Add a Paragraph
document
.add(new Paragraph(
"iText is:")
.setFont(font))
// Create a List
List list = new List()
.setSymbolIndent(
12)
.setListSymbol(
"\u2022")
.setFont(font)
//
Add ListItem objects
list
.add(new ListItem(
"Never gonna give you up"))
.add(new ListItem(
"Never gonna let you down"))
.add(new ListItem(
"Never gonna run around and desert you"))
.add(new ListItem(
"Never gonna make you cry"))
.add(new ListItem(
"Never gonna say goodbye"))
.add(new ListItem(
"Never gonna tell a lie and hurt you"))
//
Add the list
document
.add(list)
//Close document
document
.close()
}
例子3:插入图片
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Paragraph;
import java.io.File;
import java.io.IOException;
/**
* Simple image example.
*/
public class C01E03_QuickBrownFox {
public static final String DOG =
"src/main/resources/img/dog.bmp";
public static final String FOX =
"src/main/resources/img/fox.bmp";
public static final String DEST =
"results/chapter01/quick_brown_fox.pdf";
public static void main(String args[])
throws IOException {
File file =
new File(DEST);
file.getParentFile().mkdirs();
new C01E03_QuickBrownFox().createPdf(DEST);
}
public void createPdf(String dest)
throws IOException {
PdfWriter writer =
new PdfWriter(dest);
PdfDocument pdf =
new PdfDocument(writer);
Document document =
new Document(pdf);
Image fox =
new Image(ImageDataFactory.create(FOX));
Image dog =
new Image(ImageDataFactory.create(DOG));
Paragraph p =
new Paragraph(
"The quick brown ")
.add(fox)
.add(
" jumps over the lazy ")
.add(dog);
document.add(p);
document.close();
}
}
例子4:根据CSV生成表格
/**
* Created by CuteKe on 2017/7/10.
*/
import com.itextpdf.io.font.FontConstants;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
/**
* Simple table example.
*/
public class C01E04_UnitedStates {
public static final String DATA =
"src/main/resources/data/united_states.csv";
public static final String DEST =
"results/chapter01/united_states.pdf";
public static void main(String args[])
throws IOException {
File file =
new File(DEST);
file.getParentFile().mkdirs();
new C01E04_UnitedStates().createPdf(DEST);
}
public void createPdf(String dest)
throws IOException {
PdfWriter writer =
new PdfWriter(dest);
PdfDocument pdf =
new PdfDocument(writer);
Document document =
new Document(pdf, PageSize.A4.rotate());
document.setMargins(
20,
20,
20,
20);
PdfFont font = PdfFontFactory.createFont(FontConstants.HELVETICA);
PdfFont bold = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD);
Table table =
new Table(
new float[]{
4,
1,
3,
4,
3,
3,
3,
3,
1});
table.setWidthPercent(
100);
BufferedReader br =
new BufferedReader(
new FileReader(DATA));
String line = br.readLine();
process(table, line, bold,
true);
while ((line = br.readLine()) !=
null) {
process(table, line, font,
false);
}
br.close();
document.add(table);
document.close();
}
public void process(Table table, String line, PdfFont font,
boolean isHeader) {
StringTokenizer tokenizer =
new StringTokenizer(line,
";");
while (tokenizer.hasMoreTokens()) {
if (isHeader) {
table.addHeaderCell(
new Cell().add(
new Paragraph(tokenizer.nextToken()).setFont(font)));
}
else {
table.addCell(
new Cell().add(
new Paragraph(tokenizer.nextToken()).setFont(font)));
}
}
}
}
Example代码下载
本章代码可在如下地址下载(IDEA工程):iText7——第一章源代码工程