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

网站服务器大小设计网站做的工作步骤是

网站服务器大小,设计网站做的工作步骤是,10个免费网站,网站建设198本项目所有源码和依赖资源都在文章顶部链接,有需要可以下载使用 1. 需求描述 从指定位置读取一个 word 模板获取业务数据并写入该 word 模板,生成新的 word 文档将新生成的 word 文档转换为 pdf 格式对 pdf 文档添加水印 2. 效果预览 word 模板 带水印的…

本项目所有源码和依赖资源都在文章顶部链接,有需要可以下载使用

1. 需求描述


  1. 从指定位置读取一个 word 模板
  2. 获取业务数据并写入该 word 模板,生成新的 word 文档
  3. 将新生成的 word 文档转换为 pdf 格式
  4. 对 pdf 文档添加水印

2. 效果预览


  1. word 模板
    在这里插入图片描述
  2. 带水印的 pdf 文档
    在这里插入图片描述

3. 实现思路


  • word 模板数据写入:使用 poi-tl 库实现
  • word 转 pdf 格式:aspose-words 库实现
  • pdf 增加水印:aspose-pdf 库实现

4. 实现过程


4.1 依赖库准备

poi-tl 可以使用 maven 直接从中央仓库下载,但是 aspose 无法下载,需要从网上下载 jar 包并导入本地仓库

  • poi-tl

        <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>
    
  • aspose-word
    将 jar 包导入本地仓库

        mvn install:install-file \-DgroupId="com.aspose" \-DartifactId="aspose-words" \-Dversion="15.8.0" \-Dpackaging="jar" \-Dfile="aspose-words-15.8.0-jdk16.jar"
    

    项目中添加依赖

        <dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>15.8.0</version></dependency>
    
  • aspose-pdf
    将 jar 包导入本地仓库

        mvn install:install-file \-DgroupId="com.aspose" \-DartifactId="aspose-pdf" \-Dversion="17.8" \-Dpackaging="jar" \-Dfile="aspose.pdf-17.8.jar"
    

    项目中添加依赖

        <dependency><groupId>com.aspose</groupId><artifactId>aspose-pdf</artifactId><version>17.8</version></dependency>
    
  • license.xml
    由于 aspose 库分为免费版和收费版,免费版导出的文档带有试用水印,所以需要添加 license.xml,版权关系不在文章中写出,有需要的可以下载文章顶部链接的完整源码包。

