package com.nfcswp.common.util; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.util.List; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import com.itextpdf.text.Document; import com.itextpdf.text.Element; import com.itextpdf.text.Font; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import com.nfcswp.common.model.ResultReport; import com.nfcswp.entity.ResultInfo; import com.opensymphony.xwork2.ActionSupport; /** * * 描述:根据投保单号 生成pdf<br> * 作者:lihengjun <br> * 修改日期:2012-9-14上午10:38:15 <br> * E-mail: */ public class PdfUtil extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private String pdfName; /** * * 描述:生成电子投保凭证 * @author lihengjun * 修改日期:2012-9-14上午09:50:47 * @param policyNo 投保单号 */ public void createPdf(HttpServletResponse response,ResultReport resReport) throws Exception{ response.reset(); OutputStream os = response.getOutputStream();// 取得输出流 response.setContentType("application/pdf");//可以在网页中用pdf reader打开 String fname="TestReport"+DateUtil.currentDate2YMDMethod(); Document document = new Document(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); PdfWriter.getInstance(document, buffer); response.setHeader("Content-disposition", "attachment; filename=" + new String(("123123.pdf").getBytes(), "iso-8859-1")); try { // 设定文档的远东字符集 BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font FontChinese = new Font(bfChinese, 9, Font.NORMAL);// 小五号黑体 Font FontChineseFooter = new Font(bfChinese, 10, Font.BOLD);// 五号黑体加粗 Font FontChineseUnderline = new Font(bfChinese, 9, Font.UNDERLINE);// 小五号黑体下划线 FontChineseUnderline.setColor(0, 0, 255); Font FontHeadBold = new Font(bfChinese, 18, Font.BOLD);// 小二号黑体加粗 Font FontBold = new Font(bfChinese, 9, Font.BOLD);// 小五号黑体加粗 Font FontContent = new Font(bfChinese, 7, Font.NORMAL);// 小六号黑体 // 打开文档 document.open(); /** 保险止期 */ // 设定文档的标题 Paragraph Title = new Paragraph("Automated Testing Report", FontHeadBold); Paragraph row021 = new Paragraph("2013/07/02", FontBold); Paragraph row031 = new Paragraph("Statistical Information", FontBold); Paragraph row041 = new Paragraph("scenes name", FontBold); Paragraph row042 = new Paragraph("create time", FontBold); Paragraph row043 = new Paragraph("total executed", FontBold); Paragraph row044 = new Paragraph("pass", FontBold); Paragraph row045 = new Paragraph("fail", FontBold); Paragraph row051 = new Paragraph(resReport.getScenesName(),FontChinese); Paragraph row052 = new Paragraph(resReport.getTimeTag(),FontChinese); Paragraph row053 = new Paragraph(String.valueOf(resReport.getTotalNum()),FontChinese); Paragraph row054 = new Paragraph(resReport.getSuccessResultNum()+"",FontChinese); Paragraph row055 = new Paragraph(resReport.getFailResultNum()+"",FontChinese); Paragraph row061 = new Paragraph("Test Case Information", FontBold); Paragraph row071 = new Paragraph("case name", FontBold); Paragraph row072 = new Paragraph("case number", FontBold); Paragraph row073 = new Paragraph("test result", FontBold); Paragraph row074 = new Paragraph("error message", FontBold); PdfPTable tableScenes = new PdfPTable(5); tableScenes.setHorizontalAlignment(Element.ALIGN_MIDDLE); int hws[] = {15,15,15,15,15}; tableScenes.setWidths(hws); tableScenes.setTotalWidth(15); tableScenes.setSpacingBefore(30); // 设定头 PdfPCell cell = new PdfPCell(Title); cell.setUseDescender(true); cell.setHorizontalAlignment(1); cell.setBorderWidth(0); // cell.setHeader(true); cell.setRowspan(2); cell.setColspan(5); tableScenes.addCell(cell); // 第二行第一列 cell = new PdfPCell(row021); cell.setHorizontalAlignment(Element.ALIGN_LEFT); cell.setUseDescender(true); cell.setBorderWidth(0); // cell.setBorderWidthBottom(1); cell.setColspan(5); tableScenes.addCell(cell); // 第三行第一列 cell = new PdfPCell(row031); cell.setHorizontalAlignment(Element.ALIGN_LEFT); cell.setUseDescender(false); cell.setBorderWidth(0); cell.setColspan(5); tableScenes.addCell(cell); // 第四行第一列 cell = new PdfPCell(row041); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableScenes.addCell(cell); // 第四行第二列 cell = new PdfPCell(row042); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableScenes.addCell(cell); // 第四行第三列 cell = new PdfPCell(row043); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableScenes.addCell(cell); // 第四行第四列 cell = new PdfPCell(row044); cell.setHorizontalAlignment(Element.ALIGN_CENTER); // cell.setNoWrap(true); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableScenes.addCell(cell); // 第四行第五列 cell = new PdfPCell(row045); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableScenes.addCell(cell); // 第五行第一列 cell = new PdfPCell(row051); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableScenes.addCell(cell); // 第五行第二列 cell = new PdfPCell(row052); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableScenes.addCell(cell); // 第五行第三列 cell = new PdfPCell(row053); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableScenes.addCell(cell); // 第五行第四列 cell = new PdfPCell(row054); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableScenes.addCell(cell); // 第五行第五列 cell = new PdfPCell(row055); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableScenes.addCell(cell); PdfPTable tableCase = new PdfPTable(4); tableCase.setHorizontalAlignment(Element.ALIGN_MIDDLE); int hws2[] = {15,15,15,15}; tableCase.setWidths(hws2); tableCase.setTotalWidth(15); tableCase.setSpacingBefore(30); // 第六行第一列 cell = new PdfPCell(row061); cell.setHorizontalAlignment(Element.ALIGN_LEFT); cell.setUseDescender(true); cell.setBorderWidth(0); cell.setColspan(4); tableCase.addCell(cell); // 第七行第一列 cell = new PdfPCell(row071); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableCase.addCell(cell); // 第七行第二列 cell = new PdfPCell(row072); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableCase.addCell(cell); // 第七行第三列 cell = new PdfPCell(row073); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableCase.addCell(cell); // 第七行第四列 cell = new PdfPCell(row074); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableCase.addCell(cell); List<ResultInfo> tmpResList = resReport.getResultList(); if(tmpResList!=null && tmpResList.size()>0){ for(int i=0;i<tmpResList.size();i++){ Paragraph row_caseResult_1 = new Paragraph(tmpResList.get(i).getCase_info().getName()+"", FontChinese); Paragraph row_caseResult_2 = new Paragraph(tmpResList.get(i).getCase_info().getCase_number()+"", FontChinese); Paragraph row_caseResult_3 = new Paragraph(tmpResList.get(i).getRun_state().getName()+"", FontChinese); Paragraph row_caseResult_4 = new Paragraph(tmpResList.get(i).getError_message(), FontChinese); cell = new PdfPCell(row_caseResult_1); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableCase.addCell(cell); cell = new PdfPCell(row_caseResult_2); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableCase.addCell(cell); cell = new PdfPCell(row_caseResult_3); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableCase.addCell(cell); cell = new PdfPCell(row_caseResult_4); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setUseDescender(true); cell.setBorderWidth(1); cell.setColspan(1); tableCase.addCell(cell); } } document.add(tableScenes); document.add(tableCase); document.close(); response.setHeader("Expires", "0"); response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0"); response.setHeader("Pragma", "public"); response.setContentLength(buffer.size()); //创建servletoutputstream流对象,即为response。getoutputstream ServletOutputStream out = response.getOutputStream(); buffer.writeTo(out);//将字节输出流写入到servletoutputstream out.flush();//out。flush输出内容 } catch (Exception e) { e.printStackTrace(); } } public String getPdfName() { return pdfName; } public void setPdfName(String pdfName) { this.pdfName = pdfName; } public static void main(String[] args) { PdfUtil pdf = new PdfUtil(); //pdf.createPdf(); System.exit(0); } }
相关推荐
- `href`属性指定链接的目标地址,文本内容被点击后跳转到该地址。 8. 下拉框`<select>`: - `option`定义选项,`value`设置值,`selected`指定默认选中项。 9. 表格`<table>`: - `table`属性包括`bgcolor`, `...
锚点链接允许在长页面中创建快速跳转点,使用方法是通过id属性来标记页面中的锚点位置,然后在<a>标签的href属性中引用这个id。 HTML注释允许开发者在代码中添加说明,不会被浏览器展示给最终用户。注释的格式是<!-...
49. 创建锚点链接通过<a>标签的name属性和href属性实现,用于页面内部跳转。 50. 创建电子邮件超链接使用mailto:协议,如<a href="mailto:email@example.com">发送邮件</a>。 51. 创建空链接使用<a href="#">。</...
51. 创建锚点链接使用<a href="#name">,作用是实现页面内部跳转。 52. 电子邮件超链接使用<a href="mailto:email@example.com">。 53. 空链接使用<a href="#">。 54. 超链接标签<a>的属性包括href(链接地址)、...
这里 `<s:url value="/css/tutorial.css"/>` 会生成实际的 URL 地址,这样即使页面的路径发生改变,也不会影响到 CSS 文件的引用。 ##### 2. 直接链接 直接链接用于直接指向某个 Action,这可以方便地实现页面间的...
`<A>`标签的`href`属性定义了链接的目标地址,`target`属性则决定了新页面是在当前窗口打开还是在新窗口打开。 1.3.7节涉及列表标记,包括无序列表`<UL>`、有序列表`<OL>`和定义列表`<DL>`,它们用于组织信息并提高...
<li><a href="#{generate-id()}"><xsl:value-of select="."/></a></li> </xsl:for-each> </ul> </body> </html> </xsl:template> </xsl:stylesheet> ``` 当你应用这个XSLT到TEI文档上时,它会生成一个包含...
2. 链接标签<a>的使用:该标签用于创建超链接,使用户能够点击跳转到其他页面或网站。其基本格式为<a href="目标网址">链接文本</a>,其中href属性指定了链接的目标URL。 3. IP地址概念:互联网协议(IP)地址是...
- `<a>` 标签用于创建链接,`href` 属性定义链接指向的URL地址,`target` 属性定义链接如何打开,例如`_blank`打开新窗口。 - `#` 通常用于创建锚点链接,实现页面内的快速跳转。 7. **层叠和继承**: - CSS样式...
page=".($page+1)."'>下一页</a> | <a href='?page=".$page_count."'>尾页</a>"; } // 获取数据 if( $amount ) { $sql = "SELECT * FROM table LIMIT ".(($page-1)*$PageSize).", $PageSize"; $result = mysql_...
它可以动态地绑定到一个Action,如示例所示,`<s:a href="login.action">登陆</s:a>`会跳转到名为"login.action"的Action。 2. **action标签**:`<s:action>`标签允许直接在JSP页面中调用Action,例如`<s:action ...
- **示例**: `Map<String, Object> validationRules = new HashMap<>();` - **应用场景**: 动态设置校验规则。 **2.2 变量自动转换/校验变量类型** - **自动转换**: 使用`@Property`注解指定字段类型,Tapestry会...
<link type="text/css" rel="stylesheet" href="../styles/main.css" /> <script type="text/javascript" src="../scripts/dtree.js"></script> ``` 这种方式在直接访问`test.jsp`时有效,但当通过其他路径(如...
<a href="{{ route('invoice.download', $invoice->id) }}">{{ $invoice->invoiceNo }}</a> <!-- 其他信息展示... --> </li> @endforeach </ul> ``` 对应的`download`方法会通过ECPAY API获取PDF发票文件并提供...
在Python中,如果你正在创建HTML文档,可以使用`a`标签来创建链接,如`<a href="file_path">文件名</a>`。如果是创建Word文档或PDF,可能需要使用特定的库,如Python的`docx`库或`PyPDF2`库。对于PDF,可能还需要...
<a href="/list?page=${page}">${page}</a> </#list> ``` 4. **样式和交互**:虽然Freemarker主要负责生成静态HTML,但为了让分页看起来更美观,我们还需要CSS来定义样式。同时,可能需要JavaScript来实现点击...
在项目中创建index.jsp页面,添加一个链接到login.jsp,如`<a href="login.jsp">Login</a>`。然后创建Forward类indexForword,设置"Name"为"indexForword","Path"为"/index.jsp"。 在LoginAction.java中,我们需要...
当通过JavaScript禁止<a>标签的默认行为后,可以使用window.location.href或history.pushState()等方法来进行页面跳转而不刷新页面。 4. React层面的性能优化: 性能优化可通过多种手段实现,如使用...