生成简易的PDF文件

原创 2016年08月29日 13:57:30
	<!-- 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();
	}
}

PHP生成PDF文件

本文介绍PHP生成PDF。我们使用TCPDF开源插件,实现PHP生成PDF文档。可以插入图片、HTML、链接、表格、柱状图折线图等PHP动态生成PDF的功能。        PHP的PECL扩展有一个...
  • zhaanghao
  • zhaanghao
  • 2015年08月26日 15:58
  • 2096

从 Java 应用程序动态生成 PDF 文件

转载自:http://www.ibm.com/developerworks/cn/opensource/os-javapdf/index.html 一个简化了 PDF 创建过程的...
  • u012377333
  • u012377333
  • 2016年04月21日 20:26
  • 7271

android 生成pdf文件

由于项目需要将获取的数据文件导出为pdf文件格式,
  • u010276653
  • u010276653
  • 2014年09月30日 10:58
  • 3108

java生成PDF文件的Demo,自己做的单据

1、首先需要下载两个包,点击: iText-5.0.5与iTextAsian包 2、正文 package com.service; import java.io.File; import java....
  • wanzhix
  • wanzhix
  • 2016年02月26日 10:55
  • 2877

简易PDF生成(JAVA)

package com.pdf;import java.awt.Color; import java.io.ByteArrayOutputStream; import java.io.File; im...
  • QQkarl1993
  • QQkarl1993
  • 2016年07月14日 11:29
  • 170

ASP.NET中生成PDF文件

这是看了一下的文章而进行的一个总结,因为最近也在想如何通过程序来生成PDF文件。 Generating PDF files Reponse有个这样的属性ContentType,获取或设置输出流的...
  • zhaowei705523962
  • zhaowei705523962
  • 2013年01月22日 19:27
  • 2372

java生成pdf文件

嗯,第一次写博客。当了多年伸手党,自己也要分享~~ 前几天公司项目需要开发个生成pdf的功能,网上看了很多例子没找到满意的,折腾好久后使用docx4j-ImportXHTML+freemarker实现...
  • waterlordvip
  • waterlordvip
  • 2016年04月25日 17:07
  • 2498

java根据模板生成pdf文件并导出

首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adobe Acrobat pro软件打开刚刚用word转换成的pdf文件(注:如果没有这个软件可...
  • TOP__ONE
  • TOP__ONE
  • 2017年03月23日 13:18
  • 22498

java(优化四) 自动生成pdf文件并保存到本地

一 测试: FileGenerator pdfGenServ = (FileGenerator) getBean("pdfGenServ"); Result result = pdfGenServ.g...
  • zengdeqing2012
  • zengdeqing2012
  • 2015年04月24日 14:36
  • 4735

[JAVA] java动态生成PDF文档

生成PDF文档,虽然需求bu'duo
  • gopain
  • gopain
  • 2014年11月20日 19:59
  • 2172
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:生成简易的PDF文件
举报原因:
原因补充:

(最多只允许输入30个字)