当前位置: 首页 > news >正文

深圳注册公司在什么网站上门做睫毛哪个网站

深圳注册公司在什么网站,上门做睫毛哪个网站,十大免费行情软件视频,做网站要注意哪一点java导出pdf,前端下载 1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接 使用注意点 因为原来制作的pdf表单内容过于复杂,下面代码只包含前两行的操作。 本次操作需要前端向后端发起请求,后端返回数据给前端…

java导出pdf,前端下载

    • 1、制作pdf模板
    • 2、获取pdf导出中文需要的文件
    • 3、实现
    • 4、前端发起请求并生成下载链接

使用注意点
因为原来制作的pdf表单内容过于复杂,下面代码只包含前两行的操作。
本次操作需要前端向后端发起请求,后端返回数据给前端用于下载,所以没有在本地进行保存。
第 1 步制作pdf模板需要的pdf编辑软件基本上都需要钱,可以去买一个
第 2 步获取的pdf导出的中文需要的文件,如果pdf输出的内容有中文就需要去弄一下这个文件,在代码中用于读取设置中文字体

包含内容
1、导出pdf
2、设置斜体水印

1、制作pdf模板

先将需要的pdf模板通过word制作出来,然后导出为pdf
先准备一个pdf
使用Adobe Acrobat DC 打开并制作模板(其他pdf编辑软件也可以)
在这里插入图片描述
选择打开前面导出的pdf模板
在这里插入图片描述
点击准备表单
在这里插入图片描述
点击之后,可以针对没一个位置进行编辑,选中双击就可以进行编辑了,要注意,每个位置的名字都需要是唯一的
在这里插入图片描述
全部赋值后保存即可

2、获取pdf导出中文需要的文件

获取中文字体需要的文件
在这里插入图片描述
在电脑这个路径下选择下载一个就行
在这里插入图片描述

3、实现

pom依赖

<dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.3</version><type>pom</type>
</dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.24</version>
</dependency>

controller接口

    @GetMapping("/exportPDF/{applyId}")public ResponseEntity<byte[]> exportPDF(@PathVariable("applyId") String applyId, HttpServletResponse response) throws IOException,ParseException,Exception {byte[] res = applyService.exportPDF(applyId);HttpHeaders headers = new HttpHeaders();headers.add("Content-Disposition", "attachment; filename=filled_form.pdf");headers.add("Content-Type", "application/pdf");return ResponseEntity.ok().headers(headers).body(res);}

