打印收款单据(easypoi)Vue+springBoot+Mybatisplus

打印pdf单据(模板)

前端

先导入printJS
yarn add print-js





打印收款单据(easypoi)Vue+springBoot+Mybatisplus_第1张图片

后端

用的是easypoi
打印收款单据(easypoi)Vue+springBoot+Mybatisplus_第2张图片
模板不会写的,可以去看官方文档 easyoi ,很详细。
打印收款单据(easypoi)Vue+springBoot+Mybatisplus_第3张图片

  /**
     * 打印收款单
     */
    @Override
    public void downloadReceipt(String id, HttpServletResponse response) throws IOException {
        Map map= new HashMap<>();
        List list=propertyPaymentDetailMapper.getReceipt(Long.valueOf(id));
        list.stream().peek(item->{
            if (item.getType().equals("3")){
                item.setPrice(0L);
            }
            if (!item.getType().equals("2")){
                item.setStartRecord(0L);
                item.setEndRecord(0L);
            }
        }).collect(Collectors.toList());
        PropertyPayment propertyPayment =propertyPaymentMapper.selectOne(new LambdaQueryWrapper().eq(PropertyPayment::getBillNo,id));
        map.put("billNo",id);
        map.put("payTime",propertyPayment.getPayTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        map.put("totalAmount",propertyPayment.getTotalAmount() / 100.0);
        map.put("totalActualAmount",propertyPayment.getTotalActualAmount() / 100.0);
        map.put("amountCapital", convertRMB.toRMBUpper(String.valueOf(propertyPayment.getTotalActualAmount() / 100.0)));
        List> listMap= new ArrayList>();
        list.stream().peek(item->{
            Map lm=new HashMap();
            lm.put("itemText",item.getItemText());
            lm.put("startTime",item.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            lm.put("endTime",item.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            lm.put("price",String.valueOf(item.getPrice() / 100.0));
            lm.put("amount",String.valueOf(item.getAmount() / 100.0));
            lm.put("startRecord",String.valueOf(item.getStartRecord() / 100.0));
            lm.put("endRecord",String.valueOf(item.getEndRecord() / 100.0));
            lm.put("num",String.valueOf(item.getEndRecord() /100.0 - item.getStartRecord() / 100.0));
            lm.put("actualAmount",String.valueOf(item.getActualAmount() / 100.0));
            listMap.add(lm);
            map.put("roomNo",item.getRoomNo());
            map.put("ownerName",item.getOwnerName());
            map.put("buildArea",item.getBuildArea() / 100.0);
            map.put("employeeName",item.getEmployeeName());
            map.put("totalDiscountAmount",String.valueOf(item.getTotalDiscountAmount() / 100.0));
        }).collect(Collectors.toList());
        map.put("maplist",listMap);
        TemplateExportParams params = new TemplateExportParams("templates/reciptExcel.xlsx");
        Workbook workbook= ExcelExportUtil.exportExcel(params,map);
        response.setCharacterEncoding("UTF-8");
        response.addHeader("Access-Control-Allow-Headers", "Content-Disposition");
        response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("收据表.pdf", "UTF-8"));
        File templateFile = FileUtil.touch("classpath:templates/temp.xlsx");
        FileOutputStream outputStream = new FileOutputStream(templateFile);
        workbook.write(outputStream);
        FileInputStream inputStream = new FileInputStream(templateFile);
        ExcelToPdf.excel2pdf(inputStream, response.getOutputStream());

    }

只展示了实现的方法
最后是EXCEL转的PDF格式,打印的是PDF,这里还需要一个去水印的方法。
就是上面util下面的ExcelToPdf,代码粘在下面了

import com.aspose.cells.License;
import com.aspose.cells.SaveFormat;
import com.aspose.cells.Workbook;
import lombok.extern.slf4j.Slf4j;

import java.io.InputStream;
import java.io.OutputStream;

/**
 * @author: XYS
 * @date: 2019/8/17 16:16
 */
@Slf4j
public class ExcelToPdf {
    private static void getLicense() {
        try {
//            File templateFile = FileUtil.file("classpath:templates/license.xml");
//            FileInputStream inputStream = new FileInputStream(templateFile);
//            ClassPathResource classPathResource = new ClassPathResource("classpath:templates/license.xml");
            InputStream is = ExcelToPdf.class.getClassLoader().getResourceAsStream("templates/license.xml"); //  license.xml应放在..\WebRoot\WEB-INF\classes路径下
            License aposeLic = new License();
            aposeLic.setLicense(is);
        } catch (Exception e) {
            log.error("获取license 失败 -> {}", e.getLocalizedMessage());
        }
    }

    public static void excel2pdf(InputStream inputStream, OutputStream outputStream) {
        getLicense();
        try {
            Workbook wb = new Workbook(inputStream);// 原始excel路径
            wb.save(outputStream, SaveFormat.PDF);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
最后的效果

打印收款单据(easypoi)Vue+springBoot+Mybatisplus_第4张图片

你可能感兴趣的:(打印,打印,easypoi,vue)