700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java pdf 富文本_富文本编辑器保存的html内容使用itextpdf转PDF文件(css提取 内容

java pdf 富文本_富文本编辑器保存的html内容使用itextpdf转PDF文件(css提取 内容

时间:2019-08-15 04:03:21

相关推荐

java pdf 富文本_富文本编辑器保存的html内容使用itextpdf转PDF文件(css提取 内容

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 = pile(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提取 内容重叠)问题解决...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。