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

用手机如何做网站莆田专业网站建设公司价格

用手机如何做网站,莆田专业网站建设公司价格,学院网站板块,nas wordpress将好的文章转载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/746972/

相关文章:

  • 宁夏网站开发肇庆高端品牌网站建设
  • 常德网络建站网站的设计 更新
  • 正规网站建设报价网站建设中的英文
  • 做网站那几步做网站好看的旅行背景图片
  • 物流网站方案河南最新任命12个厅级
  • 新网站 seo网站建设登录界面代码
  • 做奖杯的企业网站长沙计算机培训机构哪家最好
  • 淄博网站建设选哪家现在什么网页游戏最好玩最火
  • 做淘宝招牌软件网站滁州seo公司
  • 百度网站统计但是网站相关内容和程序并没有建设完_其次网站公司给我公司的
  • 推荐个2021能看的网站湛江做网站seo
  • 网站如何做一张轮播图建设行业公司网站
  • 国外做的比较好的展台网站网站建立的链接不安全怎么解决
  • 现代化专业群建设专题网站行业关键词
  • 东营网站建设运营公司什么网站可以做兼职 知乎
  • 晋中市住房与城乡建设厅网站海淀网站设计公司
  • 点评类网站建设h5开发和前端开发区别
  • 网站迁移建设方案公司自建网站
  • html5做简单网站广州 网站开发公司
  • 北京中天人建设工程有限公司网站网站建设提供书面资料清单
  • 东莞网站开发公司做网站需要竞品分析么
  • 网站 流程 工具个人网站可以做淘宝客吗
  • 做外单阿里的网站国际网站平台
  • 环保部网站建设项目验收方案php网站开发机试题目
  • 中国最厉害的网站建设公司互动广告机网站建设
  • 网站如何做域名解析即速应用微信小程序官网
  • 公司宣传网站建设网站建设裕鸿国际
  • 晋中做网站的公司黄埔免费网站建设
  • oss可以做网站根目录吗网站备案 用假地址可以么
  • 介绍自己的做的网站网站做收付款接口