用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

java 写PDF文件(章节、小节、字体、段落、表格、列表的使用)

2012-11-22 作者: 程序猿style举报

[java]代码库

	/**
	 * 写PDF文件,展示了PDF文档、章节、小节、字体、段落、表格、列表的使用
	 * 最后展示如何使用写入中文。
	 * @param fileName
	 */
	public void writePDF(String fileName) {
		File file = new File(fileName);
		FileOutputStream out = null;

		try {
			//(1)实例化文档对象
			//第一个参数是页面大小。接下来的参数分别是左、右、上和下页边距。
			Document document = new Document(PageSize.A4, 50, 50, 50, 50);

			//(2)创建写入器
			//第一个参数是对文档对象的引用,第二个参数是输出的文件,将out和document连接起来
			out = new FileOutputStream(file);
			PdfWriter writer = PdfWriter.getInstance(document, out);
			//打开文档准备写入内容
			document.open();
			
			//(3)下面创建章节对象
			//首先创建段落对象,作为章节的标题。FontFactory用于指定段落的字体。
			Font font = FontFactory.getFont(FontFactory.HELVETICA, 
					18, Font.BOLDITALIC, new Color(0, 0, 255));
			Paragraph chapter1_title = new Paragraph("Chapter 1",font);
			//创建了一个章节对象,标题为"Chapter 1"
			Chapter chapter1 = new Chapter(chapter1_title, 1);
			//将编号级别设为 0 就不会在页面上显示章节编号
			chapter1.setNumberDepth(0);
			//(4)创建小节对象
			//创建小节对象的标题
			font = FontFactory.getFont(FontFactory.HELVETICA, 16, 
					Font.BOLD, new Color(255, 0, 0));
			Paragraph section1_title1 = new Paragraph("Section 1 of Chapter 1", font);
			//创建一个小节对象,标题为"This is Section 1 in Chapter 1",属于chapter1。
			Section section1 = chapter1.addSection(section1_title1);
			//(5)往小节中写文本内容
			Paragraph text = new Paragraph("This is the first text in section 1 of chapter 1.");
			section1.add(text);
			text = new Paragraph("Following is a 5×5 table:");
			section1.add(text);
			
			//(6)往小节中写表格
			//创建表格对象
			Table table = new Table(5, 5);
			//设置表格边框颜色
			table.setBorderColor(new Color(220, 255, 100));
			//设置单元格的边距间隔等
			table.setPadding(1);
			table.setSpacing(1);
			table.setBorderWidth(1);
			//单元格对象
			Cell cell = null;
			//添加表头信息
			for (int colNum=0; colNum<5; colNum++){
				cell = new Cell("header-" + colNum);
				cell.setHeader(true);
				table.addCell(cell);
			}
			table.endHeaders();
			//添加表的内容
			for (int rowNum=1; rowNum<5; rowNum++){
				for (int colNum=0; colNum<5; colNum++){
					cell= new Cell("value-" + rowNum + "-" + colNum);
					table.addCell(cell);
				}
			}
			//将表格对象添加到小节对象中
			section1.add(table); 
			
			//(7)添加列表
			// 列表包含一定数量的 ListItem。可以对列表进行编号,也可以不编号。
			// 将第一个参数设置为 true 表明想创建一个进行编号的列表;
			// 第二个参数设置为true表示列表采用字母进行编号,为false则用数字进行编号;
			// 第三个参数为列表内容与编号之间的距离。
			List list = new List(true, false, 20);
			ListItem item = new ListItem("First item of list;");
			list.add(item);
			item = new ListItem("Second item of list;");
			list.add(item);
			item = new ListItem("Third item of list.");
			list.add(item);
			//将列表对象添加到小节对象中
			section1.add(list);
			
			//(8)添加中文
			//允许在PDF中写入中文,将字体文件放在classPath中。
			//simfang.ttf是仿宋的字体文件
			BaseFont bfChinese = BaseFont.createFont("simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
			//中文大小为20,加粗
			font = new Font(bfChinese, 20, Font.BOLD);
			text = new Paragraph("PDF中文测试", font);
			section1.add(text);
			
			//(9)将章节对象加入到文档中
			document.add(chapter1);
			
			//(10)关闭文档
			document.close();
			System.out.println("PDF文件生成成功,PDF文件名:" + file.getAbsolutePath());
		} catch (DocumentException e) {
			System.out.println("PDF文件"+ file.getAbsolutePath() + "生成失败!" + e);
			e.printStackTrace();
		} catch (IOException ee) {
			System.out.println("PDF文件"+ file.getAbsolutePath() + "生成失败!" + ee);
			ee.printStackTrace();
		} finally {
			if (out != null){
				try {
					//关闭输出文件流
					out.close();
				} catch (IOException e1) {
				}
			}
		}
	}


网友评论    (发表评论)

共2 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...