关闭

生成简易的PDF文件

标签: pdfitext
174人阅读 评论(0) 收藏 举报
分类:
	<!-- 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();
	}
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5259次
    • 积分:141
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:1篇
    • 译文:1篇
    • 评论:0条
    文章分类