您的位置:首页 > 编程语言 > Java开发

java使用itext操作pdf

2010-12-30 13:13 519 查看
这两天一直在和pdf打交道,总结一下这两天的成果。这里需要注意itext使用的是itext 1.4,不同的版本可能在api的形式上存在不同,可能不能兼容,jar下载地址:http://cid-f41b44b9285d0b86.office.live.com/browse.aspx/%e5%85%ac%e5%bc%80%e6%96%87%e4%bb%b6%e5%a4%b9/J2EE%e5%ad%a6%e4%b9%a0%e8%b5%84%e6%96%99%e5%85%b1%e4%ba%ab



下面的这个例子中首先生成文件索引(类似word的链接),然后存在一个报表和将图片转换成pdf的形式,代码如下:



public void GenerateAllParts() {
		Document document = new Document();
		
		try {
			PdfWriter.getInstance(document, new FileOutputStream("d://all.pdf"));
			
			// 生成字体
			BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
			// 标题字体
			Font f30 = new Font(bfChinese, 30, Font.NORMAL, Color.BLACK);
			// 正文字体
			Font f12 = new Font(bfChinese, 12, Font.NORMAL, Color.BLACK);
			Font f6 = new Font(bfChinese, 6, Font.NORMAL, Color.BLACK);
			Font f8 = new Font(bfChinese, 8, Font.NORMAL, Color.BLACK);
			
			document.open();
			
			// 标题
			document.add(new Paragraph("报表实例", f30));
			// 换行
			document.add(new Chunk("/n/n"));
			// 
			document.add(
					new Paragraph(
					new Chunk(".......................点击查看报表", f12)
					.setLocalGoto("table")));
			// 换行
			document.add(new Chunk("/n/n"));
			document.add(
					new Paragraph(
					new Chunk(".......................点击查看图片", f12)
					.setLocalGoto("image")));
			document.add(new Chunk("/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n"));
			
			///////////////////////////////////////////////////
			// 报表位置
			document.add(new Chunk("报表实例", f12).setLocalDestination("table"));
			// 添加table实例
			PdfPTable table = new PdfPTable(5);
			table.setWidthPercentage(100);
			table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);
			PdfPCell cell = new PdfPCell();
			cell.setBackgroundColor(new Color(213, 141, 69));
			cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
			
			// 表格标题
			cell.setPhrase(new Paragraph("标题一", f8));
			table.addCell(cell);
			cell.setPhrase(new Paragraph("标题二", f8));
			table.addCell(cell);
			cell.setPhrase(new Paragraph("标题三", f8));
			table.addCell(cell);
			cell.setPhrase(new Paragraph("标题四", f8));
			table.addCell(cell);
			cell.setPhrase(new Paragraph("标题五", f8));
			table.addCell(cell);
			
			// 表格数据
			PdfPCell newcell = new PdfPCell();
			newcell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
			newcell.setPhrase(new Paragraph("数据一", f8));
			table.addCell(newcell);
			newcell.setPhrase(new Paragraph("数据二", f8));
			table.addCell(newcell);
			newcell.setPhrase(new Paragraph("数据三", f8));
			table.addCell(newcell);
			newcell.setPhrase(new Paragraph("数据四", f8));
			table.addCell(newcell);
			newcell.setPhrase(new Paragraph("数据五", f8));
			table.addCell(newcell);
			
			document.add(table);
			////////////////////////////////////////////////////////
			
			//////////////////////////////////////////////////////////
			// 添加连接
			document.add(new Chunk("图片实例", f12).setLocalDestination("image"));
			Image jpg = Image.getInstance("d://3.jpg");
			document.add(jpg);
			//////////////////////////////////////////////////////////
			
			document.close();
		} catch (Exception e) {
			// TODO: handle exception
		}
	}






下面这个例子演示如何将将word转换成pdf,这里使用的是openoffice来实现的,参考:http://www.javaeye.com/topic/352103



3. 实现代码:



/**
	 * 完成word2pdf的转换
	 */
	public void GeneratePdfFromWord() {
		Date date = new Date();
		
		OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
		
		try {
			connection.connect();	
			 DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
			    converter.convert(new File("d://test.doc"), new File("d://word2pdf.pdf"));
			    
		} catch (Exception e) {
			// TODO: handle exception
		} finally {
			if(connection!=null){
	    		connection.disconnect();
	    		connection = null;
	    	}

		}
	}


1、安装OpenOffice 3:下载路径:http://zh.openoffice.org/new/zh_cn/downloads.html

2、用以下命令启动OpenOffice服务
cd C:/Program Files/OpenOffice.org 3/program
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: