`

JSP转PDF文件进行打印

阅读更多

 在JSP中使用PDF打印,demo项目结构如下:


 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%>
<%@page import="com.lowagie.text.*,com.lowagie.text.pdf.*,com.company.pdf.ExportPDF421"%>
<%
	String[] header ={"标题A","标题B","标题C","标题D","标题E","标题F","标题G"};
	String[] bogusData = { "内容A", "内容B", "内容C", "内容D","内容E", "内容F"};
	int [] headerwidths = {8,4,8,12,8,11}; //列宽度
	//样式
	BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); 
	Font fontHeader = new Font(bfChinese, 12, Font.BOLD);		//Header Style
	Font fontContent = new Font(bfChinese, 12, Font.NORMAL);	//Header Style
	//表
	PdfPTable table = new PdfPTable(6);							//列数
		table.setWidthPercentage(100);							//表宽百分比
	   	table.setHorizontalAlignment(Element.ALIGN_CENTER);		//表居中
	   	table.setWidths(headerwidths);
		//表格标题行	
		for(int j= 0;j<header.length;j++){
			int col=1,row=2;
			if(j==2){
				col=2;
				row=1;
			}else if(j>4){
				row=1;
			}
			table.addCell(ExportPDF421.setHeaderCell(header[j],fontHeader,col,row,Element.ALIGN_MIDDLE,Element.ALIGN_CENTER,0.85f));
		}
		//表格内容行	
		for (int i = 1; i < 100; i++) {
	        for (int x = 0; x < bogusData.length; x++) {
	    		table.addCell(ExportPDF421.setContentCell(bogusData[x]+i,fontContent,Element.ALIGN_MIDDLE,Element.ALIGN_CENTER));
	        }
		}
	String url = ExportPDF421.print(response,request,table,"文档标题421","abc.pdf");
%>

<html>
<head>
<script type="text/javascript">
	function doPrint(){
		var params = "?uri=<%=url%>";
		var url = encodeURI("pdf.jsp"+params);
		document.getElementById("print").src= url;
	}
	
	function doView(){
		var url = encodeURI("html.jsp");
		document.getElementById("print").src= url;
	}
</script>
</head>
<body> 
	<input type="button" value="查看" onclick="doView()"/>
	<input type="button" value="打印" onclick="doPrint();"/>
	<br>
	URL:<%=url %>
	<br>
	<table>
	
	</table>
	<iframe id="print" name="print" src='html.jsp' style="border:1px solid red;" width="800" height="380"></iframe>
</body>
</html>

 
 pdf.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%
	String uri= java.net.URLDecoder.decode(request.getParameter("uri"),"gbk"); 
		   uri = null==uri?"":uri;
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>分页显示示例</title>
	</head>
	<body>
		 <object id="printer" align="center" data="<%=uri%>" type="application/pdf" width="780" height="370"/>
	</body>
</html>

 html.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>TEST</title>
	</head>
	<body>
		<table border=1 width="780" height="340" cellpadding="1" cellspacing="0" align="center">
			<thead  align="center">
				<tr style="font-weight:bold;">
					<td>标题A</td>
					<td>标题B</td>
					<td>标题C</td>
					<td>标题D</td>
					<td>标题E</td>
					<td>标题F</td>
					<td>标题G</td>
				</tr>
			</thead>
			<tbody  align="center">
				<tr>
					<td>内容A</td>
					<td>内容B</td>
					<td>内容D</td>
					<td>内容C</td>
					<td>内容E</td>
					<td>内容F</td>
				</tr>
			</tbody> 
		</table>
	</body>
</html>

 

  

   ExportPDF421.java

package com.company.pdf;
import java.io.File;
import java.io.FileOutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

public class ExportPDF421 {
	private static String DOC_TITLE = "title";
	private static String DOC_HEADER = "header";
	private static String DOC_CONTENT = "content";
	private static String DOC_FOOTER = "footer";
	private static String FILE_DIR = "/download/abc/";
	private static Font fontZH = null;

	public static String print(HttpServletResponse response,HttpServletRequest request,PdfPTable table,String title,String fileName) throws Exception {
		
		// 取URL
		String root = request.getContextPath();
		String url = request.getRequestURL().toString();
		url = url.substring(0, url.indexOf(root)) + root;
		url += FILE_DIR+fileName;
		// 取真实路径
		String rPath = request.getRealPath(FILE_DIR);
		//创建文件夹
		File f = new File(rPath);
		if (!f.isDirectory()) {
			f.mkdirs();
		}
	 
		BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
		fontZH = new Font(bfChinese, 20, Font.BOLD);
		
		// 插入一个Table
		FileOutputStream out = new FileOutputStream(rPath+File.separator + fileName);
		Document document = new Document();
		PdfWriter.getInstance(document, out);
			document.open(); 
			//文件标题
			if(null!=title && !"".equals(title)){
				PdfPTable tab = new PdfPTable(1);						//列数
				PdfPCell cell = new PdfPCell(new Phrase(title,fontZH));	//标题
				cell.setColspan(1);										//跨列 
				cell.setBorder(Rectangle.NO_BORDER); 					//去边框
				cell.setFixedHeight(50f);  								//行高
				cell.setVerticalAlignment(Element.ALIGN_MIDDLE);		//上下居中
				cell.setHorizontalAlignment(Element.ALIGN_CENTER);		//左右居中
				tab.addCell(cell); 
				document.add(tab); 
				//document.add(new Paragraph("\n\n"));	//换行 
			}
			//数据内容
			if(null!=title){
				document.add(table);
			}
			document.close();
		return url;
	}
	
	/**
	 * 设置表格内容和样式
	 * @param text
	 * @param font
	 * @param colspan
	 * @param rowspan
	 * @param align
	 * @param valign
	 * @param fill
	 * @return
	 */
	public static PdfPCell setCell(String flag,String text,Font font,int colspan,int rowspan,int align,int valign,float fill){
		PdfPCell cell = new PdfPCell(new Phrase(text,font));
    	cell.setVerticalAlignment(align);			//上下居中
		cell.setHorizontalAlignment(valign);		//左右居中
		if(DOC_TITLE.equals(flag)){
			
		}else if(DOC_HEADER.equals(flag)){
			cell.setColspan(colspan);
			cell.setRowspan(rowspan);
			cell.setGrayFill(fill);
		}else if(DOC_CONTENT.equals(flag)){

		}else if(DOC_FOOTER.equals(flag)){
			
		}
		return cell;
	}
	
	/**
	 * 设置表格列头
	 * @param text
	 * @param font
	 * @param colspan
	 * @param rowspan
	 * @param align
	 * @param valign
	 * @param grayfill
	 * @return
	 */
	public static PdfPCell setHeaderCell(String text,Font font,int colspan,int rowspan,int align,int valign,float grayfill){
		PdfPCell cell = setCell(DOC_HEADER,text,font,colspan,rowspan,align,valign,grayfill);
		return cell;
	}
	
	/**
	 * 设置表格内容
	 * @param text
	 * @param font
	 * @param align
	 * @param valign
	 * @return
	 */
	public static PdfPCell setContentCell(String text,Font font,int align,int valign){
		PdfPCell cell = setCell(DOC_CONTENT,text,font,1,1,align,valign,1f);
		return cell;
	}
}

 

访问:http://127.0.0.1:8080/print/index.jsp 点击"打印",会显示:



点击上图中的打印机图标,即可完成打印
 

  • 大小: 28.3 KB
  • 大小: 97.5 KB
分享到:
评论

相关推荐

    通过jsp生成PDF文件(包括中文格式)

    在IT行业中,生成PDF文件是一项常见的需求,尤其是在Web应用程序中,用户可能需要将数据导出为便于打印或存储的格式。本教程将介绍如何通过JavaServer Pages (JSP) 技术来创建包含中文字符的PDF文件。我们将讨论必要...

    jsp在线浏览pdf文件的jar包和插件

    "jsp在线浏览pdf文件的jar包和插件"就是解决这个问题的一种方案。这个资源提供了一个便捷的方法,允许开发者将PDF预览功能快速集成到自己的项目中,只需要一行代码即可实现。 首先,我们要理解这个资源的核心是`...

    jsp转pdf项目示例

    【JSP转PDF项目示例】是一个典型的IT项目,它主要关注的是如何将基于Java Server Pages(JSP)和HTML的网页内容转换成便于离线阅读和打印的PDF格式。这个项目提供了一种方法,使得用户能够将网页内容保存为PDF文档,...

    前台js将JSP转换成PDF文件涉及的两个js插件.zip

    在现代Web开发中,将网页内容转换为PDF文件的需求时常出现,例如用户可能希望保存页面以便离线阅读或打印。这个压缩包“前台js将JSP转换成PDF文件涉及的两个js插件.zip”提供了两个关键的JavaScript库,用于实现这一...

    jsp转换pdf工具,包含pd4ml.jar,ss_css2.jar,fonts.jar

    通常,这涉及到读取JSP页面内容,设置PDF生成参数(如页边距、纸张大小),然后调用转换方法生成PDF文件。此外,property配置文件可能包含了一些默认设置或者用户自定义的转换选项,如默认字体、页面模板等,可以按...

    iText把jsp转pdf并支持添加页眉页脚

    在这个场景中,"iText把jsp转pdf并支持添加页眉页脚"涉及到的是如何使用iText将动态生成的JSP页面转换为静态的PDF文件,并在此过程中添加自定义的页眉和页脚。 JSP(JavaServer Pages)是一种服务器端的编程技术,...

    Java Jsp 调用ireport动态模板打印

    iReport是一款开源的报表设计工具,它可以与Java、JSP、Servlets等进行集成,为开发者提供灵活的报表生成和打印功能。在这个场景下,我们主要讨论如何利用iReport创建动态模板,以及如何通过JSP和Java代码来调用这些...

    java jsp 生成 pdf flyingsaucer

    Java JSP 生成 PDF 使用的是一个名为 Flying Saucer 的库,它是一个开源项目,专门用于将 HTML 内容转换为高质量的 PDF 文件。这个过程在 IT 行业中非常重要,因为许多应用程序需要将动态生成的网页内容导出为可打印...

    pdf.js使用文件流预览pdf

    这对于处理大型PDF文件非常有用,可以避免内存占用过多的问题。PDF.js支持文件流预览,意味着我们可以从服务器获取PDF的数据流,然后逐步解析和显示内容,而不需要等待整个文件下载完成。 要使用PDF.js实现文件流...

    java定位打印实例demo,通过jsp来打印

    客户端浏览器接收到这个流后,可以弹出打印对话框,让用户选择打印机进行打印。 4. **示例代码**:在`JavaPrint`目录中,可能包含了几个不同的示例,每个示例都展示了如何在JSP页面中处理不同的打印需求。例如,一...

    Java web 打印,Java pdf打印,Java打印

    在本例中,开发者使用了JSP技术和Struts框架来构建Web表单,并实现了向服务器发送请求以生成PDF文件的功能。以下为关键知识点: - **JSP页面**: JSP(Java Server Pages)是一种基于Java的动态网页技术标准,它可以...

    jquery.media在线预览pdf文件

    当涉及到在线预览PDF文件时,jQuery可以作为一个强大的工具,结合其他插件或技术来实现这一功能。本篇文章将深入探讨如何利用jQuery和相关插件,特别是jQuery.media,来实现PDF文件的在线预览。 标题"jquery.media...

    报表与打印(jsp).rar

    总之,"报表与打印(jsp).rar"这个压缩包内容涵盖了使用JSP进行报表设计和打印实现的关键技术和实践。开发者通过学习和使用其中的资源,能够提升自己在企业级应用开发中的报表处理能力,为用户提供直观的数据展示和...

    李兴华老师jsp课程全程笔记,不是PDF格式,可打印。

    【描述】中提到“直接下载解压就可以看,不是PDF格式,可打印”,意味着笔记是以一种可直接查看和打印的非PDF格式存储,可能是HTML、Word或者文本文件等。这样的格式便于用户在学习过程中进行编辑、注释,甚至打印...

    java jsp 打印

    1. iText:iText是一个流行的PDF库,可以在Java中生成PDF文档,然后利用浏览器的PDF阅读器进行打印。它提供了丰富的API来创建复杂的布局和样式。 2. JasperReports:JasperReports是一个强大的报表工具,可以生成...

    JSP PDF打印 随记 复杂模板设计

    本篇随记主要探讨的是如何在JSP环境中进行PDF打印,并涉及复杂的模板设计。PDF(Portable Document Format)是一种通用的文件格式,常用于生成保持原始文档格式不变的静态文档,适用于打印和共享。 首先,我们需要...

    SpringMVC+jspereport,实现报表分页查看、文件(pdf、excel、word)导出,以及html展示和调用浏览器打印功能实现打印

    本项目结合了SpringMVC框架与JasperReport工具,实现了报表的多种功能,包括分页查看、文件导出(PDF、Excel、Word)以及HTML展示和浏览器打印功能。 首先,SpringMVC作为Java Web开发的主流MVC框架,提供了模型-...

    实现jsp页面里的内容通过Excel打印输出来

    在IT行业中,尤其是在Web开发领域,常常需要将网页上的数据导出为Excel格式,以便用户进行数据管理和打印。本篇文章将详细讲解如何在JSP页面中实现内容的Excel打印输出,以及相关的预览和定制打印规格功能。 首先,...

    jsp开发实现wordexcel的在线预览

    JSP是由Java代码和HTML组成的,当用户请求一个JSP页面时,服务器会将JSP转化为Servlet,然后执行Java代码,生成HTML响应,最后将HTML发送回客户端浏览器进行渲染。因此,我们可以通过JSP调用Java代码来处理Word和...

    利用iText在JSP中生成PDF报表

    如果将它转成PDF文件再打印,则打印效果会好很多。 iText简介 iText是一个开放源码的Java类库,可以用来方便地生成PDF文件。大家通过访问...

Global site tag (gtag.js) - Google Analytics