导出PDF 空白赋值备份
后台代码
//出货清单
@RequestMapping(params="getBusinessOutDetail")
public void getBusinessOutDetail(HttpServletRequest req,HttpServletResponse response,String id,String codes) throws IOException {
String impTypess = req.getParameter("impTypess");//1、打印 2、预览 3、打印并预览
if("1".equals(impTypess)){
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("收货清单.pdf" , "UTF-8"));
response.setHeader("Pragma", "public");
response.setContentType("application/pdf");
}
List<BusinessExpressEntity> expList = new ArrayList<>();
StringBuilder code = new StringBuilder("");
String productAllName = "";
String[] arr = codes.split(",");
for (String s : arr) {
BusinessExpressEntity express = systemService.findByProperty(BusinessExpressEntity.class, "shipmentLabelcode",s).get(0);
expList.add(express);
code.append("'" + s + "',");
productAllName += express.getProductName() + ",";
} String sql = " SELECT e.id,e.business_serveinvoicecode,e.consignee_country,e.product_name,e.business_pieces,e.business_grossweight,e.business_customervolumnweight,e.cargotype_code,group_concat(i.invoice_name SEPARATOR ';' ) as content,SUM(s.total_price) as totalPrice from business_express e \n" +
"LEFT JOIN business_invoice i on i.business_id = e.id\n" +
" LEFT JOIN wms_expenses_payment s on s.business_id = e.id \n" +
" LEFT JOIN business_shipment a on a.id = e.shipment_id \n" +
" where a.shipment_labelcode in ("+code.substring(0,code.length()-1).toString()+") and e.bpm_status!=0 GROUP BY e.id "; RowMapper<BusinessPdfDTO> rowMapper = new BeanPropertyRowMapper<BusinessPdfDTO>(BusinessPdfDTO.class);
List<BusinessPdfDTO> list = jdbcTemplate.query(sql, rowMapper); String typeSql = "SELECT * from t_s_type where typegroupid in (SELECT id from t_s_typegroup where typegroupcode= 'cargo')";
List<Map<String, Object>> typeList = jdbcTemplate.queryForList(typeSql);
HashMap typeMap = new HashMap<String, String>();
for (Map<String,Object> temp : typeList) {
typeMap.put(temp.get("typecode").toString(), temp.get("typename").toString());
} PdfFont font = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H",true); PdfDocument pdf = new PdfDocument(new PdfWriter(response.getOutputStream()));
Document document = new Document(pdf);
document.add(new Paragraph("出货交接清单").setVerticalAlignment(VerticalAlignment.MIDDLE).setTextAlignment(TextAlignment.CENTER).setFont(font).setFontSize(14));
for (BusinessExpressEntity express : expList) {
document.add(new Paragraph("出货信息:"+express.getShipmentLabelcode()+" "+DateUtils.date2Str(new Date(),DateUtils.time_sdf)+" "+express.getCustomerName()).setVerticalAlignment(VerticalAlignment.MIDDLE).setTextAlignment(TextAlignment.LEFT).setFont(font).setFontSize(12));
} Table table = new Table(new float[]{30,70,70,70,70,70,70,70,70,70});
table.addCell(new Cell().add(new Paragraph("序号")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph("转单号")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph("产品名称")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph("件数")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph("类型")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph("国家")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph("实重")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph("体积重")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
//table.addCell(new Cell().add(new Paragraph("应收费用")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph("备注")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9)); //统计包裹
int bg = 0;
//统计文件
int wj = 0;
double weight = 0;
double price = 0; for (int i=0;i<list.size();i++) {
table.addCell(new Cell().add(new Paragraph((i+1)+"")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph(list.get(i).getBusinessServeinvoicecode())).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph(list.get(i).getProductName())).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph(list.get(i).getBusinessPieces()+"")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
if (typeMap.containsKey(list.get(i).getCargotypeCode())) {
table.addCell(new Cell().add(new Paragraph(typeMap.get(list.get(i).getCargotypeCode()).toString())).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
} else {
table.addCell(new Cell().add(new Paragraph("")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
}
table.addCell(new Cell().add(new Paragraph(list.get(i).getConsigneeCountry())).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph(list.get(i).getBusinessGrossweight()==null?"": DecimalUtil.subData(list.get(i).getBusinessGrossweight()+""))).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph(list.get(i).getBusinessCustomervolumnweight()==null? "":list.get(i).getBusinessCustomervolumnweight()+"")).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
//table.addCell(new Cell().add(new Paragraph(list.get(i).getTotalPrice()==null? "":list.get(i).getTotalPrice())).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9));
table.addCell(new Cell().add(new Paragraph("配货:"+list.get(i).getContent())).setBorder(com.itextpdf.layout.borders.Border.NO_BORDER).setFont(font).setFontSize(9)); if("P".equals(list.get(i).getCargotypeCode())){
bg++;
}
if("D".equals(list.get(i).getCargotypeCode())){
wj++;
}
if (list.get(i).getBusinessGrossweight() != null) {
weight += java.lang.Double.parseDouble(list.get(i).getBusinessGrossweight().toString());
}
if (list.get(i).getTotalPrice() != null) {
price += java.lang.Double.parseDouble(list.get(i).getTotalPrice().toString());
} } document.add(table); document.add(new Paragraph("合计 总票数:"+list.size()+" 总实重:"+String.format("%.2f", weight)+" 总费用:"+price).setFont(font).setFontSize(9));
document.add(new Paragraph("包裹:"+bg+" 文件:"+wj).setFont(font).setFontSize(9).setMarginTop(-3));
// document.add(new Paragraph(express.getProductName()+" "+list.size()+" 票").setFont(font).setFontSize(9).setMarginTop(-8));
document.add(new Paragraph(productAllName.substring(0,productAllName.length()-1)+" "+list.size()+" 票").setFont(font).setFontSize(9).setMarginTop(-8)); document.add(new Paragraph("请仔细阅读后确认签字:").setFont(font).setFontSize(9).setMaxHeight(15).setMarginTop(-3));
document.add(new Paragraph("快件交接清单上显示的目的地国家仅供参考,正式录单时会再次确认,最终的目的地国家请以客户账单为准。如果发现快件").setFont(font).setFontSize(9).setMarginTop(-8).setMarginLeft(10));
document.add(new Paragraph("交接清单目的地国家有误,请立即告之快件签入人员或与负责贵司查询事务的客户专员联系,谢谢合作").setFont(font).setFontSize(9).setMarginTop(-8)); document.add(new Paragraph("收货公司签字: _________________ "+" "+"我司出货员: _________________").setFont(font).setFontSize(9).setMarginLeft(10)); document.close();
pdf.close(); }
前台代码:
function printQD() {
var rowsData = $('#businessArrivalList').datagrid('getSelections');
if(rowsData.length==0){
tip("请选择数据");
return false;
}else if(rowsData.length>1){
tip("只能选择一个数据");
return false;
}
var xueurl = "fileFormatController.do?getXbDetail_print&id=&codes=" + rowsData[0].arrivalLabelcode;
$.messager.defaults = { ok: "确定", cancel: "取消" };
const html = '<p id="p"><label for="r">请选择打印方式</label></p><p id="p">'
+ ' <label for="r"><input type="radio" id="r" name="impTypess" value="1" checked>'
+ ' 直接打印</label>'
+ ' <label for="r1"><input type="radio" id="r1" name="impTypess" value="2">'
+ ' 预览</label></p> </p>'
+ ' <label for="r2"><input type="radio" id="r2" name="impTypess" value="3" >'
+ ' 打印并预览</label></p> </p>'
$.messager.confirm("请选择打印方式", html, function (data) {
if (data) {
var impTypess = $("input[name='impTypess']:checked ").val();
xueurl+='&impTypess='+impTypess;
if(impTypess=='2'){//预览
window.open(xueurl);
}else if(impTypess=='3'){//预览并打印
window.open(xueurl);
window.location.href = 'fileFormatController.do?getXbDetail_print&id=&codes=' + rowsData[0].arrivalLabelcode+'&impTypess=1';
}else if(impTypess=='1'){//打印
window.location.href = 'fileFormatController.do?getXbDetail_print&id=&codes=' + rowsData[0].arrivalLabelcode+'&impTypess=1';
}
}
});
//window.location.href = "fileFormatController.do?getXbDetail_print&id=&codes=" + rowsData[0].arrivalLabelcode+"&ylFlag=0";
}
效果:

导出PDF 空白赋值备份的更多相关文章
- java根据模板导出pdf
在网上看了一些Java生成pdf文件的,写的有点乱,有的不支持写入中文字体,有的不支持模板,有的只是随便把数据放里面生成文件,完全不考虑数据怎样放置的以及以后的维护性,想想还是自己总结一个完全版的导出 ...
- 史上最全的springboot导出pdf文件
最近项目有一个导出报表文件的需求,我脑中闪过第一念头就是导出pdf(产品经理没有硬性规定导出excel还是pdf文件),于是赶紧上网查看相关的资料,直到踩了无数的坑把功能做出来了才知道其实导出exce ...
- 网页导出PDF文件
转自-----出道诗人 var downPdf = document.getElementById("exportToPdf"); downPdf.onclick = functi ...
- java根据模板文件导出pdf
原文:https://www.cnblogs.com/wangpeng00700/p/8418594.html 在网上看了一些Java生成pdf文件的,写的有点乱,有的不支持写入中文字体,有的不支持模 ...
- js_网页导出pdf文件
打印当前页面,一开始我认为是需要输出pdf的,后来了解的需求是能够打印就可以了.需求既然都研究了,记录下. 更好的打印方式,window.print();会弹出打印对话框,打印的是window.doc ...
- JSP页面导出PDF格式文件
JSP页面导出PDF格式文件基本在前端页面可以全部完成 <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/ ...
- java动态导出PDF(利用itext)
项目基于ssm框架,使用itext动态导出pdf文件: 1.引入两个jar包:itextpdf-5.5.5.jar.itext-asian-5.2.0.jar 说明: 1.itextpdf-5.5.5 ...
- HTML页面导出PDF——高清版
需要做一个导出PDF的功能,网上找有很多,但是一般导出来的都是比较模糊的那种,下面这个是高清版的,导出的PDF都是几M,跟正常手动导出的差不多,很清晰. 首先用到的JS有: <script ty ...
- vue项目中导出PDF的两种方式
参考大家导出的方式,基本上是如下两种: 1.使用 html2Canvas + jsPDF 导出PDF, 这种方式什么都好,就是下载的pdf太模糊了.对要求好的pdf这种方式真是不行啊! 2.调用浏览器 ...
- React项目实现导出PDF的功能
在做web项目中,有时候会遇到pdf导出的需求,现根据之前在公司的React项目中遇到的导出PDF需求,整理一个demo出来. 导出PDF需要用到两个依赖包:html2canvas.jspdf 1.安 ...
随机推荐
- XAMPP-Apache-解决跨域
很 意外啊,我这篇文章竟然说因为有广告,所以审核不通过.牛逼,我接着发,我看哪来的广告.审核有广告是NT技术写的逻辑,还是没脑子的审核员审核的. 因为在做项目的时候,会有很多项目要进行热更测试,可有些 ...
- Kubernetes(k8s)控制器(二):DaemonSet
目录 一.系统环境 二.前言 三.DaemonSet 概览 四.创建DaemonSet 4.1 创建daemonset 让其在k8s集群所有worker节点运行pod 4.2 创建daemonset让 ...
- python学习第八周总结
多进程实现TCP服务端并发 之前我们学习了用socket模块进行文字以及文件的传输,但是之前的操作一个服务端只能与一个客户端进行交互,如果要想实现多个客户端与服务端交互的并发效果,我们需要进行如下操作 ...
- 打开MASA Blazor的正确姿势2:组件总览
官网文档按拼音罗列组件,且部分嵌套组件没有在导航栏内列出,不利于浏览查阅.本篇文章的主要目的,主要是对所有组件按大家习惯的方式进行分类,简要介绍组件,并建立跳转官方文档的链接. 一.导航布局类 1 ...
- Vue框架:6、Vue组件间通信,动态组件,插槽,计算属性,监听属性
目录 前端开发之Vue框架 一.Vue组件间通信 1.组件间通讯父传子 2.组件间通讯子传父 3.ref属性 二.动态组件 1.不使用动态组件 2.使用动态组件 3.keep-alive保持组件不销毁 ...
- clicknium-划时代的自动化
说起UI自动化,selenium一直是不可替代的存在,它的安装量.百度数量已经奠定了它在自动化.爬虫等相关领域的霸主低位,可以说,只要涉及到UI自动化,选selenium就对了. 细数过往,相关的UI ...
- 用ChatGPT,绘制一个账号系统的C4架构图
hi,我是熵减,见字如面. 昨天我们用ChatGPT来设计一个账号系统,并尝试输出:模型表,类关系图,序列图,状态图等常用的架构设计中常用的元素. 今天,我们继续向更高层级延伸一下,看ChatGPT能 ...
- 初学 Socket.io
概念 Socket.io 是一个支持客户端和服务器之间的低延迟.双向和基于事件的通信的库,除了支持 JavaScript 以外,还支持 Java.Python.Golang. Socket.io 构建 ...
- Cesium渲染模块之VAO
1. 引言 Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业 ...
- ArcGIS for Android 实现地图基本操作
地图基本操作 1.前期项目准备 1.1. 创建新工程 新建一个空活动项目 选择语言.平台,修改命名等 1.2. 添加ArcGIS SDK build.gradle (Project: <proj ...