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

公司网站设计怎么做我想找一个电销外包团队

公司网站设计怎么做,我想找一个电销外包团队,如何进行网站管理,软件定制开发如何做前言: 本文的目的是将传入的富文本内容(html标签,图片)并且分页导出为pdf。 所用的核心依赖为iText7。 因为itextpdf-core的核心包在maven中央仓库中,阿里云华为云等拉不下来,中央仓库在外网,并且此包在中央仓库中未…

前言:

本文的目的是将传入的富文本内容(html标签,图片)并且分页导出为pdf。

所用的核心依赖为iText7。

因为itextpdf-core的核心包在maven中央仓库中,阿里云华为云等拉不下来,中央仓库在外网,并且此包在中央仓库中未提供可下载的jar包文件,所以通过iText github上提供的core包的组成jar,实现core包所需方法的调用。

一、jar包导入

在子项目的resources下新建lib目录,下载文件所提供的压缩包,解压jar包文件到lib下,如图所示

二、maven依赖导入

        <dependency><groupId>com.itextpdf</groupId><artifactId>barcodes</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/barcodes-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>commons</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/commons-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>font-asian</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/font-asian-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>forms</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/forms-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>hyph</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/hyph-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>io</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/io-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>kernel</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/kernel-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>layout</artifactId><version>7.2.3</version> <!-- 如果需要布局功能 --><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/layout-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>pdfa</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/pdfa-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>pdftest</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/pdftest-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>sign</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/sign-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>styled-xml-parser</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/styled-xml-parser-7.2.3.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>svg</artifactId><version>7.2.3</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/svg-7.2.3.jar</systemPath></dependency><!-- https://mvnrepository.com/artifact/com.itextpdf/html2pdf --><dependency><groupId>com.itextpdf</groupId><artifactId>html2pdf</artifactId><version>4.0.3</version></dependency>

三、打包配置

因为从外部引入jar包,在本地测试没有问题,但是打包后发布,引用不了,所以需要配置打包引用外部jar包。所以可以根据以下链接,博主的另外一个文章提供了相关的方法。

java引用第三方jar包,打包全流程_java引入外部jar包-CSDN博客

四、工具类

import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;
import com.itextpdf.io.exceptions.IOException;
import com.itextpdf.layout.font.FontProvider;
import org.springframework.stereotype.Component;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;@Component
public class RichTextExporter {/*** HTML内容转PDF并输出到响应流* @param htmlContent HTML内容* @param response HttpServletResponse* @param request HttpServletRequest(用于获取基础路径)* @param fileName 生成的PDF文件名* @throws IOException 转换过程异常*/public static void convertToPdf(String htmlContent,HttpServletResponse response,HttpServletRequest request,String fileName) throws IOException, java.io.IOException {// 配置响应头configureResponseHeaders(response, fileName, request);try (OutputStream outputStream = response.getOutputStream()) {// 创建转换器配置ConverterProperties converterProperties = createConverterProperties(request);// 执行转换HtmlConverter.convertToPdf(htmlContent, outputStream, converterProperties);}}/*** 配置HTTP响应头*/private static void configureResponseHeaders(HttpServletResponse response,String fileName,HttpServletRequest request) {response.setContentType("application/pdf");String attachment = String.format("attachment; filename=\"%s\"",encodeFileName(fileName, request));response.setHeader("Content-Disposition", attachment);response.setCharacterEncoding(StandardCharsets.UTF_8.name());}/*** 创建转换器配置(处理路径、字体、字符集等)*/private static ConverterProperties createConverterProperties(HttpServletRequest request) {ConverterProperties properties = new ConverterProperties();// 设置基础URI(解析相对路径,如图片/字体地址)properties.setBaseUri(getBaseHttpPath(request));// 配置字体(支持中文、非嵌入字体、符号)FontProvider fontProvider = new DefaultFontProvider(true, true, true);properties.setFontProvider(fontProvider);// 设置字符集properties.setCharset(StandardCharsets.UTF_8.name());return properties;}/*** 获取完整的基础HTTP路径(包含协议、域名、端口、上下文路径)*/private static String getBaseHttpPath(HttpServletRequest request) {int port = request.getServerPort();String portStr = (port == 80 || port == 443) ? "" : ":" + port;return String.format("%s://%s%s%s",request.getScheme(),request.getServerName(),portStr,request.getContextPath());}/*** 处理文件名编码(兼容不同浏览器)*/private static String encodeFileName(String fileName, HttpServletRequest request) {String userAgent = request.getHeader("User-Agent");try {if (userAgent.contains("MSIE") || userAgent.contains("Edge") || userAgent.contains("Chrome")) {return java.net.URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");} else {return new String(fileName.getBytes(StandardCharsets.UTF_8), "ISO-8859-1");}} catch (Exception e) {return fileName;}}}

五、controller

    @PostMapping("/export")@Operation(summary = "导出pdf")@Parameter(name = "htmlContent", description = "富文本内容", required = true)public void exportPdf(@RequestParam("htmlContent") String htmlContent, HttpServletRequest request, HttpServletResponse response) throws IOException {RichTextExporter.convertToPdf(htmlContent, response, request, "pdf导出测试");}

六、yaml配置

因为富文本内容很大,所以如果必须用post请求,并且需要修改上传配置,在yaml文件中加入如下配置即可:

###设置缓冲区大小,方便上传大文件
server:tomcat:max-swallow-size: 15MBmax-http-form-post-size: 16777216

七、测试

八、注意

经测试,富文本内容最好把ol标签给过滤掉,因为会导致富文本导出为pdf出错,并且如果还需要支持其余特殊的标签,请自行扩展工具类。

http://www.dtcms.com/a/551050.html

相关文章:

  • 网站类型自学网络运营要多久
  • 网站设计公司收费标准盐城公司做网站
  • 做爰xo的视频网站试看正规pos个人免费申请
  • 深圳展览设计网站建设河南房产网站建设
  • 自动化科技产品网站建设网站如何宣传
  • 做商品网站攻击wordpress
  • 湖南 网站建设上海网站络公司
  • 电脑网络题搜网站怎么做各种网址大全
  • 简述建设电子商务网站步骤网页开发应用软件
  • 建网站的成本计算江苏做网站价格
  • 治多县网站建设公司手机网站 域名解析
  • 五金弹簧东莞网站建设网站线下推广怎么做
  • 百度小程序可以根据网站的要求做深圳建筑公司排行榜
  • 线性回归——相关数学概念详解
  • 专业企业网站设计服务公司商城网站数据库
  • 微网站如何建设方案saas系统销售好做吗
  • 设计网站物理结构怎么做洛阳做网站找哪家
  • 如何保护网站模板时代创信网站建设
  • 学习网站开发流程大型网站建设机构
  • https证书
  • 学习pytorch的第二日
  • 网站五合一建设湖北联诺建设网站
  • 做网站的编程语言免费crm软件
  • 关键词首页排名优化公司推荐seo排名工具有哪些
  • c 做网站简单吗网站建设艾金手指六六12
  • 【4】深度解析“协议(Protocol)”与“服务(Sevices)
  • 3. vim上手
  • 常德网站建设求职简历做视频怎么去除网站
  • 网站域名301规模以上工业企业名单
  • 手机网站和电脑网站跳转上城区商城网站建设