您的位置:首页 > 编程语言 > Java开发

java 通过 itext生成pdf添加,插入文字,图片

2017-07-27 11:45 821 查看
准备工作

引用pom

<!--生成pdf-->
<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>
<!--html xml 转为pdf-->
<dependency>
<groupId>com.itextpdf.tool</groupId>
<artifactId>xmlworker</artifactId>
<version>5.5.11</version>
</dependency>


1. 生成导出

写入到本地的文件中,不存在会自动创建,存在则覆盖,注意双斜杠的写法

两种输入方式:
//直接输出到本地文件
PdfWriter.getInstance(document, new FileOutputStream("F:\\Hello simplePDF.pdf"));
//byte[]格式文件流输出
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
byte[] buffer = byteStream.toByteArray();
public void createInstructionPDF() {
try {
Document document = new Document(PageSize.A4, 60, 60, 60, 60);
//PdfWriter.getInstance(document, new FileOutputStream("F:\\Hello simplePDF.pdf"));
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
PdfWriter.getInstance(document, byteStream);
document.addAuthor("XXX");
document.addCreationDate();
document.addCreator("XXX");
document.addSubject("XXXXXX");
document.addTitle("XXXXXX");
document.addHeader("Expires", "0");
document.open();
//createPdfContent(document);
document.close();
byte[] buffer = byteStream.toByteArray();
FileOutputStream fos = new FileOutputStream("F:\\Instruction.pdf");
fos.write(buffer);
fos.close();
} catch (Exception ex) {
}
return result;
}


2. 设置字体

BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);//中文字体
Font fontTitle = new Font(bfChinese, 24, Font.BOLD);
Font fontBig = new Font(bfChinese, 18, Font.NORMAL);


3. 添加文本和段落

private void createPdfContent(Document document, Font fontTitle,Font fontNormal) {
try {
Chunk glue = new Chunk(new VerticalPositionMark());//用来隔断到一行的两边
int timeOffSet = 3600;
Paragraph paragraph1 = new Paragraph("上海旅行攻略", fontTitle);
String strTimeOff = "中国比" + cityName + (timeOffSet < 0 ? "快" + Math.abs(timeOffSet) + "小时" : "慢" + Math.abs(timeOffSet) + "小时");
Chunk timeChunk = new Chunk(strTimeOff, fontNormal);
paragraph1.add(glue);
paragraph1.add(timeChunk);
paragraph1.setSpacingAfter(10);//距离后面行距
document.add(paragraph1);
} catch (Exception ex) {
}
}


4. 添加图片

private void createPic(Document document) {
String headPicture = "图片地址链接";
try {
Image image = Image.getInstance(headPicture);
float documentWidth = document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin();
float documentHeight = documentWidth / 580 * 320;//重新设置宽高
image.scaleAbsolute(documentWidth, documentHeight);//重新设置宽高
document.add(image);
} catch (Exception ex) {

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  html itext pdf java