前端实现导出 PDF 产品报告,存在几个问题: 1. 是图片版的 PDF; 2. PDF 太大,会卡; 3. 可能会把文字裁剪分页; 4. 无法满足平台提供 Api 接口服务。核心就是问题3和问题4,于是,考虑后端服务实现导出 PDF 产品报告的方案。Java 实现 HTML 转 PDF 技术选型 推荐使用 wkhtmltopdf, Itext,但 wkhtmltopdf 开源免费,Itext 需要考虑版权参考:https://blog.csdn.net/weixin_43981813/article/details/128135730 参考:https://www.cnblogs.com/IT-study/p/13706690.html 技术实现方案技术采用模板引擎 + PDF 插件实现。开发好页面模板,Thymeleaf 模板引擎渲染静态 HTML 文件,wkhtmltopdf 将静态的 HTML 生成 PDF 文件。整体方案流程如下: 后台使用 Thymeleaf 模板生成 Html 报告页面PDF 接口根据 ID 查询报告数据调用 wkhtmltopdf 工具 将 Html 转为 PDF 文件关于 wkhtmltopdf参数文档: https://wkhtmltopdf.org/usage/wkhtmltopdf.txtwkhtmltopdf 安装Yum 安装(可能是老版本存在bug,不推荐)yum -y install wkhtmltopdfrpm 包安装下载最新按照包,如wget https://objects.githubusercontent.com/github-production-relea... 先安装依赖包yum install -y fontconfig libX11 libXext libXrender libjpeg libpng xorg-x11-fonts-75dpi xorg-x11-fonts-Type1wkhtmltox 安装rpm -ivh wkhtmltox-0.12.6-1.centos8.x86_64.rpm若需要路径执行,可配置cp /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf内网安装先下载依赖包到指定目录,例如下载 openssl 依赖包到指定目录yum install --downloadonly --downloaddir=/usr/soft/wktooltopdf/ openssl之后,拷贝依赖包到内网环境,执行命令rpm -ivh --force --nodeps .rpmrpm -ivh --force --nodeps .rpm常见问题缺少依赖包手动安装依赖包FAQ-linux 安装 wkhtmltopdf 中文乱码或者空白解决方法参考:https://www.cnblogs.com/jluo/p/17403785.html 安装中文字体,或复制已有字体打开windows c:\Windows\fonts\simsun.ttc 拷贝到linux服务器/usr/share/fonts/目录下,再次生成pdf中文显示正常出现错误: wkhtmltopdf:cannot connect to X server参考:https://www.jianshu.com/p/2cfc02961528 需再安装xvfbyum install xorg-x11-server-Xvfb在 /usr/bin/ 目录下生成脚本 wkhtmltopdf.sh 并写入命令sudo vim /usr/bin/wkhtmltopdf.sh 命令: xvfb-run -a --server-args="-screen 0, 1024x768x24" /usr/bin/wkhtmltopdf -q $*更改文件权限并建立连接chmod a+x /usr/bin/wkhtmltopdf.sh ln -s /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf中文字体安装若出现中文乱码,则可能是缺少字体阿里巴巴普惠体2.0,免费无版权,好用下载地址: https://done.alibabadesign.com/puhuiti2.0 介绍说明: https://fonts.adobe.com/fonts/alibaba-puhuiti 设置字体集font-family: alibaba-puhuiti, sans-serif; font-style: normal; font-weight: 300;开发代码及配置静态资源目录位于 *-model 工程下的资源文件,包括以下目录templates/ - 模板文件 static/ - 静态资源文件若前端有修改调整,需将更新的文件复制到 *-model 工程下对应目录,静态资源复制方案1:maven 插件配置, 用于复制公共的资源pom.xml 增加插件配置
maven-resources-plugin
copy-resources
package
copy-resources
../../*-model/src/main/resources
templates/**
static/**
src/main/resources
true
静态资源复制方案2:自定义的打包配置,增加资源复制推荐使用此方法,直接复制资源并打包到目标 zip 包路径:/src/main/assemble/package.xml,增加配置
../../*-model/src/main/resources
\
templates/**
static/**
Java 工具类由于模板引擎对 JS 的支持有限,固增加 Java 工具类,用于模板中处理数据(模板引擎是在服务端执行,可执行 Java 代码)
参考 HtmlThymeleafHelper 配置, 注意 ModelAndView 中返回工具列后端开发 pom.xml 依赖
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-web
开发模板
title
Hello Thymeleaf张三(离线数据)
后端接口处理 ModelAndView// 接口返回 ModelAndView, 指定模板, 设置数据 @GetMapping("/template/render") public ModelAndView templateReportDetail(HttpServletRequest request, @RequestParam String reportId) {
this.initJavaEnv(request);
return this.renderModelAndView("TemplateReportDetail", reportId);
}
// 通过 Session 设置 Java 对象,用于模板中执行 Java 方法 private void initJavaEnv(HttpServletRequest request) {
HtmlThymeleafHelper helper = Singleton.get(HtmlThymeleafHelper.class);
request.getSession().setAttribute("helper", helper);
}
// 创建一个模型视图对象 ModelAndView mav = new ModelAndView(); // 获取到查询的数据 Object data = ret.getRetObject(); // 将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型 mav.addObject("sourceData", data); // 放入模板路径 mav.setViewName("template"); // 返回ModelAndView对象mav return mav;SpringBoot yml 配置spring: mvc:
# 添加static文件夹下其他文件夹可访问
static-path-pattern: /project/static/**
# 自定义配置项,指定模板路径
base-template-path: /project/template
thymeleaf:
cache: true
mode: HTML5
suffix: .html
prefix: classpath:/templates/
encoding: UTF-8
servlet:
content-type: text/html关于模板引擎 Thymeleaf什么是Thymeleaf?Thymeleaf 官网是这么解释的:Thymeleaf is a modern server-side Java template engine for both web and standalone environments.译过来就是:Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎什么是模板引擎?模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的html文档。从字面上理解模板引擎,最重要的就是模板二字,这个意思就是做好一个模板后套入对应位置的数据,最终以html的格式展示出来,这就是模板引擎的作用。不仅如此,在Java中模板引擎还有很多,模板引擎是动态网页发展进步的产物,在最初并且流传度最广的jsp它就是一个模板引擎。jsp是早期官方标准的模板,但是由于jsp的缺点比较多也挺严重的,所以很多人弃用jsp选用第三方的模板引擎,市面上开源的第三方的模板引擎也比较多,有Thymeleaf、FreeMaker、Velocity等模板引擎受众较广。听完了模板引擎的介绍,相信你也很容易明白了模板引擎在web领域的主要作用:让网站实现界面和数据分离,这样大大提高了开发效率,让代码重用更加容易。
Model、ModelMap、ModelAndViewModel 一般来说,可以用Model来接收各种类型的数据,如果使用来接收一组数据List,那么这个时候的Model实际上是ModelMapModelMap主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用:用来在一个请求过程中传递处理的数据 ModelMap或者Model通过addAttribute方法向页面传递参数ModelAndView 指模型和视图的集合,既包含 模型 又包含 视图Model和 ModelMap 无需用户自己创建,而且需要return 返回指定的页面路径Model和 ModelMap 无需用户自己创建,而且需要return 返回指定的页面路径
public String listCategory2(Model model) {
// 接收查询的信息
List cs2= categoryService.list();
// 封装了查询的数据
model.addAttribute("test", cs2);
//重要!!需要给出返回model跳转的路径
return "listCategory2";
}
ModelAndView的实例是需要我们手动new的,这也是和ModelMap的一个区别。 而且,ModelAndView 可以自己寻址,只需要return 返回其对象即可。
public ModelAndView listCategory(){ //创建一个模型视图对象
ModelAndView mav = new ModelAndView();
//获取到查询的数据
List cs= categoryService.list();
// //将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型
mav.addObject("cs", cs);
// 放入jsp路径
mav.setViewName("listCategory");
//返回ModelAndView对象mav
return mav;
}参考:https://cloud.tencent.com/developer/article/1698750Thymeleaf 常用标签标签作用示例th:id替换id th:text文本替换
bigsai
th:utext支持html的文本替换content
th:object替换对象
th:value替换值 th:each迭代th:href替换超链接超链接 th:src替换资源七大基础对象:${#ctx} 上下文对象,可用于获取其它内置对象。${#vars}: 上下文变量。${#locale}:上下文区域设置。${#request}: HttpServletRequest对象。${#response}: HttpServletResponse对象。${#session}: HttpSession对象。${#servletContext}: ServletContext对象。常用的工具类:#strings:字符串工具类#lists:List 工具类#arrays:数组工具类#sets:Set 工具类#maps:常用Map方法。#objects:一般对象类,通常用来判断非空#bools:常用的布尔方法。#execInfo:获取页面模板的处理信息。#messages:在变量表达式中获取外部消息的方法,与使用#{...}语法获取的方法相同。#uris:转义部分URL / URI的方法。#conversions:用于执行已配置的转换服务的方法。#dates:时间操作和时间格式化等。#calendars:用于更复杂时间的格式化。#numbers:格式化数字对象的方法。#aggregates:在数组或集合上创建聚合的方法。#ids:处理可能重复的id属性的方法。引入css(必须要在标签中加上rel属性)
引入JavaScript:
超链接:超链接
变量表达式: ${...} 在Thymeleaf中可以通过${…}进行取值,这点和ONGL表达式语法一致
取JavaBean对象: 使用${对象名.对象属性}或者${对象名['对象属性']}来取值 如果该JavaBean如果写了get方法,也可以通过get方法取值例如${对象.get方法名}
取List集合(each): 因为List集合是个有序列表,要遍历List对其中对象取值,而遍历需要用到标签:th:each, 具体使用为
,其中item就相当于遍历每一次的对象名
直接取Map: 很多时候我们不存JavaBean而是将一些值放入Map中,再将Map存在Model中,我们就需要对Map取值, 可以 ${Map名['key']} 取值。也可以 ${Map名.key} 取值,当然也可以 ${map.get('key')}(java语法)取值
参考:https://developer.aliyun.com/article/769977Thymeleaf 控制处理 ? 会判断对象是否为空,如果为空就不会继续取值 SPEL处理 null 值 变量为 null 时,显示默认值 name?:'Unknown' 当 name 变量为 null 时,显示值 Unknown。等价于 name?name:'Unknown'。 对象为 null 时,避免调用方法或属性出错 placeOfBirth?.city 当 placeOfBirth 为 null 时,不再继续调用属性 city。 code?.toUpperCase() 当 code 为 null 时,不再继续调用方法 toUpperCase。 Map 获取的元素为 null 当 map 中没有名为 name 的元素时,这样写会报错 map.name。 安全的写法是这样:map['name']。 如果 map 中的元素为对象时,可以这样写:map['user']?.name。 List 类型数组越界 数组越界时,错误是这样的: Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "slist[2].score" (template: "exam/papers/edit" - line 117, col 92) Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1025E: The collection has '1' elements, index '2' is invalid SPEL 是这样的 slist[2].score,但 slist 不够3个元素(EL1025E: The collection has '1' elements, index '2' is invalid),因此数组越界了。 解决办法:添加数组大小的判断。上面的情况下,用 #lists.size(slist)>=3?slist[2]?.score:0 替换 slist[2].score参考:https://blog.csdn.net/sayyy/article/details/109385456 参考:https://zhuanlan.zhihu.com/p/90642654Thymeleaf 调用 Java 方法1. Java 对象示例存入 Thymeleaf Context 域中,代码层面即为:将实例对象存入Request对象中 MethodService md = new MethodService(); mmap.put("methodService",md); mmap.put("proofsList",proofsList); Thymeleaf 动态添加样式 或者 动态绑定样式 Thymeleaf 数组处理// 数组长度 The greatest continents.
// 数组包含 Europe is a continent: .
// 数组判空 Array of continents is empty .
Thymeleaf 遍历生成复杂的表格
th:remove="tag" 它在这的作用是生成表格后把div删除,但不删除子元素
th:if="*{#lists.isEmpty(institution)}" 判断从后台获取的数据为空,空则不渲染 tr 标签
th:if="*{not #lists.isEmpty(institution)}" 判断从后台获取的数据不为空,不为空则渲染 tr 标签
th:with="appName = ${downPriceEntry.key}, appChangeNum = ${downPriceEntry.value.size()},
appInfo0 = ${downPriceEntry.value.get(0)}, downPriceList = ${downPriceEntry.value}">
th:remove:会移除该标签行,不会移除其子标签
th:each:迭代集合或者数组
th:with:临时变量的声明
colspan 合并单元格 列 rowspan 合并单元格 行常见问题wkhtmltopdf 生成 PDF 的表格行内出现分页符、表头重复、截断等增加表格样式thead {
display: table-row-group;
} tr {
page-break-before: always;
page-break-after: always;
page-break-inside: avoid;
} table {
word-wrap: break-word;
} table td {
word-break: break-all;
}说明:wkhtmltopdf 对表格的支持很差,会导致文件很大,长表格兼容性等问题参考:https://blog.csdn.net/yellowatumn/article/details/87864601
你可能感兴趣的:(PDF技术方案-wkhtmltopdf)
【JAVA】数据脱敏技术(对称加密算法、非对称加密算法、哈希算法、消息认证码(MAC)算法、密钥交换算法)使用方法
来一杯龙舌兰
Java java 开发语言 数据脱敏技术 加密算法 AES
文章目录数据脱敏的定义和目的数据脱敏的技术分类对称加密算法非对称加密算法哈希算法消息认证码(MAC)算法密钥交换算法数据脱敏的技术方案实现字符替换哈希算法(例如:SHA-3算法)消息认证码(MAC)算法(CMAC)消息认证码(MAC)算法(HMAC)对称/非对称加密实现方式(例如:AES加密算法)数据分段数据伪装更多相关内容可查看数据脱敏的定义和目的数据脱敏(DataMasking)是指对数据进行
[Unity优化] Unity3D如何减少安装包大小
hcq666
译官方文档:http://docs.unity3d.com/Manual/ReducingFilesize.htmlPDF文档:http://www.rukawa.cn/Uploads/Attachment/ReducingFilesize/ReducingFilesize.pdf原文地址:http://www.rukawa.cn/index.php?s=/home/article/detail/
100道Python经典练习题.pdf(附答案)
IT娜娜
python 开发语言 后端 程序人生 数据分析
Python新手在谋求一份Python编程工作前,必须熟知Python的基础知识。编程网站DataFlair的技术团队分享了一份最常见Python面试题合集,既有基本的Python面试题,也有高阶版试题来指导你准备面试,试题均附有答案。面试题内容包括编码、数据结构、脚本撰写等话题。1:Python有哪些特点和优点?答:作为一门编程入门语言,Python主要有以下特点和优点:可解释具有动态特性面向对
AI学习笔记:pdf-document-layout-analysis
hillstream3
人工智能 学习 笔记 pdf AI编程 nlp
一直在学AI,但没有连续的时间来尝试。现在终于失业了,有大把连续的时间来动手。之前准备了一台I5-1400F+RTX360012G的电脑,现在终于派上用场了。由于一直在从事无线通信相关的工作,所以,拿到一份很长的AI可能与通信在哪些方面,能够结合的pdf文档。所以,打算从这份文档开始入手。第一个找到的项目的是这个:https://huggingface.co/HURIDOCS/pdf-docume
使用Java对PDF进行电子签章
cesske
java pdf python
项目中用到电子签章(给PDF盖章签名),下边介绍一下怎么实现:准备工作:1、待盖章的pdf2、印章图片3、keystore证书文件把三个文件存在电脑的某个目录下,盖章时会用到。现在来讲一下keystore证书的生成:假定JDK已经安装,并配置系统变量,搜索cmd选择管理员身份打开"C:\ProgramFiles\Java\jdk1.8.0_271\bin\keytool.exe"-genkey-a
日常碎片(5.25)
王二的文字奇遇记
一明天就正式答辩了。晚饭后去学校打印店打印定稿。插上U盘,打开PDF,粗粗扫了一遍确保万无一失后,我朝老板挥手,“您好,这边打印。”不到十平米的打印店挤满了人,再加上机器工作时散发的热气,室内要比室外暖和许多。老板侧着身子挪到我身边,扫了一眼屏幕,询问我份数确认打印后便匆忙离开。临近毕业,打印店也迎来旺季。在等待的过程中,周围一圈的三台机器几乎没歇过,右前方的阿姨正娴熟地帮论文胶装,在她一旁的老板
python绝技运用python成为顶级pdf_python绝技:运用python成为顶级黑客 中文pdf完整版[42MB]...
weixin_39851261
Python是一门常用的编程语言,它不仅上手容易,而且还拥有丰富的支持库。对经常需要针对自己所处的特定场景编写专用工具的黑客、计算机犯罪调查人员、渗透测试师和安全工程师来说,Python的这些特点可以帮助他们又快又好地完成这一任务,以极少的代码量实现所需的功能。Python绝技:运用Python成为顶级黑客结合具体的场景和真实的案例,详述了Python在渗透测试、电子取证、网络流量分析、无线安全、
Flutter PDFView:在Flutter应用中嵌入PDF阅读器
明似水
flutter flutter pdf
FlutterPDFView:在Flutter应用中嵌入PDF阅读器在移动应用开发中,经常会遇到需要在应用内展示PDF文件的需求。Flutter作为一个跨平台的UI工具包,提供了丰富的包来满足开发者的各种需求。flutter_pdfview就是这样一个包,它允许开发者在iOS和Android平台上无缝地嵌入PDF阅读器。简介flutter_pdfview是一个原生的PDF查看器,支持iOS和And
Python基础知识进阶之正则表达式_头歌python正则表达式进阶
前端陈萨龙
程序员 python 学习 面试
最后硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是
Vue预览word、excel、pdf
会说法语的猪
vue 前端 word pdf excel
之前也有写过两篇预览pdf的,但好像还没写过预览word和excel的,但是这次的预览pdf和之前的三个又不一样!使用pdfobject预览pdf,
VUE在线预览word、pdf、excel等文档
菜鸟程序猿、
vue.js pdf 前端
http://www.pfile.com.cn/api/profile/onlinePreview?url=(需要在线查看的文档地址)vue代码window.open('http://www.pfile.com.cn/api/profile/onlinePreview?url='+encodeURIComponent(“需要在线查看的文档地址”));文档参考:http://www.pfile.co
pdf转换jpg(Python版本3.10)
大头安
python python pdf 数学建模
importosimportrefromPILimportImagefrompdf2imageimportconvert_from_path,exceptionsfromconcurrent.futuresimportProcessPoolExecutorimporttempfile#解除Pillow的像素限制Image.MAX_IMAGE_PIXELS=Nonechunk_size=10#每个块
Java pdf转jpg
tanzongbiao
Java java eureka 开发语言
org.apache.pdfboxfontbox2.0.26org.apache.pdfboxpdfbox2.0.26PdfToJpgUtil.jpgpackagecom.qyj.utils;importorg.apache.pdfbox.pdmodel.PDDocument;importorg.apache.pdfbox.pdmodel.PDPageTree;importorg.apache.p
【专题】2024跨境出海供应链洞察-更先进供应链报告合集PDF分享(附原数据表)
拓端研究室
大数据
原文链接:https://tecdat.cn/?p=37665当前,全球化商业浪潮促使跨境电商行业飞速发展,产业带与跨境电商接轨、平台半托管模式涌现、社交电商带来红利机会以及海外仓不断扩张,这使得产业带外贸工厂、内贸工厂、传统进出口企业和品牌企业等纷纷加速布局跨境电商,赛道的繁荣也加剧了供给侧的竞争。阅读原文,获取专题报告合集全文,解锁文末408份跨境、出海、供应链相关行业研究报告。在海外消费需求
java pdf转jpg
gonepoo
工具类 java pdf pdf转jpg jpg 代码
packagecom.xxx;importorg.apache.pdfbox.pdmodel.PDDocument;importorg.apache.pdfbox.pdmodel.PDPageTree;importorg.apache.pdfbox.rendering.PDFRenderer;importjavax.imageio.ImageIO;importjava.awt.image.Buff
【Python】PyPandoc:批量文件格式转换
T0uken
# Python全栈开发 python 开发语言
Pandoc是一个强大的文档转换工具,它可以将各种标记语言(如Markdown、HTML、LaTeX)转换为不同的格式(如PDF、DOCX、EPUB等)。Pandoc支持多种输入和输出格式,并允许用户添加自定义样式、模板和过滤器。Pandoc的主要功能格式转换:将不同的标记语言转换为多种输出格式。最常见的格式包括Markdown、HTML、LaTeX、PDF、DOCX、EPUB等。样式和模板支持:
PPT转PDF文档原来这么简单!
追思人别後
制作一个精美的ppt文档确实是一件较为费时费力的事儿,有时候我们还需要将ppt文件转换成其他格式文件,如果没有好的方法那真的是很耗时间。但是!今天小编分享给大家的方法只要五分钟就可以完成转换了!希望大家走过路过不要错过!首先说说今天要用到工具,我使用的是转转大师pdf转换器,这是一款pc软件,仅可在电脑里使用,也不是免费的。(大家有更好的也可以分享)下面是使用方法:一、可以选择在线网页版及下载客户
R-Drop pytorch实现
warpin
深度学习 深度学习 pytorch
Pytorch实现了R-Drop,可以用于训练分类模型。#-*-coding:utf-8-*-"""Description:AnimplementationofR-Drop(https://arxiv.org/pdf/2106.14448.pdf).Authors:lihpCreateDate:2021/8/24"""fromtorchimportnnfromtorch.nnimportfunct
使用Python实现多个PDF文件的合并
飘逸高铁侠
工作随笔 python pdf 开发语言
使用Python可以很方便地实现多个PDF文件的合并。我们可以使用PyPDF2库来完成这个任务。以下是一个实现PDF合并的Python脚本:importosfromPyPDF2importPdfMergerdefmerge_pdfs(input_dir,output_filename):#创建一个PdfMerger对象merger=PdfMerger()#获取输入目录中的所有PDF文件pdf_fi
大模型书籍推荐:从头开始构建一个大型语言模型(含PDF免费)《Build a Large Language Model (From Scratch)》
AI女王
语言模型 pdf 人工智能 AI大模型 大模型 大语言模型 书籍
通过从头开始构建一个大型语言模型,了解如何创建、训练和调整大型语言模型(LLMs)!一、构建大型语言模型(从头开始)在《构建大型语言模型(从头开始)》中,你将了解如何LLMs从内到外工作。在这本富有洞察力的书中,畅销书作家塞巴斯蒂安·拉施卡(SebastianRaschka)将指导你逐步创建自己的LLM,用清晰的文字、图表和示例解释每个阶段。你将从最初的设计和创建到通用语料库的预训练,一直到特定任
一些机器学习不错的书籍
jimmyleeee
机器学习 人工智能
最近,在学习一些机器学习的相关知识,在Github上居然找到了一个可以下载一些不错的介绍机器学习和大数据挖掘和分析的书籍。具体的书籍的信息可以参考一下链接:Books/DataSciencefromScratch.pdfatmaster·varunkashyapks/Books·GitHub
论文翻译:arxiv-2022 Ignore Previous Prompt: Attack Techniques For Language Models
CSPhD-winston-杨帆
论文翻译 LLMs-安全 prompt 语言模型 人工智能
IgnorePreviousPrompt:AttackTechniquesForLanguageModelshttps://arxiv.org/pdf/2211.09527忽略之前的提示:针对语言模型的攻击技术文章目录忽略之前的提示:针对语言模型的攻击技术摘要1引言摘要基于Transformer的大型语言模型(LLMs)为大规模面向客户的应用程序中的自然语言任务提供了强大的基础。然而,探索恶意用户
10个Python办公自动化案例
Want595
python 开发语言
文章目录系列目录10个Python办公自动化案例1.Excel数据读取与写入2.自动生成PDF文件3.自动发送邮件4.自动化文件重命名5.批量下载网页内容6.自动化数据可视化7.自动化文档批量处理8.批量文件压缩9.日程提醒自动化10.数据定时备份系列目录序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同
Python知识点:使用Python进行PDF文档处理
杰哥在此
Python系列 python pdf 服务器 编程 面试
使用Python进行PDF文档处理可以通过多种库来实现,包括PyPDF2、pdfplumber、reportlab、pdfminer等。这些库可以处理不同的PDF任务,例如提取文本、拆分合并PDF、修改PDF、生成PDF等。以下是几种常见操作及对应的库和代码示例。1.安装常用库首先,安装常用的PDF处理库:pipinstallPyPDF2pdfplumberreportlab2.提取PDF文本Py
javaspringboot教程,5214页PDF的进阶架构师学习笔记
2401_84415534
程序员 pdf 学习 笔记
一、电面:自我介绍项目情况:对你来说影响最大的一个项目(该面试中有关项目问题都针对该项目展开)?为什么会想做这个项目?这个项目的ideal是谁提出来的?项目中如何实现的大数据的传输和存储项目中哪一部分最难攻克?如何攻克?基础知识考察:模块化的好处Htttp协议hashmap和concurrenthashmap区别及两者的优缺点对MySQL的了解,和oracle的区别对设计模式的看法和认知有哪些设计
PDF和CDF
薛定谔的猫_大雪
概率论
在概率论和统计学中,PDF和CDF是两种描述随机变量分布的重要函数:ProbabilityDensityFunction(PDF):概率密度函数是用来描述连续随机变量可能取值的概率分布的函数。对于一个连续型随机变量X,其PDFf(x)定义为在某个取值x处的概率密度,即X在该值附近出现的概率密度。PDF的积分可以得到概率,即在某个区间内随机变量出现的概率。CumulativeDensityFunct
python转换并提取pdf文件中的图片
vah101
python pdf 开发语言
#安装fitz包pipinstallpymupdf脚本如下所示:importfitzimportreimportosimporttimeimportsysarguments=sys.argvforarginarguments:print(arg)deffile_name_list(base_dir):fori,j,kinos.walk(base_dir):name=[i.replace('.pdf
如何将dom转化为pdf
Olivia小饼干
javascript html dom
1.先局部打印方法一:通过id选择器来替换内容打印2.这样打印转化成PDF是调用浏览器默认的功能存在的问题就是echarts生成的canvas显示不出来这样就要到以下方法:3.htmljs打印图片不显示canvas将canvas转化成base64用img标签显示出来4.浏览器默认的打印可以转化成PDF,选中就行了
a标签无法下载.txt.png.jpg.pdf等文件解决方案
冬懂懂动
pdf 前端 javascript
对于浏览器无法识别的文件,可以通过a标签+download属性达到点击下载的效果对于浏览器可以识别的文件,如果txt,图片文件等,点击a标签默认会直接打开文件即使配置download属性也无效对于直接打开文件的情况,这里附上我自己的解决办法,可以实现让浏览器不打开文件,直接下载constdownloadFile=(url='',fileName='下载的文件')=>{//使用xhr下载文件cons
通过前端实现导出生成pdf文件并下载
银河小铁皮
vue 原生JS 前端 javascript vue.js
通过前端实现导出生成pdf文件并下载使用jspdf.js+html2canvas插件,实现前端生成pdf并下载的功能步骤如下1、先通过npm安装插件npminstalljspdf.jsnpminstallhtml2canvas2、单独在utils文件夹下,新建文件,存放处理代码/*eslint-disable*///不使用JQuery版的importhtml2canvasfrom'html2can
js动画html标签(持续更新中)
843977358
html js 动画 media opacity
1.jQuery 效果 - animate() 方法 改变 "div" 元素的高度: $(".btn1").click(function(){ $("#box").animate({height:"300px
springMVC学习笔记
caoyong
springMVC
1、搭建开发环境
a>、添加jar文件,在ioc所需jar包的基础上添加spring-web.jar,spring-webmvc.jar
b>、在web.xml中配置前端控制器
<servlet>
&nbs
POI中设置Excel单元格格式
107x
poi style 列宽 合并单元格 自动换行
引用:http://apps.hi.baidu.com/share/detail/17249059
POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:
先获取工作薄对象:
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFCellStyle setBorder = wb.
jquery 获取A href 触发js方法的this参数 无效的情况
一炮送你回车库
jquery
html如下:
<td class=\"bord-r-n bord-l-n c-333\">
<a class=\"table-icon edit\" onclick=\"editTrValues(this);\">修改</a>
</td>"
j
md5
3213213333332132
MD5
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MDFive {
public static void main(String[] args) {
String md5Str = "cq
完全卸载干净Oracle11g
sophia天雪
orale数据库 卸载干净 清理注册表
完全卸载干净Oracle11g
A、存在OUI卸载工具的情况下:
第一步:停用所有Oracle相关的已启动的服务;
第二步:找到OUI卸载工具:在“开始”菜单中找到“oracle_OraDb11g_home”文件夹中
&
apache 的access.log 日志文件太大如何解决
darkranger
apache
CustomLog logs/access.log common 此写法导致日志数据一致自增变大。
直接注释上面的语法
#CustomLog logs/access.log common
增加:
CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-d.log 
Hadoop单机模式环境搭建关键步骤
aijuans
分布式
Hadoop环境需要sshd服务一直开启,故,在服务器上需要按照ssh服务,以Ubuntu Linux为例,按照ssh服务如下:
sudo apt-get install ssh
sudo apt-get install rsync
编辑HADOOP_HOME/conf/hadoop-env.sh文件,将JAVA_HOME设置为Java
PL/SQL DEVELOPER 使用的一些技巧
atongyeye
java sql
1 记住密码
这是个有争议的功能,因为记住密码会给带来数据安全的问题。 但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Developer记住密码。 位置:Tools菜单--Preferences--Oracle--Logon HIstory--Store with password
2 特殊Copy
在SQL Window
PHP:在对象上动态添加一个新的方法
bardo
方法 动态添加 闭包
有关在一个对象上动态添加方法,如果你来自Ruby语言或您熟悉这门语言,你已经知道它是什么...... Ruby提供给你一种方式来获得一个instancied对象,并给这个对象添加一个额外的方法。
好!不说Ruby了,让我们来谈谈PHP
PHP未提供一个“标准的方式”做这样的事情,这也是没有核心的一部分...
但无论如何,它并没有说我们不能做这样
ThreadLocal与线程安全
bijian1013
java java多线程 threadLocal
首先来看一下线程安全问题产生的两个前提条件:
1.数据共享,多个线程访问同样的数据。
2.共享数据是可变的,多个线程对访问的共享数据作出了修改。
实例:
定义一个共享数据:
public static int a = 0;
Tomcat 架包冲突解决
征客丶
tomcat Web
环境:
Tomcat 7.0.6
win7 x64
错误表象:【我的冲突的架包是:catalina.jar 与 tomcat-catalina-7.0.61.jar 冲突,不知道其他架包冲突时是不是也报这个错误】
严重: End event threw exception
java.lang.NoSuchMethodException: org.apache.catalina.dep
【Scala三】分析Spark源代码总结的Scala语法一
bit1129
scala
Scala语法 1. classOf运算符
Scala中的classOf[T]是一个class对象,等价于Java的T.class,比如classOf[TextInputFormat]等价于TextInputFormat.class
2. 方法默认值
defaultMinPartitions就是一个默认值,类似C++的方法默认值
java 线程池管理机制
BlueSkator
java线程池 管理机制
编辑
Add
Tools
jdk线程池
一、引言
第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。
关于hql中使用本地sql函数的问题(问-答)
BreakingBad
HQL 存储函数
转自于:http://www.iteye.com/problems/23775
问:
我在开发过程中,使用hql进行查询(mysql5)使用到了mysql自带的函数find_in_set()这个函数作为匹配字符串的来讲效率非常好,但是我直接把它写在hql语句里面(from ForumMemberInfo fm,ForumArea fa where find_in_set(fm.userId,f
读《研磨设计模式》-代码笔记-迭代器模式-Iterator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.Arrays;
import java.util.List;
/**
* Iterator模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象内部表示
*
* 个人觉得,为了不暴露该
常用SQL
chenjunt3
oracle sql C++ c C#
--NC建库
CREATE TABLESPACE NNC_DATA01 DATAFILE 'E:\oracle\product\10.2.0\oradata\orcl\nnc_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;
CREATE TABLESPA
数学是科学技术的语言
comsci
工作 活动 领域模型
从小学到大学都在学习数学,从小学开始了解数字的概念和背诵九九表到大学学习复变函数和离散数学,看起来好像掌握了这些数学知识,但是在工作中却很少真正用到这些知识,为什么?
最近在研究一种开源软件-CARROT2的源代码的时候,又一次感觉到数学在计算机技术中的不可动摇的基础作用,CARROT2是一种用于自动语言分类(聚类)的工具性软件,用JAVA语言编写,它
Linux系统手动安装rzsz 软件包
daizj
linux sz rz
1、下载软件 rzsz-3.34.tar.gz。登录linux,用命令
wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz下载。
2、解压 tar zxvf rzsz-3.34.tar.gz
3、安装 cd rzsz-3.34 ; make posix 。注意:这个软件安装与常规的GNU软件不
读源码之:ArrayBlockingQueue
dieslrae
java
ArrayBlockingQueue是concurrent包提供的一个线程安全的队列,由一个数组来保存队列元素.通过
takeIndex和
putIndex来分别记录出队列和入队列的下标,以保证在出队列时
不进行元素移动.
//在出队列或者入队列的时候对takeIndex或者putIndex进行累加,如果已经到了数组末尾就又从0开始,保证数
C语言学习九枚举的定义和应用
dcj3sjt126com
c
枚举的定义
# include <stdio.h>
enum WeekDay
{
MonDay, TuesDay, WednesDay, ThursDay, FriDay, SaturDay, SunDay
};
int main(void)
{
//int day; //day定义成int类型不合适
enum WeekDay day = Wedne
Vagrant 三种网络配置详解
dcj3sjt126com
vagrant
Forwarded port
Private network
Public network
Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。
端口映射(Forwarded port),顾名思义是指把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际是被转发到虚拟机上指定端口的。Vagrantfile中设定语法为:
c
16.性能优化-完结
frank1234
性能优化
性能调优是一个宏大的工程,需要从宏观架构(比如拆分,冗余,读写分离,集群,缓存等), 软件设计(比如多线程并行化,选择合适的数据结构), 数据库设计层面(合理的表设计,汇总表,索引,分区,拆分,冗余等) 以及微观(软件的配置,SQL语句的编写,操作系统配置等)根据软件的应用场景做综合的考虑和权衡,并经验实际测试验证才能达到最优。
性能水很深, 笔者经验尚浅 ,赶脚也就了解了点皮毛而已,我觉得
Word Search
hcx2013
search
Given a 2D board and a word, find if the word exists in the grid.
The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or ve
Spring4新特性——Web开发的增强
jinnianshilongnian
spring spring mvc spring4
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
CentOS安装配置tengine并设置开机启动
liuxingguome
centos
yum install gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
Ubuntu上可以这样安装
sudo aptitude install libdmalloc-dev libcurl4-opens
第14章 工具函数(上)
onestopweb
函数
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Xelsius 2008 and SAP BW at a glance
blueoxygen
BO Xelsius
Xelsius提供了丰富多样的数据连接方式,其中为SAP BW专属提供的是BICS。那么Xelsius的各种连接的优缺点比较以及Xelsius是如何直接连接到BEx Query的呢? 以下Wiki文章应该提供了全面的概览。
http://wiki.sdn.sap.com/wiki/display/BOBJ/Xcelsius+2008+and+SAP+NetWeaver+BW+Co
oracle表空间相关
tongsh6
oracle
在oracle数据库中,一个用户对应一个表空间,当表空间不足时,可以采用增加表空间的数据文件容量,也可以增加数据文件,方法有如下几种:
1.给表空间增加数据文件
ALTER TABLESPACE "表空间的名字" ADD DATAFILE
'表空间的数据文件路径' SIZE 50M;
&nb
.Net framework4.0安装失败
yangjuanjava
.net windows
上午的.net framework 4.0,各种失败,查了好多答案,各种不靠谱,最后终于找到答案了
和Windows Update有关系,给目录名重命名一下再次安装,即安装成功了!
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=17113
方法:
1.运行cmd,输入net stop WuAuServ
2.点击开