4.2 核心实现方法
@SpringBootApplication
public class Word2PDFApplication {public static void main(String[] args) {SpringApplication.run(Word2PDFApplication.class, args);// word 模板String wordTemplatePath = "src/main/resources/templates/简历模板.docx";// 写入数据后的 wordString wordOutputPath = "src/main/resources/templates/简历模板-output.docx";// word 转换为 pdfString pdfOutputPath = "src/main/resources/templates/简历模板.pdf";// pdf 增加水印String pdfWithMarkerOutputPath = "src/main/resources/templates/简历模板-marker.pdf";// step 1: 封装模板数据Map<String, Object> dataMap = getPersonDataMap();// step 2: 将数据写入 word 模板writeDataToWord(dataMap, wordTemplatePath, wordOutputPath);// step 3: 将 word 转换为 pdfconvertWordToPdf(wordOutputPath, pdfOutputPath);// step 4: 将 pdf 增加水印addMarkerToPdf(pdfOutputPath, pdfWithMarkerOutputPath);}// 封装业务数据,用于填入模板对应占位符中private static Map<String, Object> getPersonDataMap() {Map<String, Object> personDataMap = new HashMap<>();personDataMap.put("name", "张三");personDataMap.put("sex", "男");personDataMap.put("birthDate", "1998-12-02");personDataMap.put("id", "420202199812020011");personDataMap.put("phone", "18819297766");personDataMap.put("skills", "java Spring MySQL ...");return personDataMap;}// 将业务数据写入 word 模板,并生成新的 word 文件private static void writeDataToWord(Map<String, Object> dataMap, String wordTemplatePath, String wordOutputPath) {XWPFTemplate render = XWPFTemplate.compile(wordTemplatePath).render(dataMap);File dest = new File(wordOutputPath);if (!dest.getParentFile().exists()) {dest.getParentFile().mkdirs();}try {render.writeToFile(wordOutputPath);} catch (IOException e) {throw new RuntimeException(e);}}// 将新生成的带有业务数据的 word 文档转换为 pdf 格式private static void convertWordToPdf(String wordOutputPath, String pdfOutputPath) {// 验证 License 若不验证则转化出的 pdf 文档带有水印if (!getAsposeWordLicense()) {return;}FileOutputStream os = null;try {long old = System.currentTimeMillis();File file = new File(pdfOutputPath);os = new FileOutputStream(file);Document doc = new Document(wordOutputPath);doc.save(os, SaveFormat.PDF);long now = System.currentTimeMillis();System.out.println("pdf转换成功,共耗时:" + ((now - old) / 1000.0) + "秒");} catch (Exception e) {e.printStackTrace();} finally {if (os != null) {try {os.flush();os.close();} catch (IOException e) {e.printStackTrace();}}}}// 对转换后的 pdf 文档添加水印效果private static void addMarkerToPdf(String pdfOutputPath, String pdfWithMarkerOutputPath) {// 验证 License 若不验证则增加水印后的 pdf 文档带有试用水印boolean asposePdfLicense = getAsposePdfLicense();if (!asposePdfLicense) {return;}com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(pdfOutputPath);TextStamp textStamp = new TextStamp("水印文本");textStamp.getTextState().setFontSize(14.0F);textStamp.getTextState().setFontStyle(FontStyles.Bold);textStamp.setRotateAngle(45);textStamp.setOpacity(0.2);// 设置水印间距float xOffset = 100;float yOffset = 100;// 添加水印到每一页for (Page page : pdfDocument.getPages()) {float xPosition = 0;float yPosition = 0;// 在页面上添加水印直到页面被覆盖while (yPosition < page.getRect().getHeight()) {textStamp.setXIndent(xPosition);textStamp.setYIndent(yPosition);page.addStamp(textStamp);xPosition += xOffset;// 如果水印超过页面宽度,移到下一行if (xPosition + textStamp.getWidth() > page.getRect().getWidth()) {xPosition = 0;yPosition += yOffset;}}}// 保存修改后的文档pdfDocument.save(pdfWithMarkerOutputPath);}// 验证 license,否则有试用水印private static boolean getAsposeWordLicense() {boolean result = false;InputStream is = null;try {ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();org.springframework.core.io.Resource[] resources = resolver.getResources("classpath:license.xml");is = resources[0].getInputStream();License asposeLic = new License();asposeLic.setLicense(is);result = true;} catch (Exception e) {e.printStackTrace();} finally {if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}}return result;}// 验证 license,否则有试用水印private static boolean getAsposePdfLicense() {boolean result = false;InputStream is = null;try {ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();org.springframework.core.io.Resource[] resources = resolver.getResources("classpath:license.xml");is = resources[0].getInputStream();com.aspose.pdf.License asposeLic = new com.aspose.pdf.License();asposeLic.setLicense(is);result = true;} catch (Exception e) {e.printStackTrace();} finally {if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}}return result;}
}
http://www.yayakq.cn/news/756727/

相关文章:

  • 网站制作软件小学免费做网站空间
  • dw做的网站如何使用建设网站有几种渠道
  • 律师手机网站模板买网站空间
  • 目前比较流行的公司网站建站技术网站做贷款许可证
  • dede 如何做视频网站推广简短吸引人的话
  • 用什么网站可以做电子书深圳工程建设有限公司
  • 园州网站建设网站建设实训结论
  • 网页制作与网站建设实战教程视频教程合川网站优化
  • 建网站需要多少钱和什么条件才能建制作网站要花多少钱如何
  • 购买域名搭建网站4399小游戏网站入口
  • 哈尔滨多语言网站建设wordpress 自定义分页
  • 泰州市高港区建设局网站百度推广联系人
  • 网站放到iis如何做指向外贸软件app
  • 淘宝客网站备案教程广州学建网站
  • 个人政务公开网站建设工作总结网站哪家公司做的最好
  • 网站开发有哪几个阶段网站建设基本流程是什么
  • 上海网站公司设计php网站中水印怎么做
  • 如何把网站点击连接到百度商桥黑帽seo论坛
  • 杭州网站建设faxide建立电子商务网站目的
  • 个人网站设计方案建站推广外包
  • 安顺公司做网站建设网站申请
  • 大连seo整站优化广告策划ppt案例
  • 郑州制作网站ihanshi做热点图现在用什么网站
  • cod单页建站工具汽车网站模板下载
  • 网站建设原则包括哪些方面高端网站制作技术
  • 左侧 导航 网站网站建设与管理心得体会
  • 织梦系统做的商城网站网站业务建设是什么意思
  • 安阳网站建设公司出租车公司h5页面设计尺寸
  • 唐山企业网站建设公司wordpress主机中文网
  • 网站模板下载后怎么用口碑好的番禺网站建设