html格式处理

使用itextpdf的XMLWorkerHelper组件转换过程当中,html格式要求比较多,下面作下格式的简单处理以保证转换成功。css

//div格式转换过程当中,有概率会使内容消失

content = content.replaceAll("

content = content.replaceAll("/div>", "/span>
");

//关闭未封闭式标签br

content = content.replaceAll("
]*>", "
");

//处理样式background-color: transparent; IE模式下存在兼容问题,火狐谷歌正常

content = content.replaceAll("background-color: transparent;", " ");

//使用word拷贝到富文本生成的html内容,存在各作word标签,固然转换过程当中大部分都支持,若是遇到个别的能够作下处理

// content = content.replaceAll("", "");

// content = content.replaceAll("", "");

// content = content.replaceAll("", "");

// content = content.replaceAll("]*?>", "");

// content = content.replaceAll("]*)(?:lang|LANG|size|SIZE|face|FACE|[ovwxpOVWXP]:\\w+)=(?:'[^']*'|\"\"[^\"\"]*\"\"|[^>]+)([^>]*)>", "");

提取文本中的css样式

html中css优化是必不可少的,能够在富文本保存html的时候,对标签内容(表格、段落、字体等)使用css样式优化,目的就是转换的PDF能够更加贴近html页面样式,XMLWorkerHelper转换中能够支持css。html

public static String getCssStr(String content){

String reg = "\\.([a-zA-Z0-9_]*)\\s*(\\{[^\\}]*\\})";

Pattern p = Pattern.compile(reg);

Matcher m = p.matcher(content);

String cssStr="";

while(m.find()){

cssStr += m.group()+" ";

}

System.out.println(cssStr);

return cssStr;

}

字体处理

html内容字体设置,能够处理中文乱码,内容重叠,字体大小,字体颜色等java

import com.itextpdf.text.BaseColor;

import com.itextpdf.text.Font;

import com.itextpdf.tool.xml.XMLWorkerFontProvider;

public class PdfFont extends XMLWorkerFontProvider {

@Override

public Font getFont(String fontname, String encoding, boolean embedded, float size, int style, BaseColor color) {

String font = fontname;

if(font==null){//字体家族

font = "宋体";

}

if(size<=0){//size<0 会使内容重叠在一体

size=10.5f;

}

return super.getFont(fontname, encoding, embedded, size, style, color);

}

}

html转PDF文件

private static void htmlToPdf(String content,String css) throws IOException, DocumentException {

content = htmlTag(content);

ByteArrayInputStream in = new ByteArrayInputStream(content.getBytes());

Document document = new Document();

document.setMargins(30, 30, 30, 30); // 左,右,上,下

ByteArrayInputStream is = null;

if(!"".equals(css)){

is = new ByteArrayInputStream(css.getBytes());

}

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\Administrator\\Desktop\\temp.pdf"));// 建立书写器(Writer)

document.open();

//将html格式写入文档

XMLWorkerHelper.getInstance().parseXHtml(writer, document, in,is,new PdfFont());

document.close();

}

java pdf 富文本_富文本编辑器保存的html内容使用itextpdf转PDF文件(css提取,内容重叠)问题解决...相关推荐

  1. 根据大小分割大文本_场景文本检测—CTPN算法介绍

    SIGAI特约作者:沪东三哥 原创声明:本文为SIGAI 原创文章,仅供个人学习使用,未经允许,不得转载,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算 ...

  2. php 随机在文章中添加锚文本_锚文本对网站SEO优化有什么帮助?

    对于优化人员来说,网站在做优化时都会在网站关键词或长尾词上添加锚文本,锚文本又称锚文本链接,是链接的一种形式.那么描文本的添加对网站优化都有什么好处呢?下面一起来了解一下. 一.锚文本为网站传递权重 ...

  3. edui 富文本编辑_富文本编辑器wangEditor添加本地上传视频功能

    最近做一个考试系统,编辑题目要用到富文本编辑,要求可以添加图片.视频和pdf.此前项目中用的都是wangEditor,使用的时候发现只可以上传本地图片,视频只能添加链接,找了其他插件,也没发现比较好用 ...

  4. 富文本_富文本原理了解一下?

    本文出自「掘金社区」,欢迎戳「阅读原文」链接和作者进行技术交流 ?? 缘起 最近产品想让我在富文本里加个旋转图片的功能,我一想?,就觉得事情并不简单,因为印象中好像没见过这种操作.果然,经过一番百度之 ...

  5. html加载富文本_富文本图片懒加载解决方案

    图片懒加载,作为性能优化的一部分,想必我们并不陌生. 在React.Vue项目中,我们都可以引入对应的NPM包处理图片懒加载,如 lazyload.react-lazyload.vue-lazyloa ...

  6. 网页导出pdf不完整_网页文本无法复制?学会这3个套路,一分钟帮你突破限制...

    我们都是资源的搬运工,平时需要一些资料都会在网上查找,有时候当我们找到一些想要的内容,却发现复制不了,不是要收费就是被限制. 遇到这种情况怎么办?也许大多数人都会选择放弃,或者对照着内容手动打字.今天 ...

  7. java公告栏js资源_可以文本显示的公告栏的js代码

    一个可以文本显示的公告栏,可以在多处使用,绝对不可错过! 脚本说明: 第一步:把如下代码加入head区域中 ="" !-- vari=0; =-1; =(); varHelpTex ...

  8. 崇高文本_崇高文本片段指南

    崇高文本 by Jimmy Zhang 吉米·张(Jimmy Zhang) 崇高文本片段指南 (A Guide to Sublime Text Snippets) I recently switche ...

  9. rpa文件怎么提取内容_怎么编辑pdf文件内容?有什么软件可以编辑pdf文件吗?

    怎么编辑pdf文件内容?我是2020年大学新生,选择学习的专业是财务管理.为了更快.更深入地了解更多专业知识,我上网查找.下载了很多相关资料.不过,从网上保存下来的资料文件大多是pdf格式的,想要编辑 ...

最新文章

  1. codesmith用access的mdb文件作数据源的模板引用
  2. Java 进程占用 VIRT 虚拟内存超高的问题研究
  3. Nginx SSI 设置
  4. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'test'
  5. python让函数抛出异常,是否有任何对象可以使str()函数在python中抛出错误或异常?...
  6. android listview mapview,RelativeLayout和并列ListView/MapView
  7. grafana授权公司内部邮箱登录 ldap配置
  8. JAVA分析命令:jps、jstack、jmap、jhat
  9. Computed property “value1“ was assigned to but it has no setter.
  10. 【运维理论】RAID级别简介
  11. 面试题38 数字在排序数组中出现的次数
  12. UAV运动学方面的约束
  13. TIR透镜的设计 Matlab,用于DLP投影系统的自由曲面TIR准直透镜设计
  14. 巨人综合音源优化版 – East West Quantum Leap Colossus Kontakt
  15. 网上购物系统问题陈述、词汇表与领域类图
  16. 【服务器数据恢复】EMC Isilon存储误删除的数据恢复案例
  17. 洛谷P4052 [JSOI2007]文本生成器(AC自动机)
  18. String类型的测量长度
  19. atsha204a加密ic01
  20. 练手小项目(1)——智能聊天机器人

热门文章

  1. MiniGUI——第一个程序helloworld
  2. 2003服务器u盘不显示不出来,U盘文件不显示三种解决方法
  3. 跳棋最少移动次数 java,跳棋
  4. Newt Scamander的恐惧
  5. 2021年初级会计职称《初级会计实务》考试真题
  6. R 两组样本t检验 wilcoxon检验、卡方、fisher精确检验
  7. 我国计算机系统安全保护等级的划分,规范《GB17859-1999-计算机信息系统安全保护等级划分准则》.pdf...
  8. 【网络--实验】华三防火墙命令行调试实例
  9. 音频信号的基波、谐波
  10. Excel —— 相对引用录制宏(附视频)