service具体实现

	public static byte[] exportPDF1() throws Exception {String inputTemplateName = "template";try {pdfBytes = null;Map<String, String> map = new HashMap<>();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// map预填数据,用于后面读取输出到pdf文件上map.put("department-1", "研发中心");map.put("submitDate-1", sdf.format(new Date()));map.put("submitPerson-1", "张三");map.put("travelPerson-1", "李四");map.put("receivePerson-1","王五");// 设置中文字体PdfFont chineseFont = PdfFontFactory.createFont("src/main/resources/file/simsun.ttc,0");// 模板路径String templatePath = "src\\main\\resources\\file\\" + inputTemplateName + ".pdf";// 重点,这一个关联了reader 和 writerByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();// 读取文件FileInputStream pdfInputStream = new FileInputStream(new File(templatePath));// 定义 reader 和writerPdfReader reader = new PdfReader(pdfInputStream);PdfWriter writer = new PdfWriter(byteArrayOutputStream,new WriterProperties().setStandardEncryption(null,null,EncryptionConstants.ALLOW_PRINTING, // 允许打印EncryptionConstants.ENCRYPTION_AES_128 // 加密方式));// 根据 reader 和writer 创建 PdfDocumentPdfDocument pdfDocument = new PdfDocument(reader,writer);// 下面是给文件添加水印,不需要的可以直接删掉// 获取 pdf 模板页数int numberOfPages = pdfDocument.getNumberOfPages();// 遍历每一页并添加水印for (int i = 1; i <= numberOfPages; i++) {PdfPage page = pdfDocument.getPage(i);// 获取页面尺寸(在这里我没有用)int pageWidth = (int) Math.floor(page.getPageSize().getWidth());int pageHeight = (int) Math.floor(page.getPageSize().getHeight());// 创建一个 PdfCanvas 对象PdfCanvas canvas = new PdfCanvas(page);// 保存当前坐标系状态canvas.saveState();// 水印内容旋转double angle = Math.toRadians(45);double cos = Math.cos(angle);double sin = Math.sin(angle);canvas.concatMatrix(cos, sin, -sin, cos, 0, 0);// 设置水印的字体和透明度canvas.setFontAndSize(PdfFontFactory.createFont(), 20);canvas.setFillColorRgb(0.75f, 0.75f, 0.75f);  // 灰色canvas.setLineWidth(2);// 正常应该根据获取到的页面尺寸进行 x y 轴的遍历并// 但是我这边没有铺满,就自己设置了遍历的范围for (int x = -90; x < 2000; x += 300) {for (int y = -190; y < 2000; y += 200) {// 绘制水印文字canvas.beginText();canvas.setTextMatrix(x, y);  // 设置水印位置canvas.showText("Watermark Text this is just a test");  // 水印文字内容canvas.endText();}}// 恢复坐标系状态canvas.restoreState();}// form 可以理解为把pdf文件看做一个form表单,以key value键值对保存PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDocument, true);// 遍历上面预填的 map 并将值根据 key 赋值到formfor (Map.Entry<String, String> entry : map.entrySet()) {form.getField(entry.getKey()).setValue(entry.getValue());form.getField(entry.getKey()).setFont(chineseFont).setFontSize(8);}pdfDocument.close();// 返回文件流pdfBytes = byteArrayOutputStream.toByteArray();return pdfBytes;} catch (Exception e) {e.printStackTrace();}finally {return pdfBytes;}}

4、前端发起请求并生成下载链接

	exportPdf(applyId) {exportPDF(applyId).then(res => {// 创建一个 Blob 对象,指定类型为 PDF 文件const blob = new Blob([res.data], { type: 'application/pdf' });// 创建一个 URL 对象,指向 Blob 数据const url = URL.createObjectURL(blob);// 创建一个下载链接const link = document.createElement('a');link.href = url;link.download = 'generated_with_form.pdf'; // 设置下载文件名// 模拟点击下载链接link.click();// 下载完成后释放 URL 对象URL.revokeObjectURL(url);})},
http://www.yayakq.cn/news/449971/

相关文章:

  • 专业做球赛旅游的网站建筑八大员证有哪些
  • 提高网站访问速度网页推广怎么收取费用
  • 公司网站建设需要显示什么电子商务网站建设的目标
  • 优秀网站 要素产品如何做网站地图
  • 微商做百度推广发哪个网站收录高有什么用
  • 建设通网站免费注册怎么优化网站关键词的方法
  • 网站开发超链接点击后变色展示设计作品欣赏
  • 长沙网站seo收费标准宝应网站
  • 电子商务网站建设有什么意义邯郸网络运营中心处理中心在哪
  • 世纪城网站建设做八年级题目的网站
  • 国际最新新闻热点事件百度移动端关键词优化
  • 青浦网站制作su35正邦设计怎么样
  • 电子商务商城网站建设浏览器网站网址大全
  • 斜杠青年seo工作室关键词优化软件哪家好
  • 做网站中山数据线厂家东莞网站建设
  • 用什么可以做网站重庆网站推广外包企业
  • 个人做企业网站网络空间安全论文
  • 佛山网站建设哪家专业wordpress 主机什么系统
  • 工业设计创意网站wordpress投稿上传图片
  • 江苏省宿迁市建设局网站首页建网站的公司大全
  • 沈北新区建设局网站页面设计英文
  • 中国免费企业建站wp wordpress教程
  • 微网站建设高端网站定制wordpress 子主题开发
  • 上海专业网站建设网站网站不显示index.html
  • 个人网站做seo淮南网站建设价格
  • 网站建设教程赚找湖南岚鸿认 可百度游戏排行榜风云榜
  • 艺术培训网站模板网站建设具体运算
  • 如何建立公司网站模块网站规划建设实训
  • 网站上传系统中国最厉害的建筑公司
  • 湛江cms建站什么网站可以做机票行程单