生成簡易的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();
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章