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

连云港专业做网站软件开发岗位要求

连云港专业做网站,软件开发岗位要求,信息技术转移网站建设,网站安全检测官网文章目录 前言源码获取一、需求说明二、 调研pdf处理工具word处理工具 三、技术栈选择四、功能实现实现效果详细功能介绍详细代码实现项目目录WordUtilsMain类实现部分#xff1a;第一部分Main类实现部分#xff1a;第二部分Main类实现部分#xff1a;第三部分 资料获取 前言… 文章目录 前言源码获取一、需求说明二、 调研pdf处理工具word处理工具 三、技术栈选择四、功能实现实现效果详细功能介绍详细代码实现项目目录WordUtilsMain类实现部分第一部分Main类实现部分第二部分Main类实现部分第三部分 资料获取 前言 博主介绍✌目前全网粉丝2Wcsdn博客专家、Java领域优质创作者博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。 博主所有博客文件目录索引博客目录索引(持续更新) 视频平台b站-Coder长路 源码获取 项目源码Gitee、Github 本篇文档的视频系列讲解Java实现自动化pdf打水印工具 开源PDF工具PDFBoxWord、Word转PDF开源工具Documents4j 一、需求说明 背景做默默学代理需要去给每日日日练打上水印对于重复性操作pdf编辑统一通过程序来批量处理。 目标实现一个自定义的pdf水印工具。 第一部分word转pdf 第二部分pdf编辑 页眉咨询专转本默默学课程联系官方报名处QQ3503851091更多资料可加群828303961 页脚江苏专转本公众号专转本智慧树 水印江苏专转本网课报名vxmmxchanglu属性旋转45°不透明度30% 右上角图片专转本咨询群二维码.jpg属性缩小比例30%二、 调研 pdf处理工具 开源项目-pdfbox 官方网站https://pdfbox.apache.org/ x-easypdf国内开发基于pdfbox。 Stirling-PDF一款优秀的开源PDF处理工具Stirling-PDFGithub 引用开源工具org.apache.pdfbox ttf文件 阿里巴巴普惠体https://www.iconfont.cn/fonts/ word处理工具 word相关开源工具如下 Apache POI: Apache POI 是一个 Java 库可以用于处理 Microsoft Office 文档包括 Word 文档。您可以使用 Apache POI 来读取 Word 文档并将其转换为 PDF。需要注意的是Apache POI 主要用于读取和编辑 Word 文档转换为 PDF 需要额外的步骤。 iText: iText 是一个流行的 Java 库用于处理 PDF 文档。它可以用于将 Word 文档转换为 PDF。请注意iText 并不是完全开源的它有一些限制具体取决于您的使用情况。 LibreOffice: LibreOffice 是一个开源办公套件包括一个强大的文档编辑器。您可以使用 LibreOffice 的命令行接口soffice来将 Word 文档转换为 PDF。LibreOffice 在许多平台上都可用并且支持多种文档格式的转换。 Pandoc: Pandoc 是一个通用文档转换工具支持多种输入和输出格式。它可以将 Word 文档转换为 PDF同时还支持许多其他文档格式。Pandoc 使用命令行进行操作。 实际选择Documents4j Documents4j 是一个开源的 Java 库用于在 Java 应用程序中进行 Microsoft Office 文档如 Word、Excel、PowerPoint 等的转换。它利用 Microsoft Office 的本机 API通过启动 Microsoft Office 进程来执行文档转换。Documents4j 提供了一种简单的方式来将 Office 文档转换为其他格式例如将 Word 文档转换为 PDF、将 Excel 表格转换为 CSV 等。Documents4j 的工作原理是通过将 Microsoft Office 作为外部进程启动并与其进行通信来执行文档转换任务。这种方法使得可以利用 Microsoft Office 的强大功能来执行文档转换同时又能够在 Java 环境中方便地进行集成和控制。Documents4j 提供了一个简单的 API使得在 Java 应用程序中执行文档转换变得简单。它支持多线程操作并且具有一定的性能优化使得可以高效地处理大量文档转换任务。相关实际案例 不要在去充VIP啦 Java 实现 PDF、Word 互转公众号 WeDayDayUp 发送 案例 即可gitee地址https://gitee.com/HelloWangXianLin/xiaoxiao-demo 三、技术栈选择 语言选择Java pdf水印、编辑开源工具pdfbox word转pdfDocuments4j 四、功能实现 实现效果 实现功能效果最终得到的是已经打上广告以及水印的pdf文件 代码运行效果 详细功能介绍 实现思路如下 1、给定一个目录检索该目录下所有文件筛选出所有的docx以及PDF文件。 2、将目录下docx文件转为pdf文件并将docx文件统一剪切到tmp目录。 3、对所有的pdf文件来进行最定义【水印广告】处理将所有水印处理过的pdf文件统一输出到pdf目录。【其中文件名包含有如高数最终输出的名字转为 2024.2.15高数日日练及答案】 页眉咨询专转本默默学课程联系官方报名处QQ3503851091更多资料可加群828303961 页脚江苏专转本公众号专转本智慧树 水印江苏专转本网课报名vxmmxchanglu属性旋转45°不透明度30% 右上角图片专转本咨询群二维码.jpg属性缩小比例30%pdf中水印增加的效果主要就是这四个部分 详细代码实现 项目目录 WordUtilsword转pdf工具类 Main任务类 images/水印素材图片 ttfs/ttf字体WordUtils package com.changlu.utils;import com.documents4j.api.DocumentType; import com.documents4j.api.IConverter; import com.documents4j.job.LocalConverter; import java.io.*;public class WordUtils {/*** Word转PDF* param filePath 源docx文件目录及名称 示例C:\Users\93997\Desktop\watermark tools\watermarkTools\src\main\resources\2024-2-8计算机.docx* param outFilePath 输出文件目录及名称 示例C:\Users\93997\Desktop\watermark tools\watermarkTools\src\main\resources\2024-2-8.pdf*/public static void wordToPdf(String filePath, String outFilePath) {//源文件地址File inputWord new File(filePath);//导出文件地址File outputFile new File(outFilePath);InputStream doc null;OutputStream outputStream null;try {doc new FileInputStream(inputWord);outputStream new FileOutputStream(outputFile);IConverter converter LocalConverter.builder().build();//转换docxpdfboolean flag converter.convert(doc).as(DocumentType.DOC).to(outputStream).as(DocumentType.PDF).execute();if (flag) {converter.shutDown();}doc.close();outputStream.close();System.out.println(文件名 outFilePath 转换成功);} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {String filePath C:\\Users\\93997\\Desktop\\watermark tools\\watermarkTools\\src\\main\\resources\\2024-2-8计算机.docx;String outFilePath C:\\Users\\93997\\Desktop\\watermark tools\\watermarkTools\\src\\main\\resources\\2024-2-8.pdf;//word转pdfWordUtils.wordToPdf(filePath, outFilePath);}}Main类实现部分第一部分 功能描述给定一个目录检索该目录下所有文件筛选出所有的docx以及PDF文件。 package com.changlu;import com.changlu.utils.WordUtils; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.font.PDType0Font; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState;import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URLDecoder; import java.nio.file.Files; import java.nio.file.Paths; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/*** Description:* Author: changlu* Date: 11:19 AM*/ public class Main {//处理文件目录private static String directoryPath C:\\Users\\93997\\Desktop\\日日练;public static void main(String[] args) {//任务1给定一个目录检索该目录下所有文件筛选出所有的docx以及PDF文件。File directory new File(directoryPath);//搜集所有的docx文档ListString waitWorkDocs new ArrayList();//搜集所有的pdf名称ListString waitWorkPDFs new ArrayList();//遍历目录下所有的文件for (File file : directory.listFiles()) {//筛选不是目录if (!file.isDirectory()) {if (file.getName().endsWith(.docx)) {//添加docx的文件名waitWorkDocs.add(file.getName());}else if (file.getName().endsWith(.pdf)) {waitWorkPDFs.add(file.getName());}}} } }Main类实现部分第二部分 功能描述将目录下docx文件转为pdf文件并将docx文件统一剪切到tmp目录。 /*** Description:* Author: changlu* Date: 11:19 AM*/ public class Main {//处理文件目录private static String directoryPath C:\\Users\\93997\\Desktop\\日日练;private static String docxDirectoryPath tmp;//docs临时存放目录public static void main(String[] args) {//任务1xxx//任务2将目录下docx文件转为pdf文件并将docx文件统一剪切到tmp目录。System.out.println(开始执行word转pdf任务...);//临时存放docx文件的目录 tmp若是不存在创建String targetTmpDirectory directoryPath File.separator docxDirectoryPath;if (!Files.exists(Paths.get(targetTmpDirectory))) {new File(targetTmpDirectory).mkdirs();}//将所有的docx进行转换word转pdffor (String docxName : waitWorkDocs) {String originPath directoryPath File.separator docxName;String targetPath originPath.replace(.docx, .pdf);//docx转为pdf文件WordUtils.wordToPdf(originPath, targetPath);//将docx剪切到tmp文件String targetTmpPath targetTmpDirectory File.separator docxName;try {Files.move(Paths.get(originPath), Paths.get(targetTmpPath));} catch (IOException e) {e.printStackTrace();}//添加pdf名称到pdf集合中String pdfName targetPath.substring(targetPath.lastIndexOf(File.separator) 1);waitWorkPDFs.add(pdfName);}} }Main类实现部分第三部分 /*** Description:* Author: changlu* Date: 11:19 AM*/ public class Main {//处理文件目录private static String directoryPath C:\\Users\\93997\\Desktop\\日日练;private static String docxDirectoryPath tmp;//docs临时存放目录public static void main(String[] args) {//任务1xxx//任务2xxx//任务3对所有的pdf文件来进行最定义【水印广告】处理将所有水印处理过的pdf文件统一输出到pdf目录。System.out.println();System.out.println(开始处理pdf打水印、广告任务....);//临时存放docx文件的目录 tmp若是不存在创建String targetPDFDirectory directoryPath File.separator pdfDirectoryPath;if (!Files.exists(Paths.get(targetPDFDirectory))) {new File(targetPDFDirectory).mkdirs();}//遍历所有的pdf文件来去添加水印及其他任务并输出pdffor (String waitWorkPDFName : waitWorkPDFs) {String originPDFPath directoryPath File.separator waitWorkPDFName;String targetPDFPath targetPDFDirectory File.separator fileNameTransfer(waitWorkPDFName);//执行真正的水印广告任务try {work(originPDFPath, targetPDFPath);} catch (Exception e) {e.printStackTrace();}}}//根据当前文件名称来匹配相应的文件名称public static String fileNameTransfer(String originName) {for (Map.EntryString, String entry : subjectNamesMap.entrySet()) {String name entry.getKey();//若是当前名称中包含有科目名称if (originName.contains(name)) {return entry.getValue();}}return 未知 System.currentTimeMillis() .pdf;}/*** 实际水印处理任务*/public static void work(String originPDFPath, String targetPDFPath) throws Exception{//读取resources目录下input.pdf文件 // InputStream is Main.class.getClassLoader().getResourceAsStream(input.pdf);InputStream is new FileInputStream(originPDFPath);PDDocument pdDocument PDDocument.load(is);//自定义字体 C:\Users\93997\Desktop\watermark tools\watermarkTools\target\classes\ttfs//URLDecoder.decode() 方法来解码 URL 编码的路径将 %20 转换回空格 // PDType0Font font PDType0Font.load(pdDocument, new File(C:\\Users\\93997\\Desktop\\watermark tools\\watermarkTools\\src\\main\\resources\\ttfs\\Alibaba_PuHuiTi_2.0_65_Medium_65_Medium.ttf));String fontFile URLDecoder.decode(Main.class.getClassLoader().getResource(File.separator ttfs File.separator Alibaba_PuHuiTi_2.0_65_Medium_65_Medium.ttf).getFile(), UTF-8);PDType0Font font PDType0Font.load(pdDocument, new File(fontFile));float fontSize 10; // 设置字体大小为12// 设置透明度状态对象PDExtendedGraphicsState graphicsState new PDExtendedGraphicsState();graphicsState.setNonStrokingAlphaConstant(0.2f);graphicsState.setAlphaSourceFlag(true);graphicsState.setStrokingAlphaConstant(0.2f);//设置新的页眉String headerText 咨询专转本默默学课程联系官方报名处QQ3503851091更多资料可加群828303961;String footerText 江苏专转本公众号专转本智慧树;String waterText 江苏专转本网课报名vxmmxchanglu;//遍历原先的pdf文档for (PDPage page : pdDocument.getPages()) {float pageWidth page.getMediaBox().getWidth();float pageHeight page.getMediaBox().getHeight();//计算页眉的居中位置float headerTextWidth font.getStringWidth(headerText) / 1000 * fontSize;float headerCenteredX (pageWidth - headerTextWidth) / 2; // 计算水平居中位置//计算页脚的居中位置float footerTextWidth font.getStringWidth(footerText) / 1000 * fontSize;float footerCenteredX (pageWidth - footerTextWidth) / 2; // 计算水平居中位置// 创建用于页眉的内容流PDPageContentStream headerContentStream new PDPageContentStream(pdDocument, page, PDPageContentStream.AppendMode.APPEND, true, true);headerContentStream.beginText(); // 开始文本操作headerContentStream.setFont(font, fontSize); // 设置字体和字号headerContentStream.newLineAtOffset(headerCenteredX, page.getMediaBox().getHeight() - 30); // 设置文本起始位置headerContentStream.showText(headerText); // 绘制页眉内容headerContentStream.endText(); // 结束文本操作headerContentStream.close(); // 关闭内容流// 添加页脚PDPageContentStream footerContentStream new PDPageContentStream(pdDocument, page, PDPageContentStream.AppendMode.APPEND, true, true);footerContentStream.beginText(); // 开始文本操作footerContentStream.setFont(font, fontSize); // 设置字体和字号footerContentStream.newLineAtOffset(footerCenteredX, 30); // 设置文本起始位置footerContentStream.showText(footerText); // 绘制页脚内容footerContentStream.endText(); // 结束文本操作footerContentStream.close(); // 关闭内容流//添加水印 要求旋转45°不透明度30%float waterTextWidth font.getStringWidth(waterText) / 1000 * 30;float waterCenteredX (pageWidth - waterTextWidth) / 2;float waterCenteredY pageHeight / 2;//创建一个水印内容流PDPageContentStream waterContentStream new PDPageContentStream(pdDocument, page, PDPageContentStream.AppendMode.APPEND, true, true);waterContentStream.beginText();waterContentStream.setFont(font, 30);// 设置不透明度waterContentStream.setNonStrokingColor(0, 0, 0); // black colorwaterContentStream.setStrokingColor(0, 0, 0); // black colorwaterContentStream.setGraphicsStateParameters(graphicsState);//设置透明度//设置旋转文本 45° 对于tx、ty是以左下角为偏移位置中心来进行旋转角度waterContentStream.setTextRotation(Math.toRadians(45), 400, -50);//设置文本waterContentStream.newLineAtOffset(waterCenteredX, waterCenteredY);waterContentStream.showText(waterText);waterContentStream.endText();waterContentStream.close();//添加图片水印//创建一个水印内容流PDPageContentStream imageContentStream new PDPageContentStream(pdDocument, page, PDPageContentStream.AppendMode.APPEND, true, true);// 创建图像对象 // PDImageXObject image PDImageXObject.createFromFile(C:\\Users\\93997\\Desktop\\watermark tools\\watermarkTools\\src\\main\\resources\\images\\ConsultationGroupQRCode.jpg, pdDocument);String pictureFile URLDecoder.decode(Main.class.getClassLoader().getResource(File.separator images File.separator ConsultationGroupQRCode.jpg).getFile(), UTF-8);PDImageXObject image PDImageXObject.createFromFile(pictureFile, pdDocument);// 计算图像的宽度和高度缩小比例为0.3float imageWidth (float) (image.getWidth() * 0.25);float imageHeight (float) (image.getHeight() * 0.25);//具体图片位置float imageX pageWidth - imageWidth - 10;float imageY pageHeight - imageHeight - 10;// 在指定位置绘制图像imageContentStream.drawImage(image, imageX, imageY, imageWidth, imageHeight);imageContentStream.close();}//目标目录 // File outputFile new File(C:\\Users\\93997\\Desktop\\watermark tools\\watermarkTools\\src\\main\\resources\\output.pdf);File outputFile new File(targetPDFPath);// 若是文件存在先进行删除Files.deleteIfExists(Paths.get(outputFile.toURI()));// 保存修改后的文档pdDocument.save(outputFile);System.out.println(转换任务 originPDFPath targetPDFPath 成功);// 关闭文档pdDocument.close(); // 关闭文档} }资料获取 大家点赞、收藏、关注、评论啦~ 精彩专栏推荐订阅在下方专栏 长路-文章目录汇总算法、后端Java、前端、运维技术导航博主所有博客导航索引汇总开源项目Studio-Vue—校园工作室管理系统(含前后台SpringBootVue)博主个人独立项目包含详细部署上线视频已开源学习与生活-专栏可以了解博主的学习历程算法专栏算法收录 更多博客与资料可查看获取联系方式文末获取开发资源及更多资源博客获取 整理者长路 时间2024.2.16
http://www.zqtcl.cn/news/45971/

