生成简易的PDF文件

	<!-- 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();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值