在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 点击"打印",会显示:
点击上图中的打印机图标,即可完成打印
相关推荐
在IT行业中,生成PDF文件是一项常见的需求,尤其是在Web应用程序中,用户可能需要将数据导出为便于打印或存储的格式。本教程将介绍如何通过JavaServer Pages (JSP) 技术来创建包含中文字符的PDF文件。我们将讨论必要...
"jsp在线浏览pdf文件的jar包和插件"就是解决这个问题的一种方案。这个资源提供了一个便捷的方法,允许开发者将PDF预览功能快速集成到自己的项目中,只需要一行代码即可实现。 首先,我们要理解这个资源的核心是`...
【JSP转PDF项目示例】是一个典型的IT项目,它主要关注的是如何将基于Java Server Pages(JSP)和HTML的网页内容转换成便于离线阅读和打印的PDF格式。这个项目提供了一种方法,使得用户能够将网页内容保存为PDF文档,...
在现代Web开发中,将网页内容转换为PDF文件的需求时常出现,例如用户可能希望保存页面以便离线阅读或打印。这个压缩包“前台js将JSP转换成PDF文件涉及的两个js插件.zip”提供了两个关键的JavaScript库,用于实现这一...
通常,这涉及到读取JSP页面内容,设置PDF生成参数(如页边距、纸张大小),然后调用转换方法生成PDF文件。此外,property配置文件可能包含了一些默认设置或者用户自定义的转换选项,如默认字体、页面模板等,可以按...
在这个场景中,"iText把jsp转pdf并支持添加页眉页脚"涉及到的是如何使用iText将动态生成的JSP页面转换为静态的PDF文件,并在此过程中添加自定义的页眉和页脚。 JSP(JavaServer Pages)是一种服务器端的编程技术,...
iReport是一款开源的报表设计工具,它可以与Java、JSP、Servlets等进行集成,为开发者提供灵活的报表生成和打印功能。在这个场景下,我们主要讨论如何利用iReport创建动态模板,以及如何通过JSP和Java代码来调用这些...
Java JSP 生成 PDF 使用的是一个名为 Flying Saucer 的库,它是一个开源项目,专门用于将 HTML 内容转换为高质量的 PDF 文件。这个过程在 IT 行业中非常重要,因为许多应用程序需要将动态生成的网页内容导出为可打印...
这对于处理大型PDF文件非常有用,可以避免内存占用过多的问题。PDF.js支持文件流预览,意味着我们可以从服务器获取PDF的数据流,然后逐步解析和显示内容,而不需要等待整个文件下载完成。 要使用PDF.js实现文件流...
客户端浏览器接收到这个流后,可以弹出打印对话框,让用户选择打印机进行打印。 4. **示例代码**:在`JavaPrint`目录中,可能包含了几个不同的示例,每个示例都展示了如何在JSP页面中处理不同的打印需求。例如,一...
在本例中,开发者使用了JSP技术和Struts框架来构建Web表单,并实现了向服务器发送请求以生成PDF文件的功能。以下为关键知识点: - **JSP页面**: JSP(Java Server Pages)是一种基于Java的动态网页技术标准,它可以...
当涉及到在线预览PDF文件时,jQuery可以作为一个强大的工具,结合其他插件或技术来实现这一功能。本篇文章将深入探讨如何利用jQuery和相关插件,特别是jQuery.media,来实现PDF文件的在线预览。 标题"jquery.media...
总之,"报表与打印(jsp).rar"这个压缩包内容涵盖了使用JSP进行报表设计和打印实现的关键技术和实践。开发者通过学习和使用其中的资源,能够提升自己在企业级应用开发中的报表处理能力,为用户提供直观的数据展示和...
【描述】中提到“直接下载解压就可以看,不是PDF格式,可打印”,意味着笔记是以一种可直接查看和打印的非PDF格式存储,可能是HTML、Word或者文本文件等。这样的格式便于用户在学习过程中进行编辑、注释,甚至打印...
1. iText:iText是一个流行的PDF库,可以在Java中生成PDF文档,然后利用浏览器的PDF阅读器进行打印。它提供了丰富的API来创建复杂的布局和样式。 2. JasperReports:JasperReports是一个强大的报表工具,可以生成...
本篇随记主要探讨的是如何在JSP环境中进行PDF打印,并涉及复杂的模板设计。PDF(Portable Document Format)是一种通用的文件格式,常用于生成保持原始文档格式不变的静态文档,适用于打印和共享。 首先,我们需要...
本项目结合了SpringMVC框架与JasperReport工具,实现了报表的多种功能,包括分页查看、文件导出(PDF、Excel、Word)以及HTML展示和浏览器打印功能。 首先,SpringMVC作为Java Web开发的主流MVC框架,提供了模型-...
在IT行业中,尤其是在Web开发领域,常常需要将网页上的数据导出为Excel格式,以便用户进行数据管理和打印。本篇文章将详细讲解如何在JSP页面中实现内容的Excel打印输出,以及相关的预览和定制打印规格功能。 首先,...
JSP是由Java代码和HTML组成的,当用户请求一个JSP页面时,服务器会将JSP转化为Servlet,然后执行Java代码,生成HTML响应,最后将HTML发送回客户端浏览器进行渲染。因此,我们可以通过JSP调用Java代码来处理Word和...
如果将它转成PDF文件再打印,则打印效果会好很多。 iText简介 iText是一个开放源码的Java类库,可以用来方便地生成PDF文件。大家通过访问...