<!-- pdf依赖start -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.3</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
</dependency>
<!-- 该依赖适用于itext-2.1.7.jar -->
<!-- <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk16</artifactId>
<version>1.46</version> </dependency> -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-rtf</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
<!-- pdf依赖end -->
package com.PdfGen;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Arrays;
import java.util.List;
import com.itextpdf.text.Document;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfEncryption;
import com.itextpdf.text.pdf.PdfWriter;
public class GenPdfWithImg {
// Document document = new Document();// 建立一个Document对象
Document document = new Document(PageSize.A4,0,0,0,0);
private static Font textfont;// 设置字体大小
static {
BaseFont bfChinese;
try {
bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
textfont = new Font(bfChinese, 8, Font.NORMAL);// 设置字体大小
} catch (Exception e) {
e.printStackTrace();
}
}
public GenPdfWithImg(File file) {
// document.setPageSize(PageSize.A4);// 设置页面大小
try {
PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(file));
pdfWriter.setViewerPreferences(PdfWriter.PageLayoutOneColumn);//设置文档单页显示
/**
* 设置此PDF文件的权限,只有写上的是允许的。 这里只允许打印,读取和保存,不允许修改等。
*/
int intPermissions = PdfWriter.AllowPrinting | PdfWriter.AllowScreenReaders;
/**
* 若要实现其他权限如修改等 则需要写入密码,这里是设置密码加密标准或加密类型。
*/
int intEncryptionType = PdfEncryption.STANDARD_ENCRYPTION_40;
/**
* 要是用这个方法需要引入一个jar包(bcprov-jdk.jar) 第一个参数:打开时需要的密码;
* 第二个参数:实用其他其他权限时使用的密码; 第三个参数:可使用的权限; 第四个参数:密码类型
*/
pdfWriter.setEncryption(null, "hello".getBytes(), intPermissions, intEncryptionType);
document.open();
} catch (Exception e) {
e.printStackTrace();
}
}
public void generatePDF() throws Exception {
Paragraph paragraph = new Paragraph("标题1", textfont);// pdf 文件中的一个文字段落
List<String> imggeList = Arrays.asList("src/main/resource/IMG_20160808_212125.jpg",
"src/main/resource/Screenshot.png", "src/main/resource/IMG_20160611_124451.jpg");
for (int i = 0; i < imggeList.size(); i++) {
if(i == 2){
document.setPageSize(PageSize.A4.rotate());
}
// float width = document.getPageSize().getWidth() - 30;// 取页面宽度并减去页边距
// float height = document.getPageSize().getHeight() - 40;// 取页面高度并减去页边距
float width = document.getPageSize().getWidth();// 取页面宽度并减去页边距
float height = document.getPageSize().getHeight();// 取页面高度并减去页边距
String path = imggeList.get(i);
Image image = Image.getInstance(path);
image.setAlignment(Image.ALIGN_CENTER); // 居中显示 Image.ALIGN_CENTER
// 显示在文字下方 Image.UNDERLYING
float imgWidth = image.getWidth();
float imgHeight = image.getHeight();
image.scalePercent(width / imgWidth * 100, height / imgHeight * 100);
/**
* image.scalePercent(80); // 设置百分百 image.scaleAbsolute(400, 600);//
* 绝对大小 image.scaleToFit(520, 800);// 自适应大小
* document.setMargins(40,10, 40, 10); //设置页边距,也可在Document对象初始化时设置
*/
// document.addTitle("Hello mingri example");
// //作者
// document.addAuthor("wolf");
// //主题
// document.addSubject("This example explains how to add
// metadata.");
// document.addKeywords("iText, Hello mingri");
// document.addCreator("My program using iText");
// document.add(paragraph);
document.add(image);
}
document.close();
}
public static void main(String[] args) throws Exception {
File file = new File("/Users/jjs/Desktop/text.pdf");
file.createNewFile();
new GenPdfWithImg(file).generatePDF();
}
}