相关文章:

  • 长春网站建设有什么wordpress模板 户外钓鱼类网站
  • 天津注册公司多少钱长春网站优化方案
  • 网站开发程序是什么wordpress内网外网访问不了
  • 济南制作网站企业上海建设摩托车官网
  • 如何在中国建设银行网站转账网站名称可以更换吗
  • 带登录网站模板网站突然掉排名了
  • 网站开发平台工具仙桃网
  • 网站导航的分类有哪些防控措施有这些优化
  • 西安公司网站如何建设企业网站建设和维护
  • 黄山网站建设国内新闻摘抄
  • 免费做网站的app微信公众号端网站开发
  • 晋江网友交流区网站石景山广州网站建设
  • 长沙高校网站制作公司上上上海网站设计
  • 霍邱网站设计百度快照首页
  • 南京网站制作百家号上海搬家公司价目表
  • html制作企业宣传网站如何建微网站
  • 国外效果超炫网站广告位网站模板
  • 订阅号怎么做网站查企业信息查询平台官网免费
  • 提供企业网站建设方案网站建设赚取流量费
  • 触摸屏互动网站建设案例高端网站建设济南兴田德润简介电话
  • 邵武网站建设大气学校网站模板
  • 影响网站速度的代码北京市建设工程信息网招标
  • 一个人网站运营怎么做wordpress oss官方
  • 响应式网站建设费用html网页开发
  • 怎么做网站策划找设计师的网站
  • 建设企业网站都需要啥网站建设与管理个人职业生涯规划书
  • 网站开发的流行架构wordpress文件下载页面
  • 上海哪里做网站比较好硬件开发语言
  • 如何做网站商铺网站建设与软件开发哪个好赚钱
  • 自适应网站模板建站网站建设技术解